微服務之旅:從Netflix OSS到 Istio Service Mesh

在這篇文章中,咱們從Netflix開始,經過Envoy和Istio的崛起,快速瀏覽微服務的歷史.html

微服務是具備邊界上下文的鬆散耦合服務,使您可以獨立開發,部署和擴展服務。它還能夠定義爲構建獨立開發和部署的分佈式系統的架構模式。 在微服務架構中處理服務之間的通訊是一項挑戰,由於它們須要在不可靠的網絡中相互通訊。git

1. 微服務架構的複雜性

分佈式應用的一個問題是它們經過網絡進行通訊 - 這是不可靠的。所以,您須要以容錯的方式設計您的微服務,並可以優雅地處理故障。 在您的微服務架構中,可能有不少服務相互通訊。 您須要確保一個服務宕機了,不會致使整個架構崩潰。github

微服務架構中有許多組件,所以這會帶來更多的故障點。 故障可能由多種緣由引發 - 代碼中的錯誤和異常,新代碼的發佈,部署問題,硬件故障,數據中心故障,不良的架構,缺少單元測試,不可靠的網絡通訊,服務的依賴, 等等spring

file

2. Netflix OSS to the Rescue

Netflix是最先採用微服務的公司之一。 爲了跟上其增加速度,Netflix決定從龐大而單一的數據中心轉向基於雲的微服務架構,以實現高可用,大規模和速度。基於其成功案例,Netflix開源了許多工具/技術,爲微服務架構提供支持。這些工具和組件已經成爲許多企業從單體應用架構到微服務架構的驅動力。設計模式

Netflix OSS是Netflix開源的一組庫和框架,用於解決設計大規模分佈式系統的問題。 閱讀有關Netflix開源軟件中心的更多信息here.安全

Spring Boot能夠輕鬆建立獨立的、生產級的基於Spring的應用程序。 閱讀更多有關信息here.網絡

經過一些簡單的註釋,您能夠快速啓用和配置應用程序內的通用模塊,並使用通過實戰考驗的Netflix組件構建大型分佈式系統。 提供的模塊包括服務發現(Eureka), 斷路器 (Hystrix), 智能路由(Zuul)和客戶端負載平衡(Ribbon)。架構

file

2.1. Netflix OSS的問題

  • Netflix庫與Java平臺緊密耦合,若是您在Java平臺中開發服務,它們很是適合。可是,在多語言架構中,您須要查找Netflix以外的庫來處理服務之間的通訊。
  • Netflix庫須要嵌入到每個微服務中,並附帶業務功能。這會致使應用程序膨脹,由於您須要在全部服務中複製相似的代碼。
  • 同時具備業務邏輯和基礎架構邏輯會增長總體應用程序的複雜性。
  • 因爲您如今須要處理Netflix組件的修補/升級,所以也增長了操做複雜性。
  • 須要額外的工具來提升微服務體系結構的監控性。

file

3. 什麼是Sidecar設計模式

sidecar 設計模式在雲原生社區中愈來愈受歡迎並獲得更普遍的採用。 構建具備高度可擴展性,彈性,安全性和可監控性的微服務架構具備挑戰性。 Service Mesh架構的發展已經改變了遊戲規則。它將與微服務架構相關的複雜性轉移到單獨的基礎架構層,並提供許多功能,如負載平衡,服務發現,流量管理,斷路,遙測,故障注入等。負載均衡

file

3.1. 使用Sidecar模式的好處

  • 經過抽象與基礎架構相關的常見功能到不一樣的層,下降了微服務代碼的複雜性。
  • 減小微服務架構中的代碼重複,由於您不須要在每一個微服務中編寫配置代碼。
  • 提供應用程序代碼和底層平臺之間的鬆散耦合。

3.2. 如何實現Service Mesh

要實現服務網格,您能夠在服務旁邊部署代理。這也被稱爲Sidecar模式.。Sidecars從應用程序中抽象出複雜性,並處理服務發現,流量管理,負載平衡,斷路器等功能。框架

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

file

4. Istio 架構

Istio是一個很是受歡迎的Service Mesh框架,它默認使用Lyft的Envoy做爲sidecar代理。Sidecar與每一個服務實例一塊兒部署,它提供了一個界面來處理服務發現,負載平衡,流量管理,內部服務通訊,監控等功能。Service Mesh爲您提供了再也不將服務與服務之間的通訊做爲你應用程序代碼的一部分的自由。您可讓Service Mesh爲您處理這種複雜性,而不是使您的微服務具備相似的功能。

Istio Service Mesh由兩個主要組件組成:

  • 控制面板的職責是管理和配置sidecar代理以實施策略並收集遙測數據。
  • 數據面板的職責是處理服務之間的通訊,並負責服務發現,負載均衡,流量管理,健康檢查等功能。

file

請參閱個人其餘博客文章,瞭解有關Istio控制平面和數據平面的更多信息:

原文: dzone.com/articles/mi…

做者:Samir Behara

譯者:KeepGoingPawn

相關文章
相關標籤/搜索