netty简介
netty是一个高性能、高可扩展性的异步事件驱动的网络应用程序框架,它极大地简化了TCP和UDP客户端和服务器开发等网络编程。
netty中的四个重要内容:
- Reactor线程模型:一种高性能的多线程程序设计思路。
- netty中自己定义的channel概念:增强版的通道概念。
- channelPipeline职责链设计模式:事件处理机制
- 内存管理:增强的byteBuf缓冲区
netty整体架构图
Netty线程模型
为了让NIO处理更好的利用多线程特性,netty实现了Reactor线程模型。
Reactor模型中四个核心概念:
- Resources(请求/任务)
- Synchronous Event Demultiplexer 同步事件复用器。
- Dispatcher 分配器
- Request Handler 请求处理器
EventLoopGroup初始化过程
两组EventLoopGroup(main&sub)处理不同的通道,不同的事件。
main处理服务端通道,sub处理客户端通道。
EventLoop的启动
bind绑定端口
Channel概念
小结:
解惑:
为什么内容偏重服务端开发,而不是客户端开发?
因为服务端要应对海量开发,难度大,而客户端仅仅是一个连接。
Reactor多线程的设计,是Netty高性能很重要的一个原因。