![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
微服务开发
文章平均质量分 83
NullPointerExcept
这个作者很懒,什么都没留下…
展开
-
Netty系列之Netty百万级推送服务设计要点
1. 背景1.1. 话题来源最近很多从事移动互联网和物联网开发的同学给我发邮件或者微博私信我,咨询推送服务相关的问题。问题五花八门,在帮助大家答疑解惑的过程中,我也对问题进行了总结,大概可以归纳为如下几类:Netty是否可以做推送服务器?如果使用Netty开发推送服务,一个服务器最多可以支撑多少个客户端?使用Netty开发推送服务遇到的各种技术问题。由于转载 2016-11-17 17:13:06 · 411 阅读 · 0 评论 -
Netty之ChannelOption
在用netty作为底层网络通信的时候关于ChannelOption的参数让我一直模糊不清楚,于是去看一下linux网络编程,发现ChannelOption的各种属性在套接字选项中都有对应 下面简单的总结一下ChannelOption的含义已及使用的场景 1、ChannelOption.SO_BACKLOG ChannelOption.SO_BACKLOG对应的是tcp/ip协议liste...转载 2018-06-25 15:46:24 · 252 阅读 · 0 评论 -
netty的http client连接池设计
使用netty作为http的客户端,pool又该如何进行设计。本文将会进行详细的描述。1 复用类型的选型1.1 channel 复用多个请求可以共用一个channel模型如下: 特点: 1:callback队列为回调队列。 不同的callback通过一个全局的id进行标识。发送的时候会把该id发到服务端,服务端在回复的时候必须把该id再返回到客户...转载 2018-06-25 17:16:59 · 2447 阅读 · 0 评论 -
基于Netty4的HttpServer和HttpClient的简单实现
Netty的主页:http://netty.io/index.html使用的Netty的版本:netty-4.0.23.Final.tar.bz2 ‐ 15-Aug-2014 (Stable, Recommended)Http 消息格式:Http request:Method path-to-resource HTTPVersion-numberHeader-name-1: value1Hea...转载 2018-06-26 11:36:54 · 198 阅读 · 0 评论 -
异步httpclient---HttpAsyncClient的使用
这两天研究了一下异步的httpclient ---- httpAsyncClient原来使用httpclient都是同步的,如果项目中有大量的httpclient的话,可能会造成阻塞,如果使用异步请求的话可以避免这些问题可以用在调用第三方接口或者不需要知道请求返回结果的场景下于是写了一个工具类来封装了同步异步httpclientgithub地址:https://github.com/a638817...转载 2018-06-26 14:25:58 · 4242 阅读 · 0 评论 -
Netty,HttpAsyncClient和阻塞I/O(Httpclient)比较
客户端比较Netty 4.0.8(无连接池)Apache HttpAsyncClient 4.0-beta4(启动连接池)Apache HttpClient 4.3(启用连接池)测试设置在服务器端,在Amazon EC2云中设置了一组服务器。它们都服务相对静态的内容,其中唯一的变化是可以从客户端的查询参数控制的有效载荷的大小。每个服务器运行300个线程的Tomcat应用程序。客户端在我的笔记本电脑...转载 2018-06-27 16:45:55 · 1927 阅读 · 0 评论 -
HttpClient 4.3连接池参数配置及源码解读
目前所在公司使用HttpClient 4.3.3版本发送Rest请求,调用接口。最近出现了调用查询接口服务慢的生产问题,在排查整个调用链可能存在的问题时(从客户端发起Http请求->ESB->服务端处理请求,查询数据并返回),发现原本的HttpClient连接池中的一些参数配置可能存在问题,如defaultMaxPerRoute、一些timeout时间的设置等,虽不能确定是由于此连接...转载 2018-07-03 15:49:32 · 394 阅读 · 0 评论 -
HttpClient 4.3连接池参数配置及源码解读
目前所在公司使用HttpClient 4.3.3版本发送Rest请求,调用接口。最近出现了调用查询接口服务慢的生产问题,在排查整个调用链可能存在的问题时(从客户端发起Http请求->ESB->服务端处理请求,查询数据并返回),发现原本的HttpClient连接池中的一些参数配置可能存在问题,如defaultMaxPerRoute、一些timeout时间的设置等,虽不能确定是由于此连接...转载 2018-07-03 15:49:32 · 361 阅读 · 0 评论 -
TCP 三次握手原理,你真的理解吗?
问题描述场景:JAVA的client和server,使用socket通信。server使用NIO。1.间歇性得出现client向server建立连接三次握手已经完成,但server的selector没有响应到这连接。2.出问题的时间点,会同时有很多连接出现这个问题。3.selector没有销毁重建,一直用的都是一个。4.程序刚启动的时候必会出现一些,之后会间歇性出现。分析问题正常TCP建连接三次握...转载 2018-07-05 14:07:29 · 612 阅读 · 0 评论 -
高并发解决方案--负载均衡
1,什么是负载均衡?当一台服务器的性能达到极限时,我们可以使用服务器集群来提高网站的整体性能。那么,在服务器集群中,需要有一台服务器充当调度者的角色,用户的所有请求都会首先由它接收,调度者再根据每台服务器的负载情况将请求分配给某一台后端服务器去处理。那么在这个过程中,调度者如何合理分配任务,保证所有后端服务器都将性能充分发挥,从而保持服务器集群的整体性能最优,这就是负载均衡问题。下面详细介绍负载均...转载 2018-07-05 14:08:07 · 737 阅读 · 0 评论 -
Netty笔记4-如何实现长连接
一个简单的长连接demo分为以下几个步骤:创建连接(Channel)发心跳包发消息,并通知其他用户一段时间没收到心跳包或者用户主动关闭之后关闭连接 看似简单的步骤,里面有两个技术难点:如何保存已创建的Channel这里我们是将Channel放在一个Map中,以Channel.hashCode()作为key其实这样做有一个劣势,就是不适合水平扩展,每个机器都有一个连接数的上线,如果需要实现多用...转载 2018-06-25 11:30:50 · 626 阅读 · 0 评论 -
Netty入门教程3——Decoder和Encoder
什么是Decoder和Encoder 在学习Decoder和Encoder之前,首先要了解他们在具体是个什么东西。在Netty里面,有四个核心概念,这个在第一篇文章提到的,他们的分别是:Channel,一个客户端与服务器通信的通道ChannelHandler,业务逻辑处理器,分为ChannelInboundHandler和ChannelOutboundHandlerChannelInboun...转载 2018-06-25 11:26:36 · 379 阅读 · 0 评论 -
使用JAVA操作netty框架
之前使用过MINA框架,感觉效率非常好,使用长连接可以支持10万次以上的并发。 今天尝试使用了Netty框架,感觉使用上也非常方便,具体效率问题,在接下来的博客会详细解读: NioServerSocketChannelFactory创建服务端的ServerSocketChannel,采用多线程执行非阻塞IO,和Mina的设计模式一样,都采用了Reactor模式。其中bossEx转载 2016-12-02 15:34:52 · 731 阅读 · 0 评论 -
gRPC线程模型分析
1. RPC线程模型1.1. BIO线程模型在JDK 1.4推出Java NIO之前,基于Java的所有Socket通信都采用了同步阻塞模式(BIO),这种一请求一应答的通信模型简化了上层的应用开发,但是在性能和可靠性方面却存在着巨大的瓶颈。因此,在很长一段时间里,大型的应用服务器都采用C或者C++语言开发,因为它们可以直接使用操作系统提供的异步I/O或者AIO能力。当并发访问量增大、响应时间延迟...转载 2018-05-25 14:37:41 · 9809 阅读 · 4 评论 -
consul怎么在windows下安装
Consul 是一个支持多数据中心分布式高可用的服务发现和配置共享的服务软件, 由 HashiCorp 公司用 Go 语言开发, 基于 Mozilla Public License 2.0 的协议进行开源。Consul 支持健康检查, 并允许 HTTP 和 DNS 协议调用 API 存储键值对。命令行超级好用的虚拟机管理软件 vgrant 也是 HashiCorp 公司开发的产品。一致性协议采用 ...转载 2018-06-21 16:41:58 · 464 阅读 · 0 评论 -
Consul 入门指南
一、安装 Consul Consul 下载地址:https://www.consul.io/downloads.html,下载后解压就是一个可执行的二进制文件consul,配置好环境变量,检查 consul 是否可用:[root@localhost ~]# consul Usage: consul [--version] [--help] <command> [<args&g...转载 2018-06-21 17:06:38 · 2189 阅读 · 1 评论 -
服务发现 - consul 的介绍、部署和使用
什么是服务发现相关源码: spring cloud demo微服务的框架体系中,服务发现是不能不提的一个模块。我相信了解或者熟悉微服务的童鞋应该都知道它的重要性。这里我只是简单的提一下,毕竟这不是我们的重点。我们看下面的一幅图片:图中,客户端的一个接口,需要调用服务A-N。客户端必须要知道所有服务的网络位置的,以往的做法是配置是配置文件中,或者有些配置在数据库中。这里就带出几个问题:需要配置N个服...转载 2018-06-21 17:25:11 · 3484 阅读 · 0 评论 -
supervisor 从安装到使用
一、安装源码安装先下载最新的supervisor安装包:https://pypi.python.org/pypi/supervisor , 如:cd /usr/local/srcwget https://pypi.python.org/packages/7b/17/88adf8cb25f80e2bc0d18e094fcd7ab300632ea00b601cbbbb84c2419eae/super...转载 2018-06-21 18:07:28 · 2313 阅读 · 0 评论 -
Supervisor安装与配置(Linux/Unix进程管理工具)
Supervisor(http://supervisord.org/)是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,...转载 2018-06-21 18:08:33 · 180 阅读 · 0 评论 -
Netty入门教程——认识Netty
什么是Netty?Netty 是一个利用 Java 的高级网络的能力,隐藏其背后的复杂性而提供一个易于使用的 API 的客户端/服务器框架。Netty 是一个广泛使用的 Java 网络编程框架(Netty 在 2011 年获得了Duke's Choice Award,见https://www.java.net/dukeschoice/2011)。它活跃和成长于用户社区,像大型公司 Facebook...转载 2018-06-25 11:25:15 · 183 阅读 · 0 评论 -
Netty入门教程2——动手搭建HttpServer
认识Http请求在动手写Netty框架之前,我们先要了解http请求的组成,如下图:HTTP request component partsHTTP Request 第一部分是包含的头信息HttpContent 里面包含的是数据,可以后续有多个 HttpContent 部分LastHttpContent 标记是 HTTP request 的结束,同时可能包含头的尾部信息完整的 HTTP reque...转载 2018-06-25 11:26:01 · 167 阅读 · 0 评论