β

Netty基本组件介绍

Harries Blog™ 49 阅读

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和ChannelP ip eline

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

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

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

而ChannelPipeline为ChannelHandler链提供了容器。

四、ByteBuf

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

总结

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

Netty基本组件介绍

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

Linux公社的RSS地址 : https ://www. linux id c.com/rssFeed.aspx

本文永久更新链接地址: http s://www.linuxidc.com/Linux/2018-10/154815.htm

原文

https://www.linuxidc.com/Linux/2018-10/154815.htm

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。 PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处: Harries Blog™ » Netty基本组件介绍

作者:Harries Blog™
追心中的海,逐世界的梦
原文地址:Netty基本组件介绍, 感谢原作者分享。