使用 Dubbo 开发 gRPC 服务

使用 Dubbo 开发与 gRPC 互通的服务

这个示例演示了如何使用 triple 协议实现 Dubbo 服务与标准 gRPC 服务的互相调用,可在此查看 示例完整源码

triple-grpc.png

就像在 Triple协议规范 中所描述的,triple 协议与 gRPC 协议保持 100% 兼容,同时在易用性方面有了非常大的提升(比如支持 cURL、浏览器直接访问等),可以说 triple 是一个更好用的 gRPC 设计与实现。

运行示例

首先,可通过以下命令下载示例源码

git clone --depth=1 https://github.com/apache/dubbo-samples.git

进入示例源码目录:

cd dubbo-samples/2-advanced/dubbo-samples-triple-grpc

作为标准的 gRPC Server

在这一部分,我们会发布一个 Dubbo Triple Server,然后启动一个标准的 gRPC 消费端(采用谷歌官方发布的 grpc-java 编码)来调用 Triple 服务。示例源码在 dubbo-samples-triple-grpc,请下载源码并依照以下命令体验。

启动 Dubbo server

Make sure you are in dubbo-samples-triple-grpc directory and then run the following command:

$ mvn compile exec:java -Dexec.mainClass="org.apache.dubbo.samples.tri.grpc.interop.server.TriOpServer"

使用标准 gRPC client 调用 Triple 服务

Open a new terminal, enter dubbo-samples-triple-grpc directory and then run the following command:

$ mvn compile exec:java -Dexec.mainClass="org.apache.dubbo.samples.tri.grpc.interop.server.GrpcClient"

作为标准的 gRPC Client

This part showcases how Triple client written with Dubbo consumes gRPC service written with standard gRPC-java.

启动标准 gRPC server

$ mvn compile exec:java -Dexec.mainClass="org.apache.dubbo.samples.tri.grpc.interop.client.GrpcServer"

使用 Dubbo client 调用标准 gRPC 服务

$ mvn compile exec:java -Dexec.mainClass="org.apache.dubbo.samples.tri.grpc.interop.client.TriOpClient"

更多内容

本示例主要演示 triple 可以 100% 兼容谷歌发布的 gRPC 框架,而在 triple 相关部分具体代码与配置上,本示例与之前介绍的 基于 protobuf 的 triple 示例完全一致,因此我们不再重复讲解源代码与开发步骤。

本示例演示的是 unary 模式的通信兼容性,对于 streaming 模式同样适用。


最后修改 January 8, 2024: Update java sdk doc (#2895) (e3d2c12de7)