
Netty篇
Netty源码
东方明珠脚下的流浪猫
犹豫就会败北,果断就会白给
展开
-
Dubbo篇:基于Netty实现Dubbo协议编解码源码分析
Dubbo协议设计参考了TCP/IP协议,包括协议头和协议体两部分。16字节报文头主要携带了魔法数(0xdabb,用于分割两个不同请求),以及当前请求报文是否是Request、Response、心跳和事件的信息,请求时也会携带当前报文体内序列化协议编号,另外还有请求状态、请求唯一表示和报文体长度。...原创 2020-07-26 18:03:15 · 1123 阅读 · 0 评论 -
Netty篇:异步调用之Future与Promise源码分析
Netty继承和扩展了JDK Future系列异步回调的API,对原有的接口进行了增强,是Netty异步任务能够以非阻塞的方式处理回调结果,同时引入了一个新接口GenericFutureListener来封装异步非阻塞回调,有一个需要自己实现的回调方法operationComplete,异步任务执行完后,会回调此方法。原创 2020-07-12 03:13:21 · 373 阅读 · 0 评论 -
Netty篇:ChannelPipeline与ChannelHandler源码分析
每个Channel都会维护一个ChannelPipeline,而ChannelPipeline其实是包含头尾指针的双向链表,里边的的每个节点都是由ChannelHandler封装成的ChannelHandlerContext上下文,ChannelHandlerContext中除了封装ChannelHandler还包含了一些所关联的组件实例。原创 2020-07-08 21:43:44 · 399 阅读 · 0 评论 -
Netty篇:Unsafe类I/O事件处理及NioSocketChannel注册流程源码分析
NioEventLoop中重写的run方法对OP_ACCEPT、OP_CONNECT、OP_READ、OP_WRITE 四种事件处理的源码分析原创 2020-07-06 01:15:04 · 464 阅读 · 0 评论 -
Netty篇:NioServerSocketChannel启动注册流程源码分析
io.netty.channel.Channel是Netty网络操作抽象层,聚合了一组功能,包括但不限于网路的读写,客户端发起连接,主动关闭连接,链路关闭,获取通信双方的网络地址等。原创 2020-07-01 23:10:06 · 583 阅读 · 0 评论 -
Netty篇:Reactor线程模型和NioEventLoop,NioEventLoopGroup源码分析
Reactor线程模型简单描述,NioEventLoop,NioEventLoopGroup源码简单分析原创 2020-06-24 15:22:25 · 395 阅读 · 0 评论 -
Netty篇:ByteBuf之内存池源码分析
Netty的内存池的实现有些复杂,使用了大量的位运算,晦涩难懂,不过万能的博客上好多大神已经介绍的非常详细,本文根据自己的理解顺一下思路原创 2020-06-10 22:47:32 · 554 阅读 · 0 评论 -
Netty篇:ByteBuf之堆外内存与回收策略源码分析(非池化)
上文描述过,ByteBuf根据内存分可以分为堆内存和堆外内存实现,此处以非池化实现介绍,两个重要子类是UnpooledHeapByteBuf和UnpooledDirectByteBuf,因为堆外内存和堆内存除了内存分配之外,其他实现十分相似,先简单描述下堆内存实现,然后重点分析堆外内存的分配及回收策略原创 2020-05-26 10:31:27 · 1786 阅读 · 2 评论 -
Netty篇:ByteBuf部分源码分析
缓冲区(Buffer) 缓冲区(Buffer)就是在内存中预留指定大小的存储空间用来对输入/输出(I/O)的数据作临时存储,这部分预留的内存空间就叫做缓冲区: 使用缓冲区可以减少实际的物理读写次数,而且缓冲区在创建时就被分配内存,这块内存区域一直被重用,可以减少动态分配和回收...原创 2020-05-10 23:11:20 · 293 阅读 · 0 评论 -
Netty篇:拆包与粘包
TCP粘包/拆包问题描述 TCP是个“流”协议,所谓流,就是没有界限的一串数据。一个业务上完整的包可能会被TCP拆分成过个包进行发送,也有可能把多个小的包封装成一个大的数据包发送,这就是所谓的TCP粘包和拆包问题。解决策略 (1)消息定长,每个报文大小固定,不够则空位补齐(2)在包尾增加回车换...原创 2020-04-28 13:51:34 · 215 阅读 · 0 评论