标签:依次 发送 byte nbsp pre 倒序 节点 地方 遍历
                                                  I/O Request
                                              via Channel or
                                          ChannelHandlerContext
                                                        |
    +---------------------------------------------------+---------------+
    |                           ChannelPipeline         |               |
    |                                                  \|/              |
    |    +---------------------+            +-----------+----------+    |
    |    | Inbound Handler  N  |            | Outbound Handler  1  |    |
    |    +----------+----------+            +-----------+----------+    |
    |              /|\                                  |               |
    |               |                                  \|/              |
    |    +----------+----------+            +-----------+----------+    |
    |    | Inbound Handler N-1 |            | Outbound Handler  2  |    |
    |    +----------+----------+            +-----------+----------+    |
    |              /|\                                  .               |
    |               .                                   .               |
    | ChannelHandlerContext.fireIN_EVT() ChannelHandlerContext.OUT_EVT()|
    |        [ method call]                       [method call]         |
    |               .                                   .               |
    |               .                                  \|/              |
    |    +----------+----------+            +-----------+----------+    |
    |    | Inbound Handler  2  |            | Outbound Handler M-1 |    |
    |    +----------+----------+            +-----------+----------+    |
    |              /|\                                  |               |
    |               |                                  \|/              |
    |    +----------+----------+            +-----------+----------+    |
    |    | Inbound Handler  1  |            | Outbound Handler  M  |    |
    |    +----------+----------+            +-----------+----------+    |
    |              /|\                                  |               |
    +---------------+-----------------------------------+---------------+
                    |                                  \|/
    +---------------+-----------------------------------+---------------+
    |               |                                   |               |
    |       [ Socket.read() ]                    [ Socket.write() ]     |
    |                                                                   |
    |  Netty Internal I/O Threads (Transport Implementation)            |
    +-------------------------------------------------------------------+
  入站事件由入站处理程序按自下而上的方向进行处理,如图中左侧所示。入站处理程序通常处理图底部的IO线程生成的入站数据。通常通过实际的输入操作(例如{@link SocketChannelread(ByteBuffer)})从远程对等方读取入站数据。如果入站事件超出了顶部入站处理程序的范围,则将其静默丢弃,或者在需要引起注意时将其记录下来。 
  出站事件由出站处理程序按自上而下的方向进行处理,如图中右侧所示。出站处理程序通常会生成或转换出站流量,例如写请求。如果出站事件超出了底部出站处理程序,则由与Channel关联的IO线程处理。 IO线程通常执行实际的输出操作,例如{@link SocketChannelwrite(ByteBuffer)}。
以上摘自ChannelPipeline.java上的注释
部分内容参考关于Netty Handler入站出站机制详解
标签:依次 发送 byte nbsp pre 倒序 节点 地方 遍历
原文地址:https://www.cnblogs.com/fanxia/p/14184095.html