一,Netty入门篇
1.什么是Netty
Netty是由JBOSS提供的一个java开源框架,是一个高性能,高扩展性的异步事件驱动的网络应用程序框架,它极大地简化了TCP和UDP客户端和服务器开发等网络编程。
2.Netty的特性
3.Netty的整体结构
官方图片,包含三大块内容:
1、 支持 Socket 等多种传输方式;
2、 提供了多种协议的编解码实现;
3、 核心设计包含 事件处理模型、 API的使用、 ByteBuffer 的增强;
4.Netty的核心组件
- Channel Netty 中自己定义的 Channel ,增强版的通道概念
- EventLoop :由线程驱动,处理 Channel 的所有 I/O 事件
- ChannelPipeline :事件处理机制
- ChannelHandler :事件处理器
- ByteBuf :增强的 ByteBuf 缓冲区
- Bootstrap :启动器,引导 Netty 应用程序启动
二,Netty的线程模型
为了让NIO 处理,更好 的利用多线程特性, Netty 实现了 Reactor 线程模型。
Reactor模型中有四个核心概念:
- Resources 资源 请求 任务
- Synchronous Event Demultiplexer 同步事件复用器
- Dispatcher 分配器
- Request Handler 请求处理器
三, EventLoop详解
1.EventLoopGroup初始化过程
2.EventLopp的启动
EventLoop自身实现了 Executor 接口,当调用 executor 方法提交任务时,则判断是否启动,未启动则调用内置的 executor 创建新线程来触发 run 方法执行。
3.NioEventLoop的执行
NioEventLoop实现了父类的 run 方法,由父类调用,循环处理 NIO 的事件。
三,Channel详解
netty中的 C hannel 是一个抽象的概念,可以理解为对 JDK NIO Channel 的增强和拓展。增加了很多属性和方法,完整信息可以看代码注释,下面罗列几个常见的属性和方法: