干翻Dubbo系列第十二篇:Dubbo协议介绍

文章目录

文章说明

一:Dubbo协议

1:Dubbo协议简介

2:Dubbo协议优点

3:Dubbo协议帧的组成

(一):幻数

(二):2Way

(三):event

[(四):Serilization ID](#(四):Serilization ID)

(五):status

(六):RequestID

(七):数据长度


文章说明

本文内容整理自《孙哥说Dubbo系列视频课程》,孙帅老师课程细致、全面、深入、性价比极高。B站搜孙帅suns可以找到对应的试听视频,或者直接添加老师微信号suns45与他直接联系

一:Dubbo协议

Rpc过程当中三个核心的要素就是:协议 序列化 通信方式

1:Dubbo协议简介

Dubbo协议是Dubbo定义的私有化协议。也是Dubbo默认的协议,我们在不进行任何设置的情况下Dubbo使用的协议就是Dubbo协议,默认的序列化范式就是Hessian2,当然在3.2之后的Dubbo版本切换为了FastJson2,Dubbo的默认的通信方式是Netty4。

不同的协议,支持的通信方式是不一样的。我们的dubbo协议走的是TCP层,他的通信方式就是Netty或者Mina,当我们后续将Rest协议的时候,他的序列化方式使用的就是JSON或者XML的方式了,它的通讯方式就是Jetty或者是Tomat这种服务器的通信方式。

不同的协议+序列化方式组合+通信方式对应的通信效率是天差地别的。他们对应的执行效率,也就是:响应时间、TPS和QPS也是天查地别的。

2:Dubbo协议优点

Dubbo协议最大的特点是什么呢?他是一个长链接异步通信的方式,他和我们Netty里边Futrure和Promise的情况是可以画等号的。这种情况适用于,小数据量大并发的数据调用。他不适合大数据量的服务比如:传输文件和视频。日常常规的调用,数据量比较小,兵法比较高,使用Dubbo协议是比较合适的。

3:Dubbo协议帧的组成

所谓协议帧的组成,就是协议描述了通信双方,在通信内容传输过程中达成的传输单位(帧)的约定。在这个帧的信息里边,那些是头信息,那些是体信息?实际上整个帧的结构。

不同的协议是不一样的,但是基本的内容是一致的,都包括头信息和体信息。Dubbo协议的帧信息里边,幻数,序列化方式,操作的方向性,状态信息和数据大小信息,这些内容都有,以及这些操作内容占多大的空间。

(一):幻数

幻数:幻数这个内容分为幻术高位和幻数地位,总共占据16个bit。0xdabb这是一个16进制的数字,他的作用标识了这是Dubbo协议的标准帧,有了这个标识才能被认定为这是客户端给服务端发送的一个标准的帧,他的作用就类似于Java中class文件的cafababe。

req和res占用了1bit的空间,表达的是这是请求的数据还是相应的数据,如果是请求的数据则是1,如果是响应的数据则是0,这个就代表了,咱们前边提到的操作的方向性。

(二):2Way

这个标志位只能在req是1的时候,它的含义代表了我们期望服务器给我们的返回值是有值还是没值的情况。1是有值。

(三):event

事件,这个可以告诉付服务端,我们这是一个普通的请求信息,还是心跳事件,如果是心跳事件的话,这里会是1

(四):Serilization ID

序列化协议,如果是FastJson2的话,这里应该是6.

(五):status

20 - OK

30 - CLIENT_TIMEOUT

31 - SERVER_TIMEOUT

40 - BAD_REQUEST

50 - BAD_RESPONSE

60 - SERVICE_NOT_FOUND

70 - SERVICE_ERROR

80 - SERVER_ERROR

90 - CLIENT_ERROR

100 - SERVER_THREADPOOL_EXHAUSTED_ERROR

(六):RequestID

给我们请求一个编号,占用64bit,是一个Long值。

(七):数据长度

Data Length (32)数据长度

这个数据长度的大小是必须要给的,只有给了这个数据长度的大小,我们才可以顺利的解决半包和粘包问题。

相关推荐
KindSuper_liu2 小时前
Unity 游戏网络基础:从 TCP、UDP 到 HTTP、TLS 与 Best HTTP
网络·游戏·unity
caimouse2 小时前
ReactOS 图形系统分析(3):显示驱动 DDI framebuf.dll
linux·运维·网络
M158227690552 小时前
四通道 Profinet 转 Modbus RTU 网关 SG-PN-Modbus_4 全场景落地详解
网络·工控布线
佳児素花痴╮3 小时前
网络问题与基础理论
运维·服务器·网络
Oflycomm3 小时前
IPC网络摄像机与安防监控:Wi-Fi 6模组、AOV低功耗与边缘AI的产业落地
网络·人工智能·安防监控·wifi6·ipc网络摄像机
0x533 小时前
Java网络编程(四)
java·网络
SendTomo4 小时前
跨设备文件互传新方案
javascript·网络·webrtc·html5·p2p
啦啦啦啦啦zzzz4 小时前
moduo网络库 Acceptor TcpConnection
服务器·网络·c++·reactor·网络库
Shadow(⊙o⊙)5 小时前
Linux网络部分——TCP协议服务端客户端交互接口,入门级硬核解析1.0
linux·网络·tcp/ip
小新讲网安5 小时前
HTTP请求走私攻击实战:CL.TE与TE.CL绕过前端服务器全解析
服务器·前端·网络·web安全·http·架构·漏洞