这个示例演示了如何使用 triple 协议实现 Dubbo 服务与标准 gRPC 服务的互相调用,可在此查看 示例完整源码
就像在 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
接下来,我们分别从 dubbo 调用 grpc、grpc 调用 dubbo 两个不同的方向,看一下如何基于 triple 协议实现互调。
在这一部分,我们会发布一个 Dubbo Triple Server,然后启动一个标准的 gRPC 消费端(示例采用谷歌官方发布的 grpc-java 编码)来调用 Triple 服务。
确保你在 dubbo-samples-triple-grpc
目录,运行以下命令:
$ mvn compile exec:java -Dexec.mainClass="org.apache.dubbo.samples.tri.grpc.interop.server.TriOpServer"
打开一个新的终端,在 dubbo-samples-triple-grpc
目录运行以下命令:
$ mvn compile exec:java -Dexec.mainClass="org.apache.dubbo.samples.tri.grpc.interop.server.GrpcClient"
以下部分我们演示如何使用 triple 协议访问谷歌官方的 gRPC 服务(示例采用谷歌官方发布的 grpc-java 编写).
$ mvn compile exec:java -Dexec.mainClass="org.apache.dubbo.samples.tri.grpc.interop.client.GrpcServer"
$ mvn compile exec:java -Dexec.mainClass="org.apache.dubbo.samples.tri.grpc.interop.client.TriOpClient"
本示例主要演示 triple 可以 100% 兼容谷歌发布的 gRPC 框架,而在 triple 相关部分具体代码与配置上,本示例与之前介绍的 基于 protobuf 的 triple 示例完全一致,因此我们不再重复讲解源代码与开发步骤。
本示例演示的是 unary 模式的通信兼容性,对于 streaming 模式同样适用。