在這篇文章中,咱們從Netflix開始,經過Envoy和Istio的崛起,快速瀏覽微服務的歷史.html
微服務是具備邊界上下文的鬆散耦合服務,使您可以獨立開發,部署和擴展服務。它還能夠定義爲構建獨立開發和部署的分佈式系統的架構模式。 在微服務架構中處理服務之間的通訊是一項挑戰,由於它們須要在不可靠的網絡中相互通訊。git
分佈式應用的一個問題是它們經過網絡進行通訊 - 這是不可靠的。所以,您須要以容錯的方式設計您的微服務,並可以優雅地處理故障。 在您的微服務架構中,可能有不少服務相互通訊。 您須要確保一個服務宕機了,不會致使整個架構崩潰。github
微服務架構中有許多組件,所以這會帶來更多的故障點。 故障可能由多種緣由引發 - 代碼中的錯誤和異常,新代碼的發佈,部署問題,硬件故障,數據中心故障,不良的架構,缺少單元測試,不可靠的網絡通訊,服務的依賴, 等等spring
Netflix是最先採用微服務的公司之一。 爲了跟上其增加速度,Netflix決定從龐大而單一的數據中心轉向基於雲的微服務架構,以實現高可用,大規模和速度。基於其成功案例,Netflix開源了許多工具/技術,爲微服務架構提供支持。這些工具和組件已經成爲許多企業從單體應用架構到微服務架構的驅動力。設計模式
Netflix OSS是Netflix開源的一組庫和框架,用於解決設計大規模分佈式系統的問題。 閱讀有關Netflix開源軟件中心的更多信息here.安全
Spring Boot能夠輕鬆建立獨立的、生產級的基於Spring的應用程序。 閱讀更多有關信息here.網絡
經過一些簡單的註釋,您能夠快速啓用和配置應用程序內的通用模塊,並使用通過實戰考驗的Netflix組件構建大型分佈式系統。 提供的模塊包括服務發現(Eureka), 斷路器 (Hystrix), 智能路由(Zuul)和客戶端負載平衡(Ribbon)。架構
sidecar 設計模式在雲原生社區中愈來愈受歡迎並獲得更普遍的採用。 構建具備高度可擴展性,彈性,安全性和可監控性的微服務架構具備挑戰性。 Service Mesh架構的發展已經改變了遊戲規則。它將與微服務架構相關的複雜性轉移到單獨的基礎架構層,並提供許多功能,如負載平衡,服務發現,流量管理,斷路,遙測,故障注入等。負載均衡
要實現服務網格,您能夠在服務旁邊部署代理。這也被稱爲Sidecar
模式.。Sidecars從應用程序中抽象出複雜性,並處理服務發現,流量管理,負載平衡,斷路器等功能。框架
來自Lyft的Envoy是爲雲原生應用程序設計的最流行的開源代理。 Envoy與每項服務並行運行,並以平臺無關的方式提供必要的功能。服務的全部流量都經過Envoy代理流通。
Istio是一個很是受歡迎的Service Mesh框架,它默認使用Lyft的Envoy做爲sidecar代理。Sidecar與每一個服務實例一塊兒部署,它提供了一個界面來處理服務發現,負載平衡,流量管理,內部服務通訊,監控等功能。Service Mesh爲您提供了再也不將服務與服務之間的通訊做爲你應用程序代碼的一部分的自由。您可讓Service Mesh爲您處理這種複雜性,而不是使您的微服務具備相似的功能。
Istio Service Mesh由兩個主要組件組成:
請參閱個人其餘博客文章,瞭解有關Istio控制平面和數據平面的更多信息:
做者:Samir Behara