2017-07-20 159 views
1

在微服务体系结构中,建议集中收集proto文件并将它们作为客户机和服务器的依赖项?或者每个客户端和服务器只有1个原始文件?Grpc微服务体系结构实现

回答

0

如果您的组织使用单片代码库(即,所有代码都存储在一个存储库中),我强烈建议使用相同的文件。另一种方法是只复制文件,但必须保持所有版本的同步。

如果您在发送方和接收方之间共享协议缓冲区文件,则可以静态检查发送方和接收方是否使用相同的模式,特别是如果某些新的微服务将以静态类型语言编写(例如Java )。另一方面,如果您没有单片代码库,而是有多个存储库(例如,每个微服务一个存储库),那么共享协议缓冲区文件会更麻烦。你可以做的是把它们放在单独的存储库中,这些存储库可以作为依赖项添加到需要它们的微服务中。这是我在我以前的公司见过的。我们有多个用于模式的小型API存储库。

因此,如果它很容易使用相同的文件,我会建议这样做,而不是创建副本。然而,在某些情况下,复制它们更为实际。缺点是您必须始终在所有副本上应用更改。在最好的情况下,你知道哪些文件要更新,那只是乏味。在最坏的情况下,您不知道要更新哪些文件,并且您的模式将不同步。只有当代码被发布时,你才会发现。

请注意,单片代码库并不意味着单片架构。您可以使用微服务,并将所有源代码保存在一个存储库中。这个着名的例子当然是Google。 Google也大量使用协议缓冲区来进行内部通信。我没有看到他们的源代码,但如果他们不在服务之间共享协议缓冲文件,我会感到惊讶。