Dubbo源码分析之网络通信原理剖析
这一篇我们主要来讲Dubbo
在网络中如何进行通信的。由于请求都是基于TCP
的,那么Dubbo
中是如何处理粘包和拆包的问题。
dubbo
协议采用固定长度的消息头(16字节)和不定长度的消息体来进行数据传输,消息头定义了底层
框架(netty
)在IO
线程处理时需要的信息,协议的报文格式如下:
一、数据包结构详解
1、协议详情
-
Magic - Magic High & Magic Low (16 bits)
标识协议版本号,Dubbo 协议:0xdabb -
Serialization ID (5 bit)
标识序列化类型:比如 fastjson 的值为6。 -
Event (1 bit)
标识 ,例如,心跳事件。如果这是一个事件,则设置为1。 -
2 Way (1 bit)
仅在 Req/R