1. 程式人生 > >微服務之旅:從Netflix OSS到 Istio Service Mesh

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

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

微服務是具有邊界上下文的鬆散耦合服務,使您能夠獨立開發,部署和擴充套件服務。它還可以定義為構建獨立開發和部署的分散式系統的架構模式。 在微服務架構中處理服務之間的通訊是一項挑戰,因為它們需要在不可靠的網路中相互通訊。

1. 微服務架構的複雜性

分散式應用的一個問題是它們通過網路進行通訊 - 這是不可靠的。因此,您需要以容錯的方式設計您的微服務,並能夠優雅地處理故障。 在您的微服務架構中,可能有很多服務相互通訊。 您需要確保一個服務宕機了,不會導致整個架構崩潰。

微服務架構中有許多元件,因此這會帶來更多的故障點。 故障可能由多種原因引起 - 程式碼中的錯誤和異常,新程式碼的釋出,部署問題,硬體故障,資料中心故障,不良的架構,缺乏單元測試,不可靠的網路通訊,服務的依賴, 等等

 

 

2. Netflix OSS to the Rescue

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

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

Spring Boot可以輕鬆建立獨立的、生產級的基於Spring的應用程式。 閱讀更多有關資訊here.

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

 

 

2.1. Netflix OSS的問題

  • Netflix庫與Java平臺緊密耦合,如果您在Java平臺中開發服務,它們非常適合。但是,在多語言架構中,您需要查詢Netflix之外的庫來處理服務之間的通訊。
  • Netflix庫需要嵌入到每一個微服務中,並附帶業務功能。這會導致應用程式膨脹,因為您需要在所有服務中複製類似的程式碼。
  • 同時具有業務邏輯和基礎架構邏輯會增加整體應用程式的複雜性。
  • 由於您現在需要處理Netflix元件的修補/升級,因此也增加了操作複雜性。
  • 需要額外的工具來提高微服務體系結構的監控性。

 

 

3. 什麼是Sidecar設計模式

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

 

 

3.1. 使用Sidecar模式的好處

  • 通過抽象與基礎架構相關的常見功能到不同的層,降低了微服務程式碼的複雜性。
  • 減少微服務架構中的程式碼重複,因為您不需要在每個微服務中編寫配置程式碼。
  • 提供應用程式程式碼和底層平臺之間的鬆散耦合。

3.2. 如何實現Service Mesh

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

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

 

 

4. Istio 架構

Istio是一個非常受歡迎的Service Mesh框架,它預設使用Lyft的Envoy作為sidecar代理。Sidecar與每個服務例項一起部署,它提供了一個介面來處理服務發現,負載平衡,流量管理,內部服務通訊,監控等功能。Service Mesh為您提供了不再將服務與服務之間的通訊作為你應用程式程式碼的一部分的自由。您可以讓Service Mesh為您處理這種複雜性,而不是使您的微服務具有類似的功能。

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

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

 

 

請參閱我的其他部落格文章,瞭解有關Istio控制平面和資料平面的更多資訊:

  • Istio Service Mesh Control Plane
  • Istio Service Mesh Data Plane

原文: dzone.com/articles/mi…

作者:Samir Behara

譯者:KeepGoingPawn