Grpc微服务架构实现

时间:2017-07-20 13:05:10

标签: node.js architecture protocol-buffers microservices grpc

在微服务架构中,是否建议集中收集原型文件并将它们作为客户端和服务器的依赖?或者每个客户端和服务器只有一个原型文件?

1 个答案:

答案 0 :(得分:1)

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

如果在发送方和接收方之间共享协议缓冲区文件,则可以静态检查发送方和接收方是否使用相同的模式,特别是如果某些新的微服务将使用静态类型语言(例如,Java)编写

另一方面,如果您没有单一的代码库,而是拥有多个存储库(例如,每个微服务一个),则共享协议缓冲区文件会更麻烦。您可以做的是将它们放在单独的存储库中,这些存储库可以作为依赖项添加到需要它们的微服务中。这就是我在以前的公司看到的。我们为架构提供了多个小型API存储库。

因此,如果使用同一个文件很容易,我建议不要创建副本。但是,在某些情况下,复制它们更为实际。缺点是您始终必须在所有副本上应用更改。在最好的情况下,您知道要更新哪些文件,那么它只是单调乏味。在最坏的情况下,您不知道要更新哪些文件,并且您的架构将不同步。只有在代码发布后,您才能找到答案。

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