对Netty服务端的 UpStream和DownStream的浅识
大家都知道OSI(Open System Interconnection,开放系统互连)的七层网络模型。我们常用的应用层为最上层,即位于传输层之上,传输层则在应用层之下。
Netty的也有此概念,传输层可以理解为我们的Socket,所以从传输层的 Socket 读取数据,即请求数据从下层向上层传输,就是 Upstream;反过来向 Socket 写数据,就是从应用层向传输层发送数据,方向由上往下,就是 Downstream,即向 Socket 写。可以理解为下图:
以Netty中的pipeline中的handler来举个例子吧。
因为对于Netty的服务端来说,decode的handler先处理(因为客户端的数据是编码过的),所以decoder可以理解为UpStream,然后是业务处理,最后将业务数据进行编码,即encode,那么encoder就是DownStream。所以按照上图中代码来看,add了这6个handler后,在Netty的Pipeline列表里,最下面的是http-decoder(最先被add),最上面的是http-bizHandler。
那么UpStream的handler的顺序是:①②③⑥,DownStream的handler的顺序则是:⑤④