1. 程式人生 > >微服務的反模式和陷阱(三)

微服務的反模式和陷阱(三)

前言

微服務是一種 無共享的架構,另一層意思是 “儘量不共享” 模式(share-as-little-as-possible), 因為總有一些 程式碼 會在微服務之間共享。然後如果太過頻繁的使用 共享程式碼 最終會出現 依賴噩夢,這就是共享反模式。

正文

共享反模式

微服務是一種 無共享的架構,另一層意思是 “儘量不共享” 模式(share-as-little-as-possible), 因為總有一些 程式碼 會在微服務之間共享。比如 不提供一個身份驗證的微服務,而是將身份驗證的程式碼打包成一個 jar 檔案:security.jar,保證其它服務都能使用。如果安全檢查是 服務級別

的功能,每個服務接收到請求都會檢查安全性,這種方式可以很好的提高效能。

然後如果太過頻繁的使用最終會出現 依賴噩夢,如圖 1-1 所示,其中每個服務都依賴於 多個自定義共享庫

這種共享級別不僅破壞了每個 服務的限界上下文,而且還引入了幾個問題,包括整體 可靠性變更控制可測試性部署能力

1. 過多依賴

在面向物件的軟體開發過程中,經常會遇到 共享 的問題,特別是從 單一分層 結構遷移到 微服務結構 時,圖 1-2 展示 抽象類和共享,它們最終在多數單塊分層體系結構中共享。

微服務架構 的主要目標就是共享要儘可能的少,這有助於維護服務的 限界上下文,使我們能夠快速的 測試

佈署。服務之間 依賴越強服務隔離 也就 越困難,因此也就越難單獨進行 測試佈署

建立 抽象類介面面向物件程式設計 的最重要做法,那我們如何來處理數百個服務共享的程式碼?

2. 共享程式碼的技術

要避免這個 反模式 的最好辦法就是 程式碼不共享,但是實際工作中總會有一些程式碼需要進行共享,那這些共享程式碼應該放到哪裡呢?

1-3 給了四個最基本的技術:

  • 共享專案
  • 共享庫
  • 複製
  • 服務合併

相關連結

歡迎關注技術公眾號: 零壹技術棧

零壹技術棧

本帳號將持續分享後端技術乾貨,包括虛擬機器基礎,多執行緒程式設計,高效能框架,非同步、快取和訊息中介軟體,分散式和微服務,架構學習和進階等學習資料和文章。