带你读《Apache Dubbo微服务开发从入门到精通》—— 三、 Dubbo2协议(下)

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 带你读《Apache Dubbo微服务开发从入门到精通》—— 三、 Dubbo2协议(下)

《Apache Dubbo微服务开发从入门到精通》——通信协议—— 三、 Dubbo2协议(中) https://developer.aliyun.com/article/1224597


5. 协议SPEC

 

Magic-Magic High & Magic Low16 bits

Identifies dubbo protocol with value0xdabb

 

Req/Res1 bit

Identifies this is a request or response. Request-1; Response-0.

 

2 Way1 bit

Only useful when Req/Res is 1Request),expect for a return value from server or not. Set to 1 if need a return value from server.

 

Event1 bit

Identifies an event message or notfor example, heartbeat event. Set to 1 if this is an event.

 

Serialization ID5 bit

Identifies serialization typethe value for fastjson is 6.

 

Status(8 bits

Only useful when  Req/Res is 0Response),identifies the status of response.

 

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

 

Request ID64 bits

Identifies an unique request. Numericlong.

 

Data Length32

Length of the contentthe variable partafter serialization, counted by bytes. Numericinteger.

 

Variable Part

Each part is a byte[] after serialization with specific serialization type, identifies by Serialization ID.

 

image.png

 

Every part is a byte[] after serialization with specific serialization type, identifies by Serialization ID

 

If the content is a Request (Req/Res = 1), each part consists of the content, in turn is

 

Dubbo version

Service name

Service version

Method name

Method parameter types

Method arguments

Attachments

 

If the content is a Response (Req/Res = 0), each part consists of the content, in turn is:

 

Return value type, identifies what kind of value returns from server side: RESPONSE_NULL_VALUE - 2, RESPONSE_VALUE - 1, RESPONSE_WITH_EXCEPTION - 0.

Return value, the real value returns from server.

 

注:对于Variable Part变长部分,当前版本的dubbo框架使用json序列化时,在每部分内容间额外增加了换行符作为分隔,请选手在Variable Part的每个part后额外增加换行符,如:

 

image.png

相关文章
|
27天前
|
自然语言处理 Dubbo Java
【面试问题】Dubbo 推荐用什么协议?
【1月更文挑战第27天】【面试问题】Dubbo 推荐用什么协议?
|
1月前
|
Dubbo Java 应用服务中间件
微服务框架(十)Maven Archetype制作Dubbo项目原型
  此系列文章将会描述Java框架Spring Boot、服务治理框架Dubbo、应用容器引擎Docker,及使用Spring Boot集成Dubbo、Mybatis等开源框架,其中穿插着Spring Boot中日志切面等技术的实现,然后通过gitlab-CI以持续集成为Docker镜像。   本文为Maven Archetype的制作及使用,使用archetype插件制作Dubbo项目原型
|
1月前
|
Dubbo 网络协议 安全
【Dubbo 解析】Dubbo 支持哪些协议,它们的优缺点有哪些?
【1月更文挑战第11天】【Dubbo 解析】Dubbo 支持哪些协议,它们的优缺点有哪些?
|
1月前
|
JSON Dubbo Java
微服务框架(二十)Dubbo Spring Boot 生产就绪特性
  此系列文章将会描述Java框架Spring Boot、服务治理框架Dubbo、应用容器引擎Docker,及使用Spring Boot集成Dubbo、Mybatis等开源框架,其中穿插着Spring Boot中日志切面等技术的实现,然后通过gitlab-CI以持续集成为Docker镜像。   本文为Dubbo Spring Boot 生产就绪特性
|
1月前
|
Dubbo Java 应用服务中间件
微服务框架(十六)Spring Boot及Dubbo zipkin 链路追踪组件埋点
此系列文章将会描述Java框架Spring Boot、服务治理框架Dubbo、应用容器引擎Docker,及使用Spring Boot集成Dubbo、Mybatis等开源框架,其中穿插着Spring Boot中日志切面等技术的实现,然后通过gitlab-CI以持续集成为Docker镜像。 本文第一部分为调用链、OpenTracing、Zipkin和Jeager的简述;第二部分为Spring Boot及Dubbo zipkin 链路追踪组件埋点
|
1月前
|
Dubbo Java 应用服务中间件
微服务框架(十一)Dubbo调用拦截及参数校检扩展
  此系列文章将会描述Java框架Spring Boot、服务治理框架Dubbo、应用容器引擎Docker,及使用Spring Boot集成Dubbo、Mybatis等开源框架,其中穿插着Spring Boot中日志切面等技术的实现,然后通过gitlab-CI以持续集成为Docker镜像。   使用Dubbo框架时,面对自身的业务场景,需根据定制的需求编写SPI拓展实现,再根据配置来加载拓展点。
|
1月前
|
Dubbo Java 应用服务中间件
微服务框架(九)Spring Boot 通用Dubbo Parent POM
此系列文章将会描述Java框架Spring Boot、服务治理框架Dubbo、应用容器引擎Docker,及使用Spring Boot集成Dubbo、Mybatis等开源框架,其中穿插着Spring Boot中日志切面等技术的实现,然后通过gitlab-CI以持续集成为Docker镜像。   本文为通用Dubbo Maven POM的集成,只需集成Parent POM即可使用
|
1天前
|
弹性计算 负载均衡 监控
现代化后端开发中的微服务架构设计与实践
【2月更文挑战第6天】 在当今互联网时代,后端开发已经成为各种应用和系统的核心。本文将深入探讨现代化后端开发中的微服务架构设计与实践,包括微服务架构的优势、设计原则、技术选型以及实际应用中的挑战和解决方案。通过本文的阐述,读者将更好地理解微服务架构在后端开发中的重要性,并能够在实际项目中进行合理的应用。
|
22天前
|
负载均衡 Dubbo Java
Dubbo 的心脏:理解和应用多种协议【十三】
Dubbo 的心脏:理解和应用多种协议【十三】
11 0
|
22天前
|
负载均衡 监控 Dubbo
探秘Dubbo Registry:微服务架构的核心【十二】
探秘Dubbo Registry:微服务架构的核心【十二】
12 0

相关产品

  • 云消息队列 MQ
  • 云消息队列 Kafka 版
  • 微服务引擎
  • 推荐镜像

    更多