1.技術特點
? ? ? ? ?服務網格(ServiceMesh)是分布式應用在微服務軟件架構之上發展起來的新技術,旨在將那些微服務間的連接、安全、流量控制和可觀測等通用功能下沉為平臺基礎設施,實現應用與平臺基礎設施的解耦。這個解耦意味著開發者無需關注微服務相關治理問題而聚焦于業務邏輯本身,提升應用開發效率并加速業務探索和創新。換句話說,因為大量非功能性從業務進程剝離到另外進程中,服務網格以無侵入的方式實現了應用輕量化,圖1展示了服務網格的典型架構。
圖1?服務網格的典型架構?
? ? ? ? 在這張架構圖中,服務A調用服務B的所有請求,都被其下的服務代理截獲,代理服務A完成到服務B的服務發現、熔斷、限流等策略,而這些策略的總控是在控制平面(Control Plane)上配置。
? ? ? ? 從架構上,以開源的Istio服務網格為例,其可以運行在虛擬機或容器中,Istio的主要組件包括Pilot(服務發現、流量管理)、Mixer(訪問控制、可觀測性)、Citadel(終端用戶認證、流量加密);整個服務網格關注連接和流量控制、可觀測性、安全和可運維性。雖然相比較沒有服務網格的場景多輪4個IPC通信的成本,但整體調用的延遲隨著軟硬件能力的提升而并不會帶來顯著的影響,特別是對于白毫秒級別的業務調用而言可以控制在2%以內。從另一方面,服務化的應用并沒有做任何改造,就或得了強大的流量控制能力、服務治理能力、4個9(99.99%)以上高可用、容災和安全等能力,加上業務的橫向擴展能力,整體收益仍然是遠大于額外IPC通信支出。?
2.主要技術
? ? ? ? 2017年發起的服務網格Istio開源項目,清晰定義了數據平面(有開源軟件Envoy承載)和管理平臺(Istio自身的核心能力)。Istio為微服務架構提供了流量管理機制,同時亦為其他增值功能(包括安全性、監控、路由、連接管理與策略等)創造了基礎。
? ? ? ? 除了Istio外,也有Linked、Consul這樣相對小眾的ServiceMesh解決方案,與Istio不同的是,它們在功能上不如Istio完整。
? ? ? ? Linked在數據平面采用了Rust編程語言實現了linked-proxy,控制平面與Istio一樣采用Go語言編寫。最新的性能測試數據顯示,Linked在時延、消耗方面比Istio更具優勢。
? ? ? ? Consul在控制面上直接使用ConsulServer,在數據面上可以選擇性的使用Envoy。
? ? ? ? Conduit作為Kubernetes的超輕量級ServiceMesh,其目標是成為最快、最輕、最簡單且最安全的ServiceMesh。它使用Rust構建了快速、安全的數據平面,用Go開發了簡單強大的控制平面,總體設計圍繞著性能、安全性和可用性進行。它能透明地管理服務之間的通信,提供可測性、可靠性、安全性和彈性的支持。雖然與Linked相仿,數據平面是在應用代碼之外運行的輕量級代理,控制平面是一個高可用的控制器,然而與Linked不同的是,Conduit的設計更加傾向于Kubernetes中的低資源部署。?