Netty基本组件介绍

栏目: Java · 发布时间: 5年前

内容简介: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基本组件介绍

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

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

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


以上所述就是小编给大家介绍的《Netty基本组件介绍》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

信息简史

信息简史

[美] 詹姆斯·格雷克 / 高博 / 人民邮电出版社 / 2013-10 / 69.00元

人类与信息遭遇的历史由来已久。詹姆斯•格雷克笔下的这段历史出人意料地从非洲的鼓语讲起(第1章)。非洲土著部落在尚未直接跨越到移动电话之前,曾用鼓声来传递讯息,但他们是如何做到的呢?后续章节进而讲述了这段历史上几个影响深远的关键事件,包括文字的发明(第2章)、罗伯特•考德里的第一本英语词典(第3章)、查尔斯•巴贝奇的差分机与爱达•拜伦的程序(第4章)、沙普兄弟的信号塔与摩尔斯电码(第5章)。 ......一起来看看 《信息简史》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

SHA 加密
SHA 加密

SHA 加密工具