初识Netty系列——Netty组件

230 阅读2分钟

这是我参与8月更文挑战的第3天,活动详情查看:8月更文挑战

通过上一节对# Reactor模式的简单了解,我们的刀已经磨好了,虽然还不太锋利,但刀有了,接下来就是分析要砍的柴的,来了解下Netty的结构

Netty都有哪些组件

Channel

Channel 是java NIO的一个基本构造,近似传入或传入的数据载体

操作

Channel可以被打开或者关闭,连接或者断开连接

- 常用的Channel

EmbeddedChannel

EmbeddedChannel是netty专门改进针对ChannelHandler的单元测试而提供的。

-- LocalServerChannel

LcoalChannel是Netty提供的用来在同一个JVM内部实现client和server之间通信的transport。

NioDatagramChannel

Java NIO中的DatagramChannel是一个能收发UDP包的通道。因为UDP是无连接的网络协议,所以不能像其它通道那样读取和写入。它发送和接收的是数据包。

NioSctpChannel

异步的客户端(Stream Control Transmission Protocol,流控制传输协议)连接。

NioSocketChannel

异步非阻塞的客户端TCP Socket连接。

EventLoop

EventLoop定义了Netty的核心对象,用于处理IO事件,多线程模型、并发。

功能:

  • 一个EventLoopGroup包含一个或者多个EventLoop;
  • 一个EventLoop在它的生命周期内只和一个Thread绑定
  • 所有有EventLoop处理的I/O事件都将在它专有的Thread上被处理
  • 一个Channel在它的生命周期内只注册于一个EventLoop
  • 一个EventLoop可能会被分配给一个货多个Channel

ChannelHandler

负责处理接收和发送数据的业务逻辑

ChannelPipeline

Netty中可以注册多个handler,以链式的方式进行处理,而ChannelPipeline为ChannelHandler链提供了容器

Future

Netty中所有的I/O操作都是异步的,那么也就是说没有办法立即收到操作对应的反馈,而Future则能让我们主动去获取异步操作的反馈结果

ChannelFuture

Netty 提供了ChannelFuture,用于在执行异步操作的时候使用。每个Netty的出站I/O操作都会返回一个ChannelFuture。ChannelFuture能够注册一个或者多个ChannelFutureListener 实例。监听器的回调方法operationComplete(),将会在对应的操作完成时被调用。

Bootstrap or ServerBootstrap

Bootstrap和ServerBootstrap是启动配置类

  • ServerBootStrap是Netty服务端启动配置类
  • BootStrap是Netty客户端启动配置类。