protocol-buffers - 微服务架构中 protobuf 文件的组织
问题描述
在我的公司,我们有一个由微服务组织的系统,每个服务都有一个专用的 git 存储库。我们想介绍 gRPC,我们想知道如何共享 protobuf 文件并为我们的各种语言构建库。根据我们收集的一些示例,我们最终决定使用一个包含所有 protobuf 的单一存储库,这似乎是最常见的方式,并且似乎更易于维护和使用。
我想知道您是否有一些例子?您是否有一些公司做完全相反的反例,即以分布式方式托管 protobuf?
解决方案
我们为 protofiles(称为schema
)和每个微服务的多个 repo 提供了不同的 repo。此外,我们从不存储生成的代码。protoc
服务器和客户端文件是在每次构建 CI 期间从头开始生成的。
实际上,这种方法很有效,很适合我们的需求。但是有两个潜在的陷阱:
schema
和微服务存储库之间的不一致。提交到两个不同的 git repo 不是原子的,所以,在更新的时候schema
,总是有一点时间schema
更新,而微服务的 repo 还没有。- 如果您使用
Go
,则存在迁移到 Go 1.11 中引入的 Go 模块的潜在问题。我们还没有对它进行全面的研究。
推荐阅读
- javascript - 查找特定的子元素并更改类名
- node.js - 无法通过 npm 安装乳液
- javascript - 如何关联两个输入字段?
- javascript - 如何在每个按钮单击时显示单个列表按钮数据
- angular - Angular Material 2 DatePicker 使用 Moment 的日期格式
- loopbackjs - Loopback js 无法读取 url 中的 GET 请求参数
- c++ - 基于模板类型的类类型
- php - 这是什么意思 < die("连接失败:" . $conn->connect_error); >
- javascript - React.Component 以外的继承组件类抛出“超级表达式必须为空或函数”异常
- ios - 推送通知点击获取 url 并在 View Controller , iOS , Swift4.2 中显示