自從2016年Service Mesh(服務(wù)網(wǎng)格)的概念被提出以來,短短幾年時間就受到了廣大程序員們的熱烈歡迎?為什么Service Mesh這么容易被接受呢?原因很簡單,那就是它切中了早期微服務(wù)架構(gòu)的痛點(diǎn)。從而極大地解放了生產(chǎn)力。要理解它是如何解決了程序員們的生產(chǎn)力的,我們先從早期微服務(wù)框架的痛點(diǎn)開始說起。
(資料圖)
早期的很多系統(tǒng)都是單體服務(wù)的,就是把所有組件都塞在一個應(yīng)用內(nèi),但是隨著軟件復(fù)雜性和并發(fā)用戶數(shù)的急劇增加,單體應(yīng)用無論是從開發(fā)效率和運(yùn)維管理方面都已經(jīng)不能適應(yīng)時代的發(fā)展了。于是把各種服務(wù)獨(dú)立出來,每個服務(wù)只關(guān)注自己的業(yè)務(wù)領(lǐng)域,與其它服務(wù)松耦合的微服務(wù)就應(yīng)運(yùn)而生了。
微服務(wù)架構(gòu)具有以下幾個優(yōu)點(diǎn):
1、單?職責(zé):拆分后的單個微服務(wù),通常只負(fù)責(zé)單個高內(nèi)聚自閉環(huán)功能,因此很易于開發(fā)、理解和維護(hù)。
2、架構(gòu)靈活:不同微服務(wù)應(yīng)用之間在技術(shù)選型層面幾乎是獨(dú)立的,可以?由選擇最適合的技術(shù)棧。
3、部署隔離:相比巨無霸單體應(yīng)用,單個微服務(wù)應(yīng)用的代碼和產(chǎn)物體積大大減少,更容易持續(xù)集成和快速部署;同時,通過進(jìn)程級別的隔離,也不再像單體應(yīng)用一樣只能同生共死,故障隔離效果顯著提升。
4、獨(dú)?擴(kuò)展:單體應(yīng)用時代,某個模塊如果存在資源瓶頸(e.g. CPU/內(nèi)存),只能跟隨整個應(yīng)用一起擴(kuò)容,白白浪費(fèi)很多資源。微服務(wù)化后,擴(kuò)展的粒度細(xì)化到了微服務(wù)級別,可以更精確地按需獨(dú)立擴(kuò)展。
但是,微服務(wù)帶來很多優(yōu)點(diǎn)的時候,也出現(xiàn)了很多新的問題,最大的問題,就在于服務(wù)間通信的問題,具體來講,就是如下幾個問題:
如何找到服務(wù)的提供??如何保證遠(yuǎn)程調(diào)?的可靠性?如何降低服務(wù)調(diào)?的延遲?如何保證服務(wù)調(diào)?的安全性?于是,為了解決這些問題,微服務(wù)技術(shù)特有的通信語義就出現(xiàn)了,如熔斷策略、負(fù)載均衡、服務(wù)發(fā)現(xiàn)、認(rèn)證和授權(quán)、quota限制、trace和監(jiān)控等等,服務(wù)根據(jù)業(yè)務(wù)需求來實(shí)現(xiàn)一部分所需的通信語義。
但是,這樣做的問題也非常明顯,那就是,在這個過程中,開發(fā)人員需要花費(fèi)大量的時間去編寫與業(yè)務(wù)功能無關(guān)的代碼。雖然框架本身屏蔽了分布式系統(tǒng)通信的一些通用功能實(shí)現(xiàn)細(xì)節(jié),但開發(fā)者卻要花更多精力去掌握和管理復(fù)雜的框架本身,在實(shí)際應(yīng)用中,去追蹤和解決框架出現(xiàn)的問題也絕非易事。
另外,開發(fā)框架通常只支持一種或幾種特定的語言,沒有框架支持的語言編寫的服務(wù),很難融入面向微服務(wù)的架構(gòu)體系,想因地制宜地用多種語言實(shí)現(xiàn)架構(gòu)體系中的不同模塊也很難做到。同時框架以lib庫的形式和服務(wù)聯(lián)編,復(fù)雜項目依賴時的庫版本兼容問題非常棘手框架庫的升級也無法對服務(wù)透明,服務(wù)會因?yàn)楹蜆I(yè)務(wù)無關(guān)的lib庫升級而被迫升級。
于是,為了解決這些問題,Service Mesh誕生了。
二、Service Mesh:微服務(wù)時代的TCP/IP協(xié)議Serice Mesh的誕生,就是為了將微服務(wù)時代的通信語義剝離出來,從而使得微服務(wù)本身更加關(guān)注業(yè)務(wù)邏輯,它為每個微服務(wù)提供了一個代理,而這個代理如同TCP/IP協(xié)議一樣,把微服務(wù)時代所需要的通信語義放在一個層面完成,從而使得業(yè)務(wù)開發(fā)者們從繁重的工作中解放出來。而這個代理,就是大名鼎鼎的Sidecar(邊車)模式了。
Sidecar原意是指從二戰(zhàn)時開始被廣泛使用起來的挎斗摩托車。這個名字也是一種著名的飾以紅櫻桃的混合雞尾酒,同時也指在三人以上多人運(yùn)動中,在旁邊處于輔助地位或者拍攝的人。
在Service Mesh中,監(jiān)視、日志、限流、熔斷、服務(wù)注冊、協(xié)議轉(zhuǎn)換、冪等……" 這些功能,其實(shí)都是大同小異,是完全可以做成標(biāo)準(zhǔn)化的組件和模塊的。在這種情況下,邊車就像一個微服務(wù)的 Agent,這個服務(wù)所有對外的進(jìn)出通訊都通過這個 Agent 來完成。這樣,我們就可以在這個 Agent 上做很多文章了。
這樣,所有的微服務(wù)通過Sidecar連接起來之后,就像一個網(wǎng)格一樣,這也是Service Mesh名稱的由來。
那么,Sidecar具體的作用是什么呢?我們以Service Mesh概念的提出者Buoyant出品的Linkerd為例,來解析一下邊車模式的服務(wù)流程。在Linkerd里面,一個服務(wù)請求的處理流程包括以下幾個部分:
1、動態(tài)路由:根據(jù)上游服務(wù)請求參數(shù),確定下游目標(biāo)服務(wù);除了常規(guī)的服務(wù)路由策略,Linkerd還可以通過這一層動態(tài)路由能力,支持灰度發(fā)布、A/B測試、環(huán)境隔離等非常有價值的場景。
2、服務(wù)發(fā)現(xiàn):確定目標(biāo)服務(wù)后,下一步就是獲取對應(yīng)的實(shí)例的地址列表(e.g. 查詢service registry)。
3、負(fù)載均衡:如果列表中有多個地址,Linkerd會通過負(fù)載均衡算法(e.g. Least Loaded、Peak EWMA)選擇其中?個合適的低延遲實(shí)例。
4、執(zhí)行請求:發(fā)送請求到上一步所選擇的實(shí)例,并記錄延遲和響應(yīng)結(jié)果。
5、重試處理:如果請求未響應(yīng),則選擇另?個實(shí)例重試(前提:Linkerd知道該請求是冪等的)。
6、熔斷處理:如果發(fā)往某個實(shí)例的請求經(jīng)常失敗,則主動從地址列表中剔除該實(shí)例。
7、超時處理:如果請求超期(在給定的deadline時間點(diǎn)之前仍未返回),則主動返回失敗響應(yīng)。
8、可觀測性:Linkerd會持續(xù)收集和上報上述各種行為數(shù)據(jù),包括Metrics和Tracing。
而這些服務(wù),就類似于TCP服務(wù)提供的網(wǎng)絡(luò)傳輸處理邏輯了,類似于TCP服務(wù)解決了網(wǎng)絡(luò)傳輸中通用的流量控制問題,將技術(shù)棧下移,從服務(wù)的實(shí)現(xiàn)中抽離出來,成為操作系統(tǒng)網(wǎng)絡(luò)層的一部分一樣,Service Mesh也將微服務(wù)間通信所需要的通用功能剝離出來,將技術(shù)棧單獨(dú)抽出一層,從而成為分布式系統(tǒng)的一部分。
三、主流Service Mesh實(shí)現(xiàn)目前主流的Service Mesh實(shí)現(xiàn)包括Linkerd、Envoy、Istio、Conduit等。
X 關(guān)閉
X 關(guān)閉
- 當(dāng)前報道:漳州市醫(yī)院高新院區(qū)腦血管病中心將投用
- 世界要聞:石獅一企業(yè)產(chǎn)品通過第三批省級制造業(yè)單項冠軍產(chǎn)品復(fù)核
- 當(dāng)前熱點(diǎn)-漳州實(shí)行師德一票否決制
- 【環(huán)球播資訊】紀(jì)錄片《漳州市九龍江船廟進(jìn)發(fā)宮“迎王送船”年祭》完成拍攝
- 天天熱推薦:查問題、督落實(shí)、促提升 石獅疫情防控督查走進(jìn)鎮(zhèn)街一線
- 熱推薦:石獅市人大常委會視察重點(diǎn)建議辦理情況
- 天天觀焦點(diǎn):石獅14個村1個鎮(zhèn)入選第二批省級鄉(xiāng)村治理示范
- 15G資費(fèi)不大降!三大運(yùn)營商誰提供的5G網(wǎng)速最快?中國信通院給出答案
- 2聯(lián)想拯救者Y70發(fā)布最新預(yù)告:售價2970元起 迄今最便宜的驍龍8+旗艦
- 3亞馬遜開始大規(guī)模推廣掌紋支付技術(shù) 顧客可使用“揮手付”結(jié)賬
- 4現(xiàn)代和起亞上半年出口20萬輛新能源汽車同比增長30.6%
- 5如何讓居民5分鐘使用到各種設(shè)施?沙特“線性城市”來了
- 6AMD實(shí)現(xiàn)連續(xù)8個季度的增長 季度營收首次突破60億美元利潤更是翻倍
- 7轉(zhuǎn)轉(zhuǎn)集團(tuán)發(fā)布2022年二季度手機(jī)行情報告:二手市場“飄香”
- 8充電寶100Wh等于多少毫安?鐵路旅客禁止、限制攜帶和托運(yùn)物品目錄
- 9好消息!京東與騰訊續(xù)簽三年戰(zhàn)略合作協(xié)議 加強(qiáng)技術(shù)創(chuàng)新與供應(yīng)鏈服務(wù)
- 10名創(chuàng)優(yōu)品擬通過香港IPO全球發(fā)售4100萬股 全球發(fā)售所得款項有什么用處?