Netty 是目前使用网络编程的首选,很多的框架都是基于Netty进行开发的。
比如Spring5的WebFlux
Netty一共有3个主要部分组成:
1. Netty核心,传输服务层,协议支持层,以及高效的数据结构ByteBuffer
2.统一网络通信的API
3.事件驱动模型
Netty中又有5个核心概念
1.Channel 在Netty中不再对Socket本身进行操作,而是对Channel进行操作,每一个Channel都是非阻塞的,代表着一个链接,可以进行IO的写入/读取操作
2.ChannelFeature 获取当前Channel的状态,是否已经准备好,是否已经完成。也可以在ChannelFeature上增加一个回调,当操作完成后自动执行
3.Event&Handel 核心功能,事件可以找到入站和出站的数据流
4.Encode&Decode 主要是编解码,将数据通过ByteBuffer进行传输等
5.ChannelPiePeline 将一串向相同处理方式的事件挂在同一个ChannelPiePeline 上,这个我不太清楚理解的对不对。
Netty的模型目前有3种
1. Reactor的单线程模型。

单线程模型: 基于IO非阻塞以及IO复用,业务线程在对应的Channel中,Channel向Reactor进行注册事件,用户请求连接到Reactor线程,由Reactor进行【IO的处理以及事件线程的分发】,将消息数据分发到对应的Channel进行处理。
2. Reactor的多线程

Reactor的多线程模型在单线程模型的基础上实现了【IO隔离】,IO隔离是什么?
Reactor只负责进行数据的IO处理,然后将数据发向【工作线程池】,由工作线程池进行具体的分发操作
3。Reactor的主从模型
*我感觉哪里写的不对,求证后改一波

浙公网安备 33010602011771号