Netty源码解析
文章平均质量分 93
Netty源码解析
业精勤而荒嬉
知其然知其所以然
展开
-
Netty源码分析-Pipeline
pipeline可以看作是一个拦截流经Channel的入站和出站事件的ChannelHandler实例链。前面分析的NioServerSocketChannel与NioSocketChannel在创建时都会创建自己的pipeline在AbstractChannel中。 protected AbstractChannel(Channel parent) { this.par...原创 2018-12-28 11:06:01 · 615 阅读 · 0 评论 -
Netty源码解析-客户端连接
Netty版本4.1.22前面在分析NioEventLoop,重点在run方法,将其分为三部分来讲解:select,processSelectedKeys,runAllTasks。在第二部分里实际处理SelectionKey的操作processSelectedKey并没有分析,这篇文章讲连接,其切入点就在该方法。在第一篇文章分析服务端启动时,ServerBootStrap.bind创建了Nio...原创 2018-12-28 11:05:45 · 264 阅读 · 0 评论 -
Netty源码解析-NioEventLoop(二)
Netty源码4.1.22继前一篇,下面该分析processSelectedKeys()processSelectedKeys()处理IO事件 private void processSelectedKeys() { if (selectedKeys != null) { processSelectedKeysOptimized(); ...原创 2018-12-17 20:50:29 · 220 阅读 · 0 评论 -
Netty源码解析-NioEventLoop
一:NioEventLoop的创建NioEventLoop是由NioEventLoopGroup管理,所以创建操作要去NioEventLoopGroup找,如客户端代码中会先创建NioEventLoopGroup对象,从其构造函数入手,如你调用其无参构造器,一步步往下最终来到 public NioEventLoopGroup(int nThreads, Executor executor...原创 2018-12-17 20:50:10 · 513 阅读 · 0 评论 -
EventLoop和线程模型
这是《Netty实战》,《Netty权威指南》的读书笔记。线程模型确定了代码的执行方式,所以理解所采用的并发模型的影响很重要。线程池缓存和重用 Thread 极大地提高了性能,但它并不能消除由上下文切换所带来的开销,随着线程数量的增加,高负载下情况会变得越来越糟。接下来看看Netty是如何处理的。EventLoop 接口运行任务来处理在连接的生命周期内发生的事件是任何网络框架的基本功能。与...原创 2019-04-13 01:51:25 · 317 阅读 · 0 评论 -
Reactor模式与Netty
在netty的线程模型中,bossGroup只负责请求的转发,workerGroup是具体的数据处理,其实netty使用的是Reactor(响应器)的设计模式。一篇文章对这种模式做了非常细致的介绍,《Scalable IO in Java》 ,这篇文章的作者是 Doug Lea!!!大多数的网络服务都是下面的流程:读取请求解码业务逻辑处理编码响应发送响应典型的设计实现如下:...原创 2019-04-12 12:33:41 · 751 阅读 · 0 评论 -
Netty源码解析一服务端启动
Netty的版本是4.1.22我们从ServerBootstrap的bind()方法开始跟踪Netty服务端的启动过程。大致分为以下四步:创建服务器Channel初始化服务器channel注册selector端口绑定一:创建服务器ChannelAbstractBootStrap public ChannelFuture bind(String inetHost, int ...原创 2018-12-12 21:46:57 · 262 阅读 · 0 评论