Dubbo 3 配合 Protobuf 使用 Triple 协议

大纲

前言

本文将整合 SpringBoot 与 Dubbo,并配合 Protobuf 使用 Triple 协议,使用的注册中心是 Nacos。

提示

从 Dubbo 3.2 开始,Dubbo 官方已经废弃原有的 gRPC 协议,使用 Triple 协议进行替代。Triple 协议完全兼容 gRPC 协议,更详细的协议介绍请看 这里

Triple 发布 REST 服务

Dubbo 3 为 Triple 协议发布 REST 风格的服务提供了内置支持,具体使用方式取决于开发者使用的是基于 Protobuf 的服务定义模式,还是基于 Java 接口的服务定义模式:

  • Java 接口的服务定义模式:通过直接为 Java 接口增加注解,可以发布 REST 风格的服务,目前支持 Spring Web 注解与 JAX-RS 注解。
  • Protobuf 的服务定义模式:通过配合 Protobuf 使用 Triple 协议,使用 IDL 定义服务,并使用 Protobuf 编码业务数据,最后可以选择使用 gRPC-Gateway 发布 REST 风格的服务。
  • Protobuf(Protocol Buffers):Google 开发的一种轻量级、高效的数据序列化协议,常用于跨语言、跨平台的数据交换。它类似于 JSON 或 XML,但具有更高的性能和更小的数据体积,适用于网络通信、配置文件、数据存储等场景。
  • gRPC-Gateway:一个基于 Go 语言的开源协议转换工具,它能够将 RESTful API(基于 HTTP/JSON)转换为 gRPC API(基于 HTTP/2 + Protobuf)。这样,客户端就可以使用普通的 HTTP 请求(如浏览器)来访问 gRPC 服务,而无需专门使用 gRPC 客户端。

提示

若希望 Dubbo 使用 Triple 协议 + Java 接口的服务定义模式来发布 REST 风格的服务,可以看 这里 的教程。

Dubbo 整合案例

本节将整合 SpringBoot 与 Dubbo,并配合 Protobuf 使用 Triple 协议,使用的注册中心是 Nacos。值得一提的是,本教程的内容也适用于 Spring Cloud 项目。

参考教程