Sidecar模式

一、什麼是Sidecar模式

將應用程序的功能劃分爲單獨的進程,就是Sidecar模式。

Sidecar原意是摩托車的邊車,用到軟件架構中,就是Sidecar應用是連接到父應用,併爲其擴展或增強功能。Sidecar應用於主應用程序鬆耦合。

Sidecar應用場景舉例:假如有6個微服務互相通信,共同完成來確定一個包裹的成本。每個微服務都需要監控、日誌記錄、配置、斷路器等功能,這些功能都是用第三方庫在每個微服務中實現的。

但是,每個微服務都實現一遍監控、日誌記錄、配置、斷路器… 功能,這是合理的嗎?如果每個應用是不同的語言實現,如何合併哪些特定用於.Net, java, Python等語言的第三方庫?

二、使用Sidecar模式的優勢

  • 通過抽象出於功能相關的共同基礎設施到一個不同層,以降低微服務代碼的複雜度
  • 因爲應用不再需要編寫相同的第三方組件配置文件和代碼,從而降低了微服務架構中代碼的複雜度
  • 降低了應用程序和底層平臺的耦合度

三、Sidecar模式是如何工作的

服務網格層可以存在於與應用程序一起運行的Sidecar容器中,每個應用程序旁邊都附有相同的Sidecar副本。

來自單個服務的所有傳入和傳出網絡流量,都流經Sidecar代理。因此,Sidecar能夠管理微服務之間的流量,可收集數據並實施相關策略。

從某個角度來說,應用並不需要了解網路外部的系統,只需要知道附加的Sidecar代理,這就是Sidecar模式:Sidecar工作模式的本質:將網絡依賴抽象爲Sidecar。
在這裏插入圖片描述
在服務網格中,有數據平面和控制平面的概念:

  • 數據平面:職責是處理網格內部服務間的通信,並負責服務發現、流量管理、健康檢查等功能。
  • 控制平面:職責是管理和配置Sidecar代理,以實施策略並收集遙測。

在Kubernates和Istio世界中,可以將Sidecar注入Pod內,Istio使用代用Envoy的Sidecar模型作爲代理。

來自Lyft的Envoy是爲雲原生應用程序設計的最流行的開源代理。Envoy依附着每項服務運行,並以平臺無關的方式提供必要的功能,所有的服務流量都通過Envoy代理流動。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章