前面《Netty服务端启动流程分析》这篇文章主要介绍了Netty服务端的启动过程,那么这里有个问题:启动服务端之后,有新的连接向服务端发起请求,服务端是如何接收并处理这些连接请求的?带着这个问题我将结合netty源码分析Netty服务端接收连接的过程。
这篇文章我将主要讲解一下几个部分:
- 1、netty如何接收新的请求
- 2、netty如何给新的请求分配reactor线程
- 3、netty如何给每个新连接天剑ChannelHandler
前面《Netty服务端启动流程分析》这篇文章主要介绍了Netty服务端的启动过程,那么这里有个问题:启动服务端之后,有新的连接向服务端发起请求,服务端是如何接收并处理这些连接请求的?带着这个问题我将结合netty源码分析Netty服务端接收连接的过程。
这篇文章我将主要讲解一下几个部分:
netty在服务端端口绑定和新连接建立的过程中会建立相应的channel,而与channel的动作密切相关的是pipeline这个概念,pipeline像是可以看作是一条流水线,原始的原料(字节流)进来,经过加工,最后输出,在前面的文章《Netty服务端启动流程分析》中已经讲到在创建实例化channel的时候,会初始化它的各种属性,其中就包括pipline
,因此这篇文章将从pipline初始化为入口点来分析pipline的运作流程。
这篇文章主要分析Netty客户端连接服务端的过程,并结合Netty框架的源码,在Netty源码中我们看一下连接服务端的代码:
1 | // Configure the client. |
上面的代码中这句ChannelFuture f = b.connect(HOST, PORT).sync();
才是发起连接,这句之前的代码是设置连接的一些属性,这里不详细讲解这个属性,这篇文章的核心是关于连接过程。
从Java 1.5开始,JDK就提供了Callable和Future,通过它们可以在任务异步执行完毕之后获取任务的执行结果。
Netty扩展了JDK中的Future机制,下面我们来看一张Netty中Future和Promise类关系图:
Update your browser to view this website correctly. Update my browser now