netty学习--知识点整理

本文详细介绍了Netty框架中的关键概念,包括Channel、EventLoop、EventLoopGroup等,并阐述了这些组件之间的关系。同时,还介绍了ByteBuf的不同实现方式及其优缺点。

Netty中概念的理解

1)Channel:相当于一个Socket连接,类比java nio的SocketChannel;
2)EventLoop:反应堆线程,通过非阻塞方式执行I/O任务、定时任务等,类比java nio的Selector;I/O任务和定时任务都被抽象为事件,通过eventloop线程执行;
3)EventLoopGroup:反应堆线程组成的线程池,用于提升反应堆的处理能力及可用性;
4)ChannelFuture:采用Promise模式,异步通知I/O结果;
5)ChannelPipeline:一个channel中,用于处理事件的职责链,即一条完整的数据处理流程,包括输入、输出;
6)ChannelHandler:一条ChannelPipeline中的一个环节,可以只针对特定事件进行处理,或者仅对事件进行部分处理,如数据的编解码,以便于后续环节的处理;
7)ChannelInitializer:用于初始化一个Channel;
8)Bootstrap:用于引导和简化一个Channel的初始化过程;
9)ChannelGroup:用于对一组Channel进行分类和统一管理;

Netty中实体的关系

1)一个EventLoopGroup中包含一个或者多个EventLoop;
2)一个EventLoop在其生命周期内只和一个Thread绑定,且分配给该EventLoop的所有事件都在其绑定的Thread上处理;
3)一个Channel在其生命周期内只注册于一个EventLoop;
4)一个EventLoop可以用于处理一个或者多个Channel的事件;
5)一个EventLoopGroup可以被多个Channel所共享,通过Bootstrap单独为每一个Channel新建EventLoopGroup没有必要;

ChannelHandler的常用实现类

ByteBuf的实现方式

1)堆缓冲区:底层使用byte数组,数据直接缓冲在堆内存中;
优点:内存分配和释放效率高;
缺点:发送数据时,需要先从堆内存中拷贝数据到直接内存缓冲中;
2)直接缓冲区:使用直接内存块存放数据;
优点:发送数据时,零拷贝;
缺点:内存分配和释放比堆内存慢;
3)复合缓冲区:多个ByteBuf的组合,其中的ByteBuf即可以是堆缓冲区实现,又可以是直接缓冲区实现;

原文链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值