Triple 协议简介
Triple 协议是 Dubbo3 设计的基于 HTTP 的 RPC 通信协议规范,它完全兼容 gRPC 协议,支持 Unary、Streaming 流式等通信模型,可同时运行在 HTTP/1 和 HTTP/2 之上。
Triple 包含两个部分:
构建一套自定义的精简 HTTP RPC 子协议,支持 HTTP/1 和 HTTP/2 为传输协议,仅支持 Unary 通信。
构建基于 gRPC 的扩展子协议(与 gRPC 兼容),仅支持 HTTP/2 实现,支持 Unary 和 Streaming 通信。
目标
Triple 协议完全兼容 gRPC 协议,为什么 Dubbo 还要通过 Triple 重新实现一遍?目标有如下两点:
- 在协议设计上,Triple 是一个基于 HTTP 传输层协议的 RPC 协议,它同时可运行在 HTTP/1、HTTP/2 之上。
- 完全兼容基于 HTTP/2 的 gRPC 协议,因此 Dubbo Triple 协议实现可以 100% 与 gRPC 体系互调互通。
- 仅依赖标准的、被广泛使用的 HTTP 特性,以便在实现层面可以直接依赖官方的标准 HTTP 网络库。
协议规范
Triple 包含两个部分:
构建一套自定义的精简 HTTP RPC 子协议,支持 HTTP/1 和 HTTP/2 为传输协议,仅支持 Unary 通信。
构建基于 gRPC 的扩展子协议(与 gRPC 兼容),仅支持 HTTP/2 实现,支持 Unary 和 Streaming 通信。
HTTP RPC 协议
Triple HTTP RPC 同时支持 HTTP/1、HTTP/2 作为底层传输层协议,在实现上对应支持的 content-type 类型为 application/json、application/proto。