netty 中的 pipeline 的使用原因

pipeline字面意思就是管道(水管),管道里面的水就是你的数据(NIO里面就是ByteBuf),我们需要阀(tomcat中对应Valve,netty中对应ChannelHandler)对数据进行一些处理,例如认证,授权,安全检验等。InBound就去Decode,OutBound就去Encode。最终把结果写进SocketChannel。

作者:郑大侠
链接:https://www.zhihu.com/question/38969444/answer/109371910
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

顺手粘贴一个pipeline的注释
                                       I/O Request
*                                     via {@link Channel} or
*                                 {@link ChannelHandlerContext}
*                                           |
*  +----------------------------------------+---------------+
*  |                  ChannelPipeline       |               |
*  |                                       \|/              |
*  |  +----------------------+  +-----------+------------+  |
*  |  | Upstream Handler  N  |  | Downstream Handler  1  |  |
*  |  +----------+-----------+  +-----------+------------+  |
*  |            /|\                         |               |
*  |             |                         \|/              |
*  |  +----------+-----------+  +-----------+------------+  |
*  |  | Upstream Handler N-1 |  | Downstream Handler  2  |  |
*  |  +----------+-----------+  +-----------+------------+  |
*  |            /|\                         .               |
*  |             .                          .               |
*  |     [ sendUpstream() ]        [ sendDownstream() ]     |
*  |     [ + INBOUND data ]        [ + OUTBOUND data  ]     |
*  |             .                          .               |
*  |             .                         \|/              |
*  |  +----------+-----------+  +-----------+------------+  |
*  |  | Upstream Handler  2  |  | Downstream Handler M-1 |  |
*  |  +----------+-----------+  +-----------+------------+  |
*  |            /|\                         |               |
*  |             |                         \|/              |
*  |  +----------+-----------+  +-----------+------------+  |
*  |  | Upstream Handler  1  |  | Downstream Handler  M  |  |
*  |  +----------+-----------+  +-----------+------------+  |
*  |            /|\                         |               |
*  +-------------+--------------------------+---------------+
*                |                         \|/
*  +-------------+--------------------------+---------------+
*  |             |                          |               |
*  |     [ Socket.read() ]          [ Socket.write() ]      |
*  |                                                        |
*  |  Netty Internal I/O Threads (Transport Implementation) |
*  +--------------------------------------------------------+


-------------------------------------------------------------------------------------------------------------------------------
上图为netty 3.7版本的channelpipeline注释,今天看5.x发现有一点点不一样,贴出最新的:
*                                        {@link ChannelHandlerContext}
*                                                      |
*  +---------------------------------------------------+---------------+
*  |                           ChannelPipeline         |               |
*  |                                                  \|/              |
*  |    +----------------------------------------------+----------+    |
*  |    |                   ChannelHandler  N                     |    |
*  |    +----------+-----------------------------------+----------+    |
*  |              /|\                                  |               |
*  |               |                                  \|/              |
*  |    +----------+-----------------------------------+----------+    |
*  |    |                   ChannelHandler N-1                    |    |
*  |    +----------+-----------------------------------+----------+    |
*  |              /|\                                  .               |
*  |               .                                   .               |
*  | ChannelHandlerContext.fireIN_EVT() ChannelHandlerContext.OUT_EVT()|
*  |          [method call]                      [method call]         |
*  |               .                                   .               |
*  |               .                                  \|/              |
*  |    +----------+-----------------------------------+----------+    |
*  |    |                   ChannelHandler  2                     |    |
*  |    +----------+-----------------------------------+----------+    |
*  |              /|\                                  |               |
*  |               |                                  \|/              |
*  |    +----------+-----------------------------------+----------+    |
*  |    |                   ChannelHandler  1                     |    |
*  |    +----------+-----------------------------------+----------+    |
*  |              /|\                                  |               |
*  +---------------+-----------------------------------+---------------+
*                  |                                  \|/
*  +---------------+-----------------------------------+---------------+
*  |               |                                   |               |
*  |       [ Socket.read() ]                    [ Socket.write() ]     |
*  |                                                                   |
*  |  Netty Internal I/O Threads (Transport Implementation)            |
*  +-----------------------------------------------------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值