codec
AbstractEndpoint 这个类 是所有client和Server的抽象父类,内部有个编码器codec通过这个来序列化和反序列化
查看构造器发现codec通过url来获取的
看过上面spi的话,应该就很容易了解dubbo的codec编码器机制
dubbo默认一般使用dubbo协议,直接观看DubboProtocol类
查看createServer
发现url参数设置的CODE_KEY为DubboCodec.NAME
所以可以推测dubboCodec是dubbo解码器和编码器,查看内部实现
DubboCountCodec
内部持有dubbocodec
主要讲下序列化,发现内部有个CodecSupport
内部核心调用getSerialization
也是通过spi机制,不过有个缓存已经预加载了所有序列化工具
body序列化默认是hession2
dubbo请求结构
请求头HEAD_LENGTH:16字节
MAGIC 0xdabb 2字节
flag
高位
0x20 FLAG_EVENT
0x40 FLAG_TWOWAY
0x80 FLAG_REQUEST
低位
序列器id
响应状态status 1字节,枚举查看response类
请求id 8字节
DATA_LENGTH offSet 4字节
解析body,通过CodecSupport序列化
CodecSupport
里面的通过序列器id寻找序列化工具
查看方法可以发现使用默认hession2序列工具
Last updated