邊車模式也叫搭檔模式。
邊車模式的設計思想是將控制和邏輯分離,常用于分布式架構中的邏輯和控制分離設計。邊車來實現這些與業務邏輯沒有關系的控制功能。
以邊車的方式,對應用服務沒有侵入性,并且不用受到應用服務的語言與技術的限制,可以做到控制和邏輯的分開升級和部署。
很多系統是用C語言寫的,因為沒有分布式系統,所以邊車的方式就可以進行低風險改造。
一、邊車的注意事項
邊車模式著重需要關注控制和邏輯的分離、服務調用中上下文的問題。
1、進程間通訊機制是這個設計模式的重點,千萬不要使用任何對應用服務有侵入的方式
2、服務協議方面,也請使用標準統一的方式。這里有兩層協議,一個是 Sidecar 到 service 的內部協議,另一個是 Sidecar 到遠端 Sidecar 或 service 的外部協議。對于內部協議,需要盡量靠近和兼容本地 service 的協議;對于外部協議,需要盡量使用更為開放更為標準的協議。但無論是哪種,都不應該使用與語言相關的協議
3、使用這樣的模式,需要在服務的整體打包、構建、部署、管控、運維上設計好。使用 Docker 容器方面的技術可以幫助你全面降低復雜度
4、Sidecar 中所實現的功能應該是控制面上的東西,而不是業務邏輯上的東西,所以請盡量不要把業務邏輯設計到 Sidecar 中
5、小心在 Sidecar 中包含通用功能可能帶來的影響。例如,重試操作,這可能不安全,除非所有操作都是冪等的。
6、另外,我們還要考慮允許應用服務和 Sidecar 的上下文傳遞的機制。 例如,包含 HTTP 請求標頭以選擇退出重試,或指定最大重試次數等等這樣的信息交互。或是 Sidecar 告訴應用服務限流發生,或是遠程服務不可用等信息,這樣可以讓應用服務和 Sidecar 配合得更好
二、邊車模式使用場景
1.對老應用系統的改造和擴展
2.對多種語言混合出來的分布式服務系統進行管理和擴展
3.應用服務由不同的供應商提供
4.把控制和邏輯分離,標準化控制面上的動作和技術,從而提高系統整體的穩定性和可用性。也有利于分工。