Dubbo-go 框架内置提供了两款协议:triple、dubbo,除此之外,框架还提供了多种协议扩展接入方式。
本篇文档中,我们将介绍关于 triple 协议的使用方式、如何实现与已有 dubbo2 系统的互相调用、扩展更多协议支持等。更多原理性介绍请参考 协议规范 或者 dubbo java 中相关描述文档。
triple 协议支持使用 protobuf 和 non-protobuf 两种开发模式,我们 推荐使用 protobuf 模式开发服务。
目前我们大部分示例都是使用这个模式开发,可查看 快速开始 学习完整开发示例,以下是基本步骤:
如果 java 和 go 都使用 triple+protobuf 模式,很明显他们是可以直接互调通信的。
但问题是很多 java 用户是使用的 triple non-protobuf 模式,还有一些老版本用户是使用的 dubbo tcp 协议。对于这部分业务,我们要可以使用 dubbo-go 框架的以下编码模式实现协议互调:
直接使用 struct 定义服务:
指定要发布的协议,可以是 dubbo、triple 或其他协议,请注意 WithInterface("GreetProvider")
要保持和 dubbo-java 侧的服务名一致(如保持 java 全路径名):
指定要调用的协议,可以是 dubbo、triple 或其他协议,请注意 WithInterface("GreetProvider")
要保持和 dubbo-java 侧的服务名一致(如保持 java 全路径名):
Dubbo 框架支持协议扩展,目前官方生态支持的协议包括:
在一些场景下,你可以在一个应用内同时发布多个协议的服务,或者同时以不同的协议调用服务,这里有一个 多协议发布的使用示例 供参考。