我们计划保留一个中央proto存储库,以将所有proto定义及其生成的代码保存在此处。我们将把messages
和service
的定义保存在一个中央Git仓库中。我们计划从这个中央存储库推动API设计标准。
但是,任何想要使用它来公开服务器服务或生成客户端的服务都必须从这个repo(.pg.go(导入。你认为这种方法有什么问题吗?或者,您认为将服务原型文件单独保存在服务repo中是一种更好的选择吗。
PS:GRPC构建微服务之旅的起点。仍在学习在这里构建和分发代码的正确方法。
这个问题经常出现,我怀疑没有发布指南的事实是因为答案更多地取决于您的需求,而不是技术。
多对一的具体问题与你是否更喜欢使用单回购没有什么不同,只有你才能有效地确定这一点。也许确定这一点的一种方法是现在(以及将来(了解您的服务将具有多少共享依赖关系?另一个可能是确定你将拥有多少回购(管理10或100的回购有多复杂?(。
根据我的经验,将protos与使用它们的代码区分开来(即单独的repo(是一种很好的做法。您不仅可能希望独立于实现(跨语言(对protos进行版本设置,而且实现本身也是独立的;在一个用例中,我必须克隆一个包含整个系统(主要用一种语言编写(的repo,以便让它的protos用另一种语言生成绑定。在这种情况下,最好是回购仅限于质子。
你可以参考一些例子来获得指导。除了math
之外,gRPC repo还保留了一堆根在grpc
包上的东西。虽然范围不那么广泛,但谷歌将其知名类型捆绑在google.protobuf
下。