darren0zdc

2020-01-20

无缝衔接 gRPC 与 dubbo-go

今天我就给大家分析一下大佬是怎么连接 dubbo-go 和 gRPC 。先来简单介绍一下 gRPC 。gRPC是通过 IDL ——接口定义语言——编译成不同语言的客户端来实现的。可以说是RPC理论的一个非常非常标准的实现。因而 gRPC 天然就支持多语言。这几年,它几乎成为了跨语言 RPC 框架的标准实现方式了,很多优秀的rpc框架,如 Spring Cloud 和 dubbo ,都支持 gRPC 。第一个步骤很容易,唯独第二个步骤。因此,可以看到,在 dubbo-go 里面,要解决的一个关键问题就是如何拿到这个 serviceDesc 。而从 cluster 往上,显然 gRPC 没有涉及。这个 gRPC protocol 大体上相当于一个适配器,将底层的 gRPC 的实现和我们自身的 dubbo-go 连接在一起。的形式来修改生成的代码,那就是真难;但是如果知道了,这个东西就很简单了——无非就是水磨工夫罢了。