阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Netty基本组件介绍

145次阅读
没有评论

共计 1031 个字符,预计需要花费 3 分钟才能阅读完成。

Netty 做为一款用于搭建高性能网络应用程序的高级框架,由以下几个主要构件组成:

一、Channel

Channel 是 java NIO 的一个基本构造,可以把 channel 看作是传入或者传出的数据载体,可以被打开或者关闭,连接或者断开连接。简单来说其实就是我们平常网络编程中经常使用的 socket 套接字对象。

 

二、EventLoop

EventLoop 定义了 Netty 的核心对象,用于处理 IO 事件,多线程模型、并发。EventLoop 及其相关的设计实现,我们这里不做深入了解。只需要暂时了解以下几点:

1、一个 EventLoopGroup 包含一个或者多个 EventLoop;

2、一个 EventLoop 在它的生命周期内只和一个 Thread 绑定;

3、所有有 EventLoop 处理的 I / O 事件都将在它专有的 Thread 上被处理;

4、一个 Channel 在它的生命周期内只注册于一个 EventLoop;

5、一个 EventLoop 可能会被分配给一个货多个 Channel;

其实我们可以简单的把 EventLoop 及其相关的实现 NioEventLoop、NioEventLoopGroup 等理解为 netty 针对我们网络编程时创建的多线程进行了封装和优化,构建了自己的线程模型。

三、ChannelHandler 和 ChannelPipeline

ChannelHandler 其实就是用于负责处理接收和发送数据的的业务逻辑,Netty 中可以注册多个 handler,以链式的方式进行处理,根据继承接口的不同,实现的顺序也不同。

1、ChannelInboundHandler:对接收的信息进行处理。一般用来执行解码、读取客户端数据、进行业务处理等。如 ByteToMessageDecoder;

2、ChannelOutboundHandler:对发送的信息进行处理,一般用来进行编码、发送报文到客户端。如 MessageToByteEncoder;

而 ChannelPipeline 为 ChannelHandler 链提供了容器。

四、ByteBuf

网络数据的操作归根到底是字节的操作,Netty 的 ByteBuf 做为一个强大高效的字节容器,提供了更加丰富的 API 用于字节的操作,同时保持了卓越的功能性和灵活性;

总结:

以上四个做为 Netty 的基本组件,可以理解为 Netty 把我们之前网络编程中使用到的各部分都进行了优化和高性能的封装,对比到实际的通信流程中,可以简单的用下图直观的表示

Netty 基本组件介绍

本章参考资料:《Netty 实战》

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计1031字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中