清晰明了!企業(yè)微服務(wù)治理的解決思路
作者:行云創(chuàng)新 Synuwxy
背景
隨著業(yè)務(wù)需求的日漸復(fù)雜以及產(chǎn)品迭代節(jié)奏的不斷加快,業(yè)務(wù)開發(fā)部門面臨著前所未有的壓力。為了搶占先機,用最快的速度準(zhǔn)確把握用戶需求的變化,優(yōu)化開發(fā)出來的業(yè)務(wù)產(chǎn)品,微服務(wù)(MicroServices)架構(gòu)技術(shù)在各大企業(yè)不斷生根發(fā)芽。
微服務(wù)架構(gòu)可以極大的降低業(yè)務(wù)的復(fù)雜性。開發(fā)和部署相對大單體架構(gòu)而言更加簡單,單個微服務(wù)的功能可以更快地更改,啟動和調(diào)試單個微服務(wù)的時間成本相比于單體應(yīng)用也大大減少。微服務(wù)治理也成為了困擾各大企業(yè)的難題。
普遍而言,微服務(wù)架構(gòu)具備以下優(yōu)點:
· 將業(yè)務(wù)分而治之,降低業(yè)務(wù)復(fù)雜性,讓業(yè)務(wù)易于理解、修改和維護
· 模塊化部署,修改代價小,迭代速度快,有很好的擴展性
· 更好的容錯性,業(yè)務(wù)服務(wù)各司其職,單點故障不易影響全局

然而微服務(wù)架構(gòu)并非沒有代價,就如軟件工程中沒有真正的銀彈。
原來在單體架構(gòu)時,所有的邏輯都在一個服務(wù)內(nèi)處理,方法和方法之間是進程內(nèi)部的調(diào)度方式,然而采用微服務(wù)架構(gòu)之后,服務(wù)與服務(wù)之間需要通過網(wǎng)絡(luò)相互溝通,一個業(yè)務(wù)的實現(xiàn)往往是多個服務(wù)的共同作用下完成,由此,微服務(wù)治理帶來了一系列的問題。
企業(yè)微服務(wù)治理面臨的挑戰(zhàn)
海量的微服務(wù)加大了故障排查的難度
隨著業(yè)務(wù)的發(fā)展,微服務(wù)之間的溝通關(guān)系開始變得復(fù)雜,一個業(yè)務(wù)的實現(xiàn)往往是途徑了很多個微服務(wù),然而冗長的調(diào)用鏈帶來的是數(shù)倍增長的排錯難度。
舉個例子:一個業(yè)務(wù)需要經(jīng)過10個微服務(wù)的邏輯處理才能返回最終結(jié)果,某一個時間段依據(jù)用戶反饋,這個業(yè)務(wù)已經(jīng)無法正常運轉(zhuǎn),此時研發(fā)人員需要地毯式排查每一個經(jīng)過的業(yè)務(wù)服務(wù),才能準(zhǔn)確的知道故障源。
故障定位一直以來都是一件麻煩事,在微服務(wù)架構(gòu)下排錯更是需要支付高昂的成本。
微服務(wù)架構(gòu)在部署環(huán)境中的故障難以復(fù)現(xiàn)
微服務(wù)架構(gòu)下的服務(wù)調(diào)度錯綜復(fù)雜,一個業(yè)務(wù)故障的產(chǎn)生往往與其上下游的服務(wù)有很大的關(guān)系。有時我們在本地測試一切正常,但放到環(huán)境當(dāng)中運行時卻會引發(fā)故障,其原因或許是部署的環(huán)境有問題,亦或許是下游服務(wù)給予了一些意外的參數(shù),亦或許是上游服務(wù)響應(yīng)的結(jié)果不符合預(yù)期,此類種種都是我們在離開了部署環(huán)境時很難預(yù)料到的變故,并且在微服務(wù)架構(gòu)的掩蓋下,復(fù)現(xiàn)故障十分困難。
目前主流的微服務(wù)治理解決思路
以SDK為主要表現(xiàn)形式的研發(fā)側(cè)解決思路
通過編碼的方式,讓我們的業(yè)務(wù)代碼直接具備解決問題的手段,這是目前最主流的也是發(fā)展時間最長的一種解決問題的思路。

研發(fā)的思維十分純粹且直白,既然需要服務(wù)治理的能力,那就直接將這種能力寫在代碼上。通過日積月累沉淀出一些好用的SDK,代碼只需要引入這些SDK即可獲得服務(wù)治理能力。
在這條思路上最出名的開源庫是SpringCloud。作為微服務(wù)治理框架的集合,SpringCloud的核心庫封裝了包括服務(wù)發(fā)現(xiàn)、流量訪問、網(wǎng)關(guān)路由、熔斷器、鏈路追蹤等能力。
使用SDK解決服務(wù)治理的思路優(yōu)勢是:研發(fā)可以完全的掌握服務(wù)治理的所有能力,能夠根據(jù)實際需求進行定制化,使其更加適配企業(yè)的實際情況。并且經(jīng)過經(jīng)年累月的打磨,部分語言的治理框架已經(jīng)比較完善,為研發(fā)后續(xù)的開發(fā)打下了堅實的基礎(chǔ)。
缺點是:研發(fā)掌握了一切,一旦SDK內(nèi)部邏輯出現(xiàn)故障,或者是需要升級,就必須讓研發(fā)介入重新編譯打包,并且由于大部分服務(wù)都接入了服務(wù)治理SDK,所以一次升級可能需要涉及到很大范圍的重新部署,這樣做風(fēng)險很大。SDK具備語言相關(guān)的屬性,雖然部分語言的治理框架相對完善,但仍有很多流行的編程語言缺少完善的治理庫,如果企業(yè)內(nèi)部語言較多,為了平衡各類治理框架的差異,做統(tǒng)一管理,就需要投入額外的開發(fā)成本。
以SDK與Sidecar同時存在為主要表現(xiàn)形式的解決思路
在云原生理念的推動下,業(yè)界又誕生了一種新的解決思路,它融合了SDK和Sidecar這2種解決問題的想法,并且期望實現(xiàn)完全的云原生,這就是Dapr。

Dapr 是微軟主導(dǎo)的云原生開源項目,2019年10月首次發(fā)布,到今年2月正式發(fā)布 V1.0 版本。在不到一年半的時間內(nèi),Github star 數(shù)達到了1.2 萬,發(fā)展勢頭迅猛,Dapr 這個詞是是「Distributed Application runtime」的首字母縮寫:dapr是一個為應(yīng)用提供分布式能力的運行時。
準(zhǔn)確來說Dapr并不單單解決服務(wù)治理問題,而是完全基于云原生理念誕生的產(chǎn)物,Dapr希望將一切都抽象成云資源,代碼通過對云資源的依賴來實現(xiàn)相應(yīng)的業(yè)務(wù)。為了讓各種語言都有統(tǒng)一的實現(xiàn)規(guī)范,Dapr給很多流行的語言提供了SDK,又結(jié)合了Sidecar思想,將真正實現(xiàn)邏輯的部分都封裝在Sidecar當(dāng)中,此時的Sidecar就是Dapr的運行時,有多個Sidecar,那就會出現(xiàn)多個運行時。業(yè)務(wù)代碼會先通過SDK溝通Sidecar,再歷經(jīng)各個Sidecar的相互作用來實現(xiàn)具體需求,其中就包含了服務(wù)治理能力。
這種解決問題的辦法有一個重要的優(yōu)勢:Dapr不僅可以動態(tài)的添加包含服務(wù)治理能力在內(nèi)的各項公共能力,還可以基于抽象的云資源實現(xiàn)對底層實現(xiàn)的替換,比如將MongoDB替換成Redis等。
然而這種方式的缺陷也十分明顯:Dapr幾乎包含了SDK模式和Sidecar模式的大多缺點,SDK如果無法匹配Sidecar的版本時同樣面臨著SDK升級困難問題。由于多運行時共同作用,在路由上流量每經(jīng)過一個服務(wù),可能多了不止一跳,同樣面臨著性能問題。由于邏輯都封裝在Sidecar上,也避免不了Sidecar本身故障時無法正常訪問,并且由于多運行時,當(dāng)故障出現(xiàn)很難準(zhǔn)確定位故障。
使用服務(wù)網(wǎng)格解決微服務(wù)治理問題是當(dāng)下代價最小的解決方案
服務(wù)網(wǎng)格(Service Mesh)是Sidecar模式的代表型技術(shù)之一,是處理服務(wù)間通信的基礎(chǔ)設(shè)施層,在實踐中,服務(wù)網(wǎng)格通常以輕量級網(wǎng)絡(luò)代理陣列的形式實現(xiàn),這些代理與應(yīng)用程序代碼部署在一起。作為云原生的網(wǎng)絡(luò)基礎(chǔ)設(shè)施,它把微服務(wù)調(diào)度中有關(guān)網(wǎng)絡(luò)的公共能力下沉到代理,實現(xiàn)了在無任何代碼侵入的情況下提供可觀察性、流量管理和安全性等能力。
相比SDK和Dapr這種需要研發(fā)深度介入的解決問題思路,服務(wù)網(wǎng)格的使用代價相對最小,這取決于Sidecar模式帶來的結(jié)構(gòu)優(yōu)勢:
· 零侵入,業(yè)務(wù)無感知,不需要支付額外的研發(fā)成本。
· 語言無關(guān),無論使用任何編程語言都可以享受統(tǒng)一的服務(wù)治理能力。
· 升級便利,作為獨立第三方服務(wù),服務(wù)網(wǎng)格的升級迭代并不會影響業(yè)務(wù)的正常運行。
服務(wù)網(wǎng)格即插即用的特質(zhì)對于企業(yè)十分友好,特別是針對組織架構(gòu)相對復(fù)雜的企業(yè),越少的部門關(guān)聯(lián)意味著越少的溝通成本,而部門之間的溝通幾乎是企業(yè)成本最大的地方。
綜上所述,使用服務(wù)網(wǎng)格解決企業(yè)微服務(wù)治理是現(xiàn)階段代價最小的選擇,也是最推薦的解決方案。
------------------------------------------------------
高效可視化微服務(wù)治理平臺??立即免費試用(www.cloudtogo.cn)