Sidecar模式:下一代微服務架構的關鍵

Sidecar設計模式正在收到愈來愈多的關注和採用。做爲Service Mesh的重要要素,Sidecar模式對於構建高度高度可伸縮、有彈性、安全且可便於監控的微服務架構系統相當重要。而Service Mesh也已經被證實,正在改變企業IT的「遊戲規則」,它下降了與微服務架構相關的複雜性,並提供了負載平衡、服務發現、流量管理、電路中斷、遙測、故障注入等功能特性。git

什麼是Sidecar模式?

Sidecar模式是一種將應用功能從應用自己剝離出來做爲單獨進程的方式。該模式容許咱們嚮應用無侵入添加多種功能,避免了爲知足第三方組件需求而嚮應用添加額外的配置代碼。github

就像邊車加裝在摩托車上同樣,在軟件架構中,sidecar附加到主應用,或者叫父應用上,以擴展/加強功能特性,同時Sidecar與主應用是鬆耦合的。設計模式

舉個例子,假設如今有6個相互通訊的微服務,每一個微服務都須要具備可觀察性、監控、日誌記錄、配置、斷路器等功能,而全部這些功能都是在微服務中使用一些第三方庫實現的。安全

這樣一組服務的實際狀況可能會很是複雜,增長了應用的總體複雜性,尤爲是當每一個微服務用不一樣的語言編寫、使用不一樣的基於.net、Java、Python等語言的第三方庫……微信

Sidecar模式的好處

  • 經過將公用基礎設施相關功能抽象到不一樣的層來下降微服務的代碼複雜性
  • 因爲咱們不須要在每一個微服務中編寫配置代碼,所以減小了微服務架構中的代碼重複
  • P應用和底層平臺之間實現了鬆耦合

Sidecar模式如何工做

Service Mesh層能夠位於應用程序側的Sidecar容器中,同一sidecar的多個副本能夠附在每一個應用旁。網絡

來自單個服務的全部傳入和傳出網絡流量均經過Sidecar代理,完成微服務之間的流量管理、遙測數據收集以及策略的執行等等。從某種意義上來講,服務對於網絡是無感知的,只知道所附加的sidecar代理。這就是Sidecar模式工做的本質,它將網絡依賴抽象成了Sidecar。架構

在Service Mesh中,咱們須要瞭解Data Plane和Control Plane兩個概念——負載均衡

  • Data Plane的做用是處理網格內服務間的通訊,並完成服務發現、負載均衡、流量管理、健康檢查等功能;數據平面的做用是處理網格內服務之間的通訊,並負責實現服務發現、負載平衡、流量管理、健康檢查等功能;
  • Control Plane的做用是管理和配置Sidecar來執行策略並收集遙測(telemetry);

Envoy

在開源PaaS Rainbond中,提供了「基於envoy的7層網絡治理插件」,Envoy自己能夠原生運行於Rainbond插件體系之中,用戶也能夠選擇和實現其餘插件,Rainbond運行時自己提供了完善的基礎服務。例如Rainbond根據Istio的成熟程度,採用部分集成的策略,進行了Mixer集成(智能控制策略)和Citadel集成(安全通訊集成)。運維

其中由Lyft開源的Envoy是爲雲原生應用設計的代理,在服務旁運行,以平臺無關的方式提供必要的特性,全部到服務的流量都經過Enovy代理。ide

總結來講,在從一體化架構向微服務架構的轉型讓咱們能夠相對獨立、大規模地部署應用,而在容器環境中,Sidecar模式能夠很好地兼容,幫助咱們下降微服務架構複雜性,更好地實現服務發現、流量管理、負載均衡、路由。

  • END -

關於Rainbond

Rainbond是一款以應用爲中心的開源PaaS,由好雨基於Docker、Kubernetes等容器技術自主研發,可做爲公有云或私有云環境下的應用交付平臺、DevOps平臺、自動化運維平臺和行業雲平臺,或做爲企業級的混合雲多雲管理工具、Kubernetes容器管理工具或Service Mesh微服務架構治理工具。
相關文章
相關標籤/搜索