Netty技术要点

原创
2021/02/07 20:13
阅读数 220
 
Netty相关的要点
 
一个EventLoopGroup包含一个或者多个EventLoop;
一个EventLoop在它的生命周期内只和一个Thread绑定;
所有由EventLoop处理的IO事件都将在它专有Thread上被处理;
一个Channel在它的生命周期内只注册于一个EventLoop;
一个EventLoop可能会被分配给一个或多个Channel;
在以上的设计中,一个给定Channel的IO操作都是由相同的Thread执行的,实际上消除了对于同步的需要。
 
每一个新创建的Channel都将会被分配一个新的ChannelPipline。这项关联是永久性的;
Channel既不能附加另外一个ChannelPipline,也不能分离其当前的。
 
尽可能地重用EventLoop,以减少线程创建的开销。
 
Netty的Channel实现是线程安全的,因此可以存储一个到Channel的引用,并且每当需要向远程节点写数据时,都可以使用他,即使当时多线程都在使用它。
 
ByteBuf类是Netty的数据容器,所有的网络通信都涉及字节序列的移动。
ByteBuf维护两个不同的索引,一个用于读取readerIndex,一个用于写入writerIndex。
 
从ByteBuf读取时,readerIndex会被递增已经读取的字节数。写入ByteBuf时,writerIndex也会被递增。
当readerIndex和writerIndex的值相同时,表示可读的数据已经读完。
以read和write开头的方法,将会推进对应的索引位置,get set开头的方法不会。
展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部