2015-12-22 158 views
2

例如,我有一個有4個微服務的項目:client-web,admin-web,client-api,admin-api。如何在微服務之間共享代碼?

這四個微服務應該共享一個DB代碼,我應該如何將DB代碼作爲git的子模塊並在每個微服務中使用它?

是否違反微服務原則?

+0

這可能取決於所使用的語言,哪種解決方案效果最好,仍然可能是基於意見的。但我不明白共享一段代碼是否會違反微服務原則。畢竟,他們每個人都需要連接到數據庫,那麼爲什麼要複製代碼? – GolezTrol

+0

通過創建一個庫? – jgauffin

+0

名稱上的4個微服務似乎更像客戶端服務器架構而不是微服務。通常,每個微服務都有自己的實體/數據庫訪問代碼。也許你擁有的DB​​代碼本身就是微型服務? – longday

回答

3
  1. 創建一個庫。
  2. 爲具有語義版本控制的庫進行版本控制,並使用環境的程序包管理功能(例如,如果您使用的是.NET,則爲Nuget)創建程序包。
  3. 在微服務中包含該程序包作爲依賴項。
2

我認爲你應該小心製作一個共享庫並將它包含在你的微服務中,因爲它可以給你一個耦合點,這意味着如果你必須對庫進行更改,則可能必須全部更改你的服務,然後你放棄了這種體系結構的好處之一 - 部署小型服務而不需要部署整個應用程序。

我認爲一個更好的方法是使其成爲一個微服務。

+0

「如果你必須改變圖書館,你可能不得不改變你的所有服務」,是的,抱歉,但不,這就是爲什麼它被稱爲「共享」庫,而不是「靜態」;) – nonchip

+1

我認爲它是總是一個糟糕的主意,有一個「持久性」的微服務。這是一種微服務反模式,它導致了微服務整體。 –