Service Mesh微服務架構的崛起

SAMIR BEHARAgit

本文將解釋Service Mesh相關概念,爲何雲原生應用須要它,以及這項技術被社區熱烈擁抱、積極採用的緣由。github

絕不誇張地說,微服務已經席捲了整個軟件行業。從Monolith過渡到微服務架構,可讓咱們頻繁、獨立而可靠地部署應用。編程

然而,在微服務架構中,一切都不是綠色的,它必須處理在設計分佈式系統時遇到的相同問題。安全

然而,微服務架構不是萬能的,在設計分佈式系統時會遇到不少有待解決的問題。說到這裏,咱們不妨首先回顧一下關於分佈式計算的8大謬誤——微信

  • 網絡是可靠的(The Network is Reliable)
  • 延遲爲零(Latency is Zero)
  • 帶寬是無限的(Bandwidth is Infinite)
  • 網絡是安全的(The Network is Secure)
  • 拓撲不會改變(Topology does not Change)
  • 有一名管理員(There is one Administrator)
  • 傳輸成本爲零(Transport Cost is Zero)
  • 網絡是同質的(The Network is Homogenous)

在微服務體系結構中,對於網絡的依賴帶來了可靠性問題。隨着服務數量的增長,咱們必須處理它們之間的交互,監視整個系統的健康情況,處理容錯、日誌記錄,處理多個故障點等等。每一個微服務都須要有這些共同的功能,以便服務通訊是平滑和可靠的。可是,若是你要處理幾十上百個微服務,操做難度光是聽起來就有些嚇人。網絡

什麼是服務網格?

Service Mesh能夠定義爲在微服務體系結構中處理服務間通訊的基礎結構層,它減小了與微服務體系結構相關的複雜性,並提供了許多治理功能,如 -架構

  • 負載均衡(Load Balancing)
  • 服務發現(Service Discovery)
  • 健康檢查(Health Check)
  • 身份驗證(Authentication)
  • 流量管理和路由(Traffic Management & Routing)
  • 斷路和故障轉移(Circuit Breaking and Failover Policy)
  • 安全(Security)
  • 監控(Metrics & Telemetry)
  • 故障注入(Fault Injection)

爲何須要Service Mesh?

在微服務架構中,處理服務到服務的通訊是企業IT的一大挑戰。大多數時候,咱們須要依賴第三方庫或者組件來提供服務發現、負載均衡、斷路器、監控等功能。像Netflix這樣的公司,他們開發了本身的庫,好比Hystrix for Circuit Breaker、Eureka for Service Discovery、Ribbon for Load balanced等,在其組織中獲得了普遍的使用。負載均衡

然而,這些組件須要在應用代碼中進行配置,並且語言不一樣,實現方式策略也會有所不一樣。在升級這些外部組件時,咱們須要更新應用、驗證並部署全部改動。如此便產生了一個問題,咱們的應用代碼編程了業務和這些附加配置混合體。這種緊密耦合增長了整個應用的複雜性——開發人員如今還須要瞭解這些組件是如何配置的,以便在遇到任何問題時可以排除故障。運維

Service Mesh適時出現,將複雜性從應用中分離了出來,並將其放入服務代理(service proxy)代爲處理。這些服務代理提供瞭如流量控制、斷路、服務發現、身份驗證、監控、安全性等等功能特性。那麼對於應用來講,只須要關心業務功能的實現便可。分佈式

假設在咱們的微服務體系結構中,您有5個服務相互通訊。與其在每一個微服務中構建配置、路由、遙測、日誌記錄、斷路等常見的必要功能,不如將其抽象爲一個單獨的組件——這裏稱爲「服務代理」(service proxy)。

隨着Service Mesh的引入,責任的劃分變得清晰,開發人員的生活也更加輕鬆——若是存在問題,開發人員能夠根據應用程序或網絡相關的緣由,輕鬆地肯定根源。

Service Mesh是如何實現的?

要實現Service Mesh,能夠將代理與服務一塊兒部署,該模式被稱爲sidecar。

Sidecars抽象了應用程序的複雜性,處理了諸如服務發現、流量管理、負載平衡、線路中斷等功能。

Lyft的Envoy是目前很是流行的雲原生應用開源代理。特使在每一個服務旁運行,並以平臺無關的方式提供必要的特性。全部到咱們的服務的流量都經過特使代理。

而Istio是一個鏈接、管理和保護微服務的開放平臺。它在Kubernetes社區很是流行,並被普遍採用。

在這一點上,Istio是服務網格的最佳實現之一,它使咱們可以在不深刻了解底層基礎設施的狀況下部署微服務。

開源PaaS Rainbond在v3.6.0版本中加入了Service Mesh開箱即用的特性,主要特色包括業務代碼無入侵、跨語言&跨協議、支持主流微服務架構、經過插件式擴展來實現治理功能等。


關於Rainbond

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

相關文章
相關標籤/搜索