核心概念
Channel
管道,其是对Socket的封装,其包含了一组API,大大简化了直接与Socket进行操作的复杂性
EventLoopGroup
EventLoopGroup是一个EventLoop池,包含很多的EventLoop
- Netty 为每个Channel分配一个EventLoop,用于处理用户连接请求、对用户请求的处理等所有事件。EventLoop本身只是一个线程驱动,在其生命周期中坠毁绑定一个线程,让该线程处理一个Channel的所有IO事件
- 一个Channel一旦与一个EventLoop想绑定,那么在Channel的整个生命周期内是不能改变的。一个EventLoop可以与多个Channel绑定。即Channel与EventLoop的关系是n:1,而EventLoop与线程的关系是1:1
ServerBootStrap
- 用于配置整个Netty代码,将各个组件关联起来。服务端使用的是ServerBootStrap,而客户端使用的则是BootStrap。
ChannelHandler与ChannelPipeline
- ChannelHandler是对Channel中数据的处理器。这些处理器可以是系统本身定义好的编解码器,也可以是用户自定义的。这些处理器会被统一添加到一个ChannelPipeline的对象中。然后按照添加的顺序对Channel中的数据进行依次处理
ChannelFuture
- Netty中所有的IO操作都是异步的,即操作不会立即得到返回结果。所以Netty中定义了一个ChannelFuture对象作为整个异步操作的”代言人“,表示异步操作本身。如果想获取到该异步操作的返回值,可以通过该异步操作对象的addListener()方法为该异步操作添加监听器,为其注册回调。当结果出来后马上调用执行。
- Netty的异步编程模型都是建立在Future与回调概念之上的。