2017-07-20 160 views
1

在微服務體系結構中,建議集中收集proto文件並將它們作爲客戶機和服務器的依賴項?或者每個客戶端和服務器只有1個原始文件?Grpc微服務體系結構實現

回答

0

如果您的組織使用單片代碼庫(即,所有代碼都存儲在一個存儲庫中),我強烈建議使用相同的文件。另一種方法是隻複製文件,但必須保持所有版本的同步。

如果您在發送方和接收方之間共享協議緩衝區文件,則可以靜態檢查發送方和接收方是否使用相同的模式,特別是如果某些新的微服務將以靜態類型語言編寫(例如Java )。另一方面,如果您沒有單片代碼庫,而是有多個存儲庫(例如,每個微服務一個存儲庫),那麼共享協議緩衝區文件會更麻煩。你可以做的是把它們放在單獨的存儲庫中,這些存儲庫可以作爲依賴項添加到需要它們的微服務中。這是我在我以前的公司見過的。我們有多個用於模式的小型API存儲庫。

因此,如果它很容易使用相同的文件,我會建議這樣做,而不是創建副本。然而,在某些情況下,複製它們更爲實際。缺點是您必須始終在所有副本上應用更改。在最好的情況下,你知道哪些文件要更新,那只是乏味。在最壞的情況下,您不知道要更新哪些文件,並且您的模式將不同步。只有當代碼被髮布時,你纔會發現。

請注意,單片代碼庫並不意味着單片架構。您可以使用微服務,並將所有源代碼保存在一個存儲庫中。這個着名的例子當然是Google。 Google也大量使用協議緩衝區來進行內部通信。我沒有看到他們的源代碼,但如果他們不在服務之間共享協議緩衝文件,我會感到驚訝。