推荐的分发GRPC客户端的机制是什么?

时间:2018-10-18 08:54:16

标签: protocol-buffers microservices grpc service-discovery

我已经创建了GRPC服务器,并希望向其分发各种语言的“ SDK”客户端。

我可以使用proto命令(例如python)相对容易地生成客户端:

python -m grpc_tools.protoc -I. --python_out=/tmp/python --grpc_python_out=/tmp/python MyProtoc.proto

,以及类似的java/ruby等。

此生成的代码需要手动复制到客户端应用程序。

我宁愿让自己的消费者不必自己创建生成的库并将其集成,也不会给他们带来负担。 (尤其是在向服务添加新功能时)

例如,在python的上下文中,沿着

pip install MyProtoClient

是否存在将生成的库打包到适当的规范包管理器(即pip / maven / npm等的机制)?

还有,有没有一种方法可以调用服务本身以生成源库(或返回其正在实现的适当原型?)

1 个答案:

答案 0 :(得分:0)

没有一个项目专门为生成的源制作软件包。 googleapis的Artman / GAPIC Generator是一个适用于多种语言的项目,但它也进行自己的代码生成,并且混合在一起。您可以看到output for some languages(对于所有这些对象,请查看特定的API,例如Pub / Sub)。

gRPC服务器可以通过reflection API公开其定义。每种语言都有一个预先构建的服务实现。例如,在Java中为io.grpc.protobuf.services.ProtoReflectionService,在Go中为google.golang.org/grpc/reflection。该服务不会返回.proto文件,而是返回“描述符”,这是protobuf反射和代码生成工具使用的常规格式。