第 3 章 Netty 的组件和设计

  1. Channel:Socket ;EventLoop:控制流、多线程处理、并发;ChannelFuture:异步通知
    image.png
    • 一个EventLoopGroup包含一个或者多个 EventLoop
    • 一个EventLoop在它的生命周期内只和一个 Thread 绑定
    • 所有由EventLoop处理的 I/O 事件都将在它专有的 Thread上被处理
    • 一个 Channel 在它的生命周期内只注册于一个 EventLoop
    • 一个EventLoop可能会被分配给一个或多个Channel
  2. ChannelHandler充当了所有ChannelPipeline中处理入站和出站数据的应用程序逻辑的容器
  3. ChannelPipeline提供了ChannelHandler链的容器,并定义了用于在该链上传播入站和出战事件流的 API,当Channel被创建时,它会被自动地分配到专属的ChannelPipelineChannelHandlerContext 代表了ChannelHandlerChannelPipeline之间的绑定
  4. Netty 提供了抽象基类ChannelInboundHandlerAdapterChannelOutboundHandlerAdapter都简单的将事件传递给下一个ChannelHandler,只需重写感兴趣的事件方法
  5. 直接将数据写到Channel中将导致消息从ChannelPipeline的尾端开始流动;通过ChannelHandlerContext写出消息将导致消息从ChannelPipeline中的下一个ChannelHandler开始流动
  6. 客户端的引导类Bootstrap,服务端的引导类ServerBootstrap;其中Bootstrap只是用一个 EventLoopGroup,而ServerBootstrap会使用两个EventLoopGroup,一个只包含一个 ServerChannel代表服务器自身已绑定到某个本地端口的正在监听的套接字(接收请求),另一个将包含所有已创建的用来处理传入客户端连接的Channel(一个 Channel 绑定到一个 EventLoop)

你可能感兴趣的:(第 3 章 Netty 的组件和设计)