1. Netty Programming
1.1 Netty Nio工作原理图
Netty 作为异步事件驱动的网络,高性能之处主要来自于其 I/O 模型和线程处理模型,前者决定如何收发数据,后者决定如何处理数据。
Netty的工作原理图
- 服务启动后 ServerChannel 负责监听连接请求,它绑定到 EventLoopGroup,EventLoopGroup 包含多个 EventLoop , 每个EventLoop 与 单个线程一一绑定。
- ServerChannel 接收到新的连接请求后,会创建 子Channel 并绑定到与之对应的 EventLoopGroup。
※ Server EventLoopGroup 和 Child Event Loop Group 可以是同一个 EventLoopGroup,下图示例中 Server 和 Child 各自拥有自己的 EventLoopGroup 。
※ 一个 EventLoop 可以包含多个 Channel,Selector 负责轮询 所有 Channel 判断是否存在就绪操作,如果存在已就绪操作则触发 pipeline 进行处理,之后从 TaskQueue 获取并执行任务。
1.2 NioEventLoop和NioEventLoopGroup
通过了解这两个类的类图再结合Netty Reactor的工作流程图可以很好的了解Netty的实现原理。关于Netty的详细介绍不做展开,可参考 参考 部分的文章!