【问题标题】:what is the recommended mechanism to distribute GRPC clients?分发 GRPC 客户端的推荐机制是什么?
【发布时间】:2018-10-18 08:54:16
【问题描述】:

我创建了一个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 等)?

另外,有没有办法调用服务本身来生成源库(或返回它正在实现的适当原型?)

【问题讨论】:

  • 您是否需要一种简单的方法来以各自的语言为 RPC 客户端推送包?现在,您必须生成它们并将它们推送到单独的存储库中,并在包管理器中指定可以找到它们的位置。例如,在 npm 中,这是 npm 注册表,Ruby 是 gem 注册表,等等。

标签: protocol-buffers microservices grpc service-discovery


【解决方案1】:

没有一个项目专门用于为生成的源制作包。 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 反射和代码生成工具使用的正常格式。

【讨论】:

    猜你喜欢
    • 2014-04-30
    • 1970-01-01
    • 2012-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-09
    相关资源
    最近更新 更多