dubbo报文通用格式相关源码

先看使用的地方,dubbo协议底层使用netty进行tcp通信,netty提供了报文encode和decode的接口,可以看nettyserver构建server的地方:

dubbo报文通用格式相关源码

 

 

在创建netty server的时候会通过调用getCodec方法获取dubbo对应的codec实现类。dubbo codec实现类的层级结构如下:

dubbo报文通用格式相关源码

 

 TransportCodec已经废弃不用,所有的方法在TelnetCodec和ExchangeCodec中都已经被覆写。从上往下看:

Codec2接口定义了encode和decode方法,这两个方法都会依赖ChannalBuffer接口,ChannelBuffer主要实现了缓存的目的,为了在encode和decode的时候做数据临时存储。

AbstarctCodec主要定义了检查payload的逻辑还有获取序列化组建,在整个codec模块里底层都是依赖序列化组建来做最后的数据序列化和反序列化,codec模块主要完成的是请求和响应自定义格式的解析,比如请求头、响应头。

TelnetCodec主要定义的是telnet协议的内容。 todo:

ExchangeCodec定义了通用的请求头和响应头解析逻辑。

DubboCodec在ExxhangeCodec的基础上在请求体和响应体中再加入了dubbo特有的相关参数。

上一篇:Docker内报错UnicodeEncodeError: ‘ascii‘ codec can‘t encode character ‘\u516c‘ in position 0


下一篇:yuv编码成h264格式写成文件