Grpc微服务架构实现

8
在微服务架构中,是否建议有一个集中的proto文件集合,并将其作为客户端和服务器的依赖项?还是每个客户端和服务器只有1个proto文件?
1个回答

7
如果你的组织使用单块代码库(即所有代码存储在一个存储库中),强烈建议使用同一文件。否则,您只需复制该文件,但是您必须保持所有版本同步。
如果发送方和接收方之间共享协议缓冲区文件,则可以静态检查发送方和接收方是否使用相同的模式,特别是如果某些新的微服务将使用静态类型语言(例如Java)编写。
另一方面,如果您没有单块代码库而是有多个存储库(例如每个微服务一个存储库),那么共享协议缓冲区文件就更加麻烦了。您可以将它们放在单独的存储库中,这些存储库可以作为需要它们的微服务的依赖项添加。这是我在以前的公司看到的情况。我们为架构拥有多个小型API存储库。
因此,如果使用相同的文件很容易,我建议这样做而不是创建副本。然而,可能有情况更实际地复制它们。缺点是您必须始终在所有副本上应用更改。在最好的情况下,您知道要更新哪些文件,那就只是繁琐了。在最糟糕的情况下,您不知道要更新哪些文件,您的模式将不会同步。只有在代码发布时,您才会发现。
请注意,单块代码库并不意味着单块架构。您可以拥有微服务,并仍将所有源代码放在一个存储库中。当然,著名的例子是Google。 Google还大量使用协议缓冲区进行内部通信。我没有看到他们的源代码,但如果他们不在服务之间共享协议缓冲区文件,我会感到惊讶。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接