首页 > 解决方案 > 微服务架构中 protobuf 文件的组织

问题描述

在我的公司,我们有一个由微服务组织的系统,每个服务都有一个专用的 git 存储库。我们想介绍 gRPC,我们想知道如何共享 protobuf 文件并为我们的各种语言构建库。根据我们收集的一些示例,我们最终决定使用一个包含所有 protobuf 的单一存储库,这似乎是最常见的方式,并且似乎更易于维护和使用。

我想知道您是否有一些例子?您是否有一些公司做完全相反的反例,即以分布式方式托管 protobuf?

标签: protocol-buffersmicroservicesgrpc

解决方案


我们为 protofiles(称为schema)和每个微服务的多个 repo 提供了不同的 repo。此外,我们从不存储生成的代码。protoc服务器和客户端文件是在每次构建 CI 期间从头开始生成的。

实际上,这种方法很有效,很适合我们的需求。但是有两个潜在的陷阱:

  1. schema和微服务存储库之间的不一致。提交到两个不同的 git repo 不是原子的,所以,在更新的时候schema,总是有一点时间schema更新,而微服务的 repo 还没有。
  2. 如果您使用Go,则存在迁移到 Go 1.11 中引入的 Go 模块的潜在问题。我们还没有对它进行全面的研究。

推荐阅读