netty源码分析系列
文章平均质量分 91
奋斗的小面包
每天进步一点点,N天之后你会发现你征服了一座大山!
展开
-
第六章 Netty深入剖析之Netty编码
上一章节我们分析了netty的ByteToMessageDecoder,本章节我们分析netty的编码功能,其核心功能封装在父类MessageToByteEncoder中,本章节我们以案例驱动,下面为本章功能代码已经列出,我们已经学习过了netty的事件传播机制,故知道ChannelInboundHandler的调用顺序是从下到上,故先调用BizHandler再调用Encoder.BizHandler的writeAndFlush()方法,这里就是我们本章故事的起点。//我们要编码的对象public原创 2021-01-21 23:41:18 · 383 阅读 · 2 评论 -
第五章 Netty深入剖析之Netty解码
。在第四章中为止我们基本了解了netty的基本原理,但是到我们实际的业务场景之间还有一部分内容需要我们深入讨论一下,就是netty解码和编码器。在本讲中我们以ByteToMessageDecoder为切入点,展开一系列解码器的讨论。为呼应上下文我们有必要说一下,当客户端有消息发送过来后,我们eventLoop监听到事件后会触发读事件,进而调用pipeline 链中的 channelRead()回调函数,这也是我们本讲的入口函数。接下来我们就从ByteToMessageDecoder类的channelRe原创 2021-01-21 18:44:33 · 276 阅读 · 2 评论 -
第四章 Netty深入剖析之pipeline及事件传播机制
通过前面的章节我们可能注意到,我们有些细节没有将上下文调用关系,就直接看核心代码了,原因就是没有讲解netty pipeline的事件传播机制导致的,等学完本讲,我相信小伙伴们已经有能力自己试着理解之前缺失的内容了。目录pipeline的初始化过程添加channelHandler 和删除 channelHandlerinBound事件的传播outBound事件的传播异常的传播总结在讲解pipeline的事件传播机制之前我们先来看一下pipeline的初始化过程p.原创 2021-01-13 23:48:56 · 689 阅读 · 2 评论 -
第三章 Netty深入剖析之netty客户端新连接接入
我们从之前的篇文章已经学习到了服务器端在NIOEventLoop中是如何处理io事件的,我们本讲的开始也是这个地方,就是当客户端新连接接入后具体的执行流程,好话不多少我们先粘贴出我们代码分析的上下文NioEventLoop的run方法体的processSelectedKey()方法,这是我们本章故事的起点,就是当bossgroupEventLoop监听到OP_ACCEPT事件后的一系列步骤。private void processSelectedKey(SelectionKey k, Abstract原创 2021-01-13 12:35:32 · 470 阅读 · 3 评论 -
第二章 Netty深入剖析之NioEventLoop
继上一话中我们引申出来的NIOEventLoop,现在我们讲解代码实现,本话内容如下目录ThreadPerTaskExecutor创建线程选择器NioEventLoop的启动NioEventLoop执行检测IO事件处理IO事件reactor线程任务的执行ThreadPerTaskExecutor我们从NioEventLoopGroup的构造函数入手,进行分析首先构造一个执行器,并使用一个特定的线程工厂创建线程,我们去newDefaultThreadFactory方法中原创 2021-01-08 23:08:10 · 458 阅读 · 3 评论 -
第一章 Netty深入剖析之Netty服务端启动
最近一段时间在学习netty,但是不知道原理用起来总是觉得很懵逼,现在一系列的文章都是在大咖的讲解下结合我自己的理解总结出的一系列分析。汇总下来,有两个目的,一个目的是方便自己日后回顾快速复习,一是希望能对其他小伙伴产生帮助,如果是这样的话,也是级感欣慰,话不多说我们步入正题。今天这一话的基本目录如下:目录服务端channel的创建服务端channel 的初始化channel注册到selector服务端口的绑定我们建立在一个基本服务端代码上做分析,代码如下:public .原创 2021-01-08 15:00:52 · 1656 阅读 · 3 评论