ant*_*ham 6 protocol-buffers microservices grpc
在我的公司中,我们有一个由微服务组织的系统,每个服务都有专用的git存储库。我们想介绍gRPC,我们想知道如何共享protobuf文件并为我们的各种语言构建库。根据我们收集到的一些示例,我们最终决定在内部存放所有protobuf的单个存储库,这似乎是最常见的存储方式,并且维护和使用起来也更加容易。
我想知道您是否有一些例子?您是否有一些相反的例子,说明公司做相反的事情,即以分布式方式托管protobuf?
我们有一个独特的原型文件存储库(称为schema),并为每个微服务提供多个存储库。此外,我们从不存储生成的代码。服务器和客户端文件是在 CI 上的每次构建期间从头开始生成的protoc。
事实上,这种方法很有效,并且非常适合我们的需求。但有两个潜在的陷阱:
schema。提交到两个不同的 git 存储库不是原子的,因此,在schema更新时,总是有一个更新的时间段schema,而微服务的存储库还没有。Go,则迁移到 Go 1.11 中引入的 Go 模块可能会出现问题。我们还没有对其进行全面的研究。我们的每个微服务都有自己的 API(protobuf 或多个 protobuf 文件)。对于每个 API,我们都有单独的存储库。此外,我们还有 CI 工作,将原型类构建到 jar 中(不仅适用于 Java,也适用于其他语言)并将其发布到我们的中央存储库中。您只需将依赖项添加到您需要的 API 即可。
例如,我们有微服务A,我们还有存储库a-api(仅包含原型文件),它通过作业构建到 jar 中(以及其他语言)com.api.a-service.<version>
| 归档时间: |
|
| 查看次数: |
397 次 |
| 最近记录: |