内容简介:Netty做为一款用于搭建高性能网络应用程序的高级框架,由以下几个主要构件组成:一、ChannelChannel 是java NIO的一个基本构造,可以把channel看作是传入或者传出的数据载体,可以被打开或者关闭,连接或者断开连接。简单来说其实就是我们平常网络编程中经常使用的socket套接字对象。
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实战》
Linux公社的RSS地址 : https://www.linuxidc.com/rssFeed.aspx
本文永久更新链接地址: https://www.linuxidc.com/Linux/2018-10/154815.htm
以上所述就是小编给大家介绍的《Netty基本组件介绍》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- Khala路由组件介绍与使用
- 深度介绍:???? 你听说过原生 HTML 组件吗?
- Docker组件介绍(一):runc和containerd
- openstack中统一认证组件keystoneauth介绍及使用
- Google Jetpack 新组件 CameraX 介绍与实践
- Windows Notification Facility (WNF)组件的详细介绍
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Programming Python
Mark Lutz / O'Reilly Media / 2006-8-30 / USD 59.99
Already the industry standard for Python users, "Programming Python" from O'Reilly just got even better. This third edition has been updated to reflect current best practices and the abundance of chan......一起来看看 《Programming Python》 这本书的介绍吧!