netty基本组件介绍

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

1、Channel编程

Channel 是java NIO的一个基本构造,能够把channel看做是传入或者传出的数据载体,能够被打开或者关闭,链接或者断开链接。简单来讲其实就是咱们日常网络编程中常常使用的socket套接字对象。微信

 

2、EventLoop网络

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

一、一个EventLoopGroup包含一个或者多个EventLoop;并发

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

三、全部有EventLoop处理的I/O事件都将在它专有的Thread上被处理;socket

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

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

其实咱们能够简单的把EventLoop及其相关的实现NioEventLoop、NioEventLoopGroup等理解为netty针对咱们网络编程时建立的多线程进行了封装和优化,构建了本身的线程模型。

 

3、ChannelHandler和ChannelPipeline

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

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

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

而ChannelPipeline为ChannelHandler链提供了容器。

 

4、ByteBuf

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

 

总结:

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

 

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

关注微信公众号,查看更多技术文章。

相关文章
相关标签/搜索