什么是 Sidecar 模式
將應(yīng)用程序的組件部署到單獨的進程或容器中以提供隔離和封裝怯晕,這種模式被視為
Sidecar
模式泽论。
Sidecar
設(shè)計模式允許你為應(yīng)用程序添加許多功能茂装,而無需額外第三方組件的配置和代碼赵抢。Sidecar
還與父應(yīng)用程序共享相同的生命周期凤跑,并與父應(yīng)用程序一起創(chuàng)建和退出嫩舟。
微服務(wù)生態(tài)系統(tǒng)中的Sidecar設(shè)計模式
sidecar
注
:Sidecar:(摩托車的)跨斗氢烘,邊車
Sidecar
服務(wù)不一定是應(yīng)用程序的一部分,而是與之相關(guān)聯(lián)家厌。它適用于父應(yīng)用程序的任何位置播玖,與父應(yīng)用完全松耦合。Sidecar支持與主應(yīng)用程序一起部署的進程或服務(wù)饭于。這就像是如圖所示的邊三輪摩托車那樣蜀踏,將邊車安裝在一輛摩托車上维蒙,就變成了邊三輪摩托車。每輛邊三輪摩托車都有自己的邊車果覆。類似同樣的方式颅痊,邊車服務(wù)共享其父應(yīng)用程序的主機。對于應(yīng)用程序的每個實例局待,邊車的實例被部署并與其一起托管斑响。
使用Sidecar
模式的優(yōu)勢
- 抽象出與功能相關(guān)的共同基礎(chǔ)設(shè)施到一個不同層,降低了微服務(wù)代碼的復(fù)雜度
- 輔助工具在運行時環(huán)境和編程語言方面與其主應(yīng)用程序無關(guān)燎猛,因此無需為每種語言開發(fā)一個輔助工具
- Sidecar靠近主應(yīng)用程序恋捆,因此它們之間的通信沒有明顯的延遲
- 邊車可以訪問與主應(yīng)用程序相同的資源
注
:Sidecar
模式通常與容器一起使用,稱為Sidecar
容器
使用場景
- 主應(yīng)用程序使用不同種類的語言和框架重绷。位于sidecar服務(wù)中的組件可由使用不同框架以不同語言編寫的應(yīng)用程序使用
- 組件由遠程團隊或其他組織擁有
- 組件或功能必須與應(yīng)用程序位于同一主機上
- 需要與主應(yīng)用程序共享整個生命周期但可以獨立更新的服務(wù)
- 需要對特定資源或組件的資源限制進行細粒度的控制沸停。例如,您可能想限制特定組件使用的內(nèi)存量昭卓。您可以將組件部署為輔助工具愤钾,并獨立于主應(yīng)用程序管理內(nèi)存使用情況
Sidecar
模式工作流程
Sidecar
是容器應(yīng)用模式的一種,也是在Service Mesh
中發(fā)揚光大的一種模式候醒,服務(wù)網(wǎng)格層可以存在于與應(yīng)用程序一起運行的Sidecar
容器中能颁。每個應(yīng)用程序旁邊都附有相同Sidecar
的副本。
來自單個服務(wù)的所有傳入和傳出網(wǎng)絡(luò)流量都流經(jīng)Sidecar
代理倒淫。 因此伙菊,Sidecar
能夠管理微服務(wù)之間的流量,收集遙測數(shù)據(jù)并實施相關(guān)策略敌土。從某種意義上說镜硕,該服務(wù)不了解整個網(wǎng)絡(luò),只知道附加的Sidecar
代理返干。這實際上就是Sidecar
模式如何工作的本質(zhì)——將網(wǎng)絡(luò)依賴性抽象為 Sidecar
兴枯。
在服務(wù)網(wǎng)格中有數(shù)據(jù)平面和控制平面的概念:
- 數(shù)據(jù)平面
數(shù)據(jù)平面的職責是處理網(wǎng)格內(nèi)部服務(wù)之間的通信,并負責服務(wù)發(fā)現(xiàn)矩欠、負載均衡财剖、流量管理、健康檢查等功能 - 控制平面
控制平面的職責是管理和配置 Sidecar 代理以實施策略并收集遙測