在過去幾個月裏,Service Mesh是行業內毋庸置疑的焦點。關於Service Mesh、關於軟件架構將來的文章觀點,圍繞着不一樣的技術供應商而高度分化,不過有一點共通的事,對於如何在企業中使用API的快速轉換,以及這對於咱們流量的拓撲意味着什麼。github
服務API主要是做爲將組織外部開發人員與內部系統鏈接起來的邊緣接口,以及將這些內部系統(微服務)綁定到功能總體的「粘合劑」存在的。所以,面向微服務體系結構不可避免會出現數據中心內部通訊增長的狀況。tongguo的不可避免的結果之一是數據中心內的 內部通訊將增長。Service Mesh做爲一種潛在的解決方案出現了,它經過提供一個不一樣的框架來部署現有技術,從而解決了東西部流量增長帶來的挑戰。編程
正如微服務是一種模式而不是一種特定的技術同樣,Service Mesh也是一種模式。區分這二者聽起來比實際要複雜得多。若是咱們從面向對象編程(OOP)的角度來考慮這個問題,一個模式描述的是接口,而不是實現。微信
在微服務的背景下,Service Mesh部署模式可以經過sidecar代理,更好地管理東西流量。當咱們拆分系統並使用微服務構建新產品時,咱們流量的拓撲結構也正在從外部爲主轉向內部流量的持續增加。數據中內心的東西通流量增加,緣於咱們用網絡調用替換過去的函數調用,這意味着咱們的微服務必須經過網絡來相互通訊。但咱們都知道,網絡有多是不可靠的。網絡
經過使用不一樣的部署模式,Service Mesh但願解決東西流量增長帶來的挑戰。雖然對於傳統的南北流量來講,100ms的中間件處理延遲雖然並不理想,但也不是不能接受,不過在東西流量的微服務架構體系中,這樣的延遲就不能容忍了。緣由是服務之間從東到西的流量增長會增長延遲,當跨不一樣服務的API請求鏈被執行和返回時,可能會致使700ms的延遲。架構
爲了減小這種延遲,引入了與微服務進程一塊兒運行的sidecar代理,以刪除網絡中的額外跳轉。Sidecar代理,對應於咱們請求執行路徑上的數據平面,也提供了更好的彈性,由於咱們再也不有單點故障。值得注意的是,sidecar代理承擔了爲咱們的微服務的每一個實例都有一個代理實例的成本,這須要一個很小的佔用空間,以最小化資源損耗。框架
從功能的角度來看,API管理產品已經提供了多年來所提供的Service Mesh。諸如可觀察性,網絡錯誤處理,健康檢查等功能是API管理的標誌。這些功能自己並不構成任何新穎的功能,但做爲一種模式,Service Mesh引入了在咱們的體系結構中部署這些功能的新方法。運維
爲何大多數傳統的API管理解決方案不容許這種新的部署選項?由於他們「出生在一個單一的世界」。ide
事實證實,Docker和Kubernetes出現以前構建的API管理解決方案自己就是一個總體,並無被設計成在新興的容器生態系統中有效工做。傳統API管理解決方案所提供的重量級運行時和較慢的性能在傳統的邊緣API用例中是能夠接受的,可是在微服務體系結構中,延遲會隨着時間的推移而經過增長東西方向的流量活動而增長。從本質上講,傳統的API管理解決方案最終都過於重量級、難以自動化,而且太慢,沒法有效地協調與微服務固有的不斷增長的通訊。函數
因爲開發人員理解這一點,在容器出現以前誕生的遺留API管理解決方案引入了他們所謂的「微網關」來處理東西流量,避免重寫他們現有的、臃腫的、單一的網關解決方案。問題是,這些微網關雖然更輕量,但仍然須要遺留解決方案與它們一塊兒運行,以便執行策略強制。這不只意味着在堆棧中保持原來的重型依賴關係,還意味着每一個請求之間的延遲增長。這就不難理解,爲何Service Mesh感受上像是一個全新的類別,由於過去的API管理方案已經沒法支持需求了。
當咱們在feature-set背景下理解Service Mesh時,咱們會發現它與傳統API管理解決方案在南北流量方面所作的工做並無太大的不一樣。大多數網絡和可見性功能在南北流量和東西流量用例中都是有用的,改變的是部署模式,它使咱們可以將網關/代理做爲輕量級、快速的sidecar容器運行,而不是底層的特性集。
Service Mesh提供的特性集是API管理解決方案多年來一直提供的特性集的一個子集,特別是在使網絡可靠、服務發現和可觀察性方面。Service Mesh的創新之處在於它的部署模式,它可以運行與輕量級sidecar進程/容器相同的特性集。咱們的行業經常會混淆——有時還會推進——一種特定模式等同於底層技術的觀點,就像不少關於Service Mesh的討論同樣。
Rainbond是一款以應用爲中心的開源PaaS,由好雨基於Docker、Kubernetes等容器技術自主研發,可做爲公有云或私有云環境下的應用交付平臺、DevOps平臺、自動化運維平臺和行業雲平臺,或做爲企業級的混合雲多雲管理工具、Kubernetes容器管理工具或Service Mesh微服務架構治理工具。