国产精品免费久久久久电影院_亚洲日韩蜜桃av无码一二三区_AV在线无码免费特黄毛片_亚洲欧美日韩电影在线专区_福利小视频午夜福利一区二区中文字幕_在线免费观看黄黄色视频_欧美菊爆视频在线观看免费_婷婷六月丁香五月_久久伊人精品中文字幕有码_强奸国产无码激情

清晰明了!企業(yè)微服務(wù)治理的解決思路

2022-04-29

1996

作者:樂魚創(chuàng)新 Synuwxy

背景


隨著業(yè)務(wù)需求的日漸復(fù)雜以及產(chǎn)品迭代節(jié)奏的不斷加快,業(yè)務(wù)開發(fā)部門面臨著前所未有的壓力。為了搶占先機(jī),用最快的速度準(zhǔn)確把握用戶需求的變化,優(yōu)化開發(fā)出來的業(yè)務(wù)產(chǎn)品,微服務(wù)(MicroServices)架構(gòu)技術(shù)在各大企業(yè)不斷生根發(fā)芽。

微服務(wù)架構(gòu)可以極大的降低業(yè)務(wù)的復(fù)雜性。開發(fā)和部署相對(duì)大單體架構(gòu)而言更加簡單,單個(gè)微服務(wù)的功能可以更快地更改,啟動(dòng)和調(diào)試單個(gè)微服務(wù)的時(shí)間成本相比于單體應(yīng)用也大大減少。微服務(wù)治理也成為了困擾各大企業(yè)的難題。


普遍而言,微服務(wù)架構(gòu)具備以下優(yōu)點(diǎn):

· 將業(yè)務(wù)分而治之,降低業(yè)務(wù)復(fù)雜性,讓業(yè)務(wù)易于理解、修改和維護(hù)
· 模塊化部署,修改代價(jià)小,迭代速度快,有很好的擴(kuò)展性

· 更好的容錯(cuò)性,業(yè)務(wù)服務(wù)各司其職,單點(diǎn)故障不易影響全局


然而微服務(wù)架構(gòu)并非沒有代價(jià),就如軟件工程中沒有真正的銀彈。

原來在單體架構(gòu)時(shí),所有的邏輯都在一個(gè)服務(wù)內(nèi)處理,方法和方法之間是進(jìn)程內(nèi)部的調(diào)度方式,然而采用微服務(wù)架構(gòu)之后,服務(wù)與服務(wù)之間需要通過網(wǎng)絡(luò)相互溝通,一個(gè)業(yè)務(wù)的實(shí)現(xiàn)往往是多個(gè)服務(wù)的共同作用下完成,由此,微服務(wù)治理帶來了一系列的問題。


企業(yè)微服務(wù)治理面臨的挑戰(zhàn)


1. 復(fù)雜的網(wǎng)絡(luò)通信提升了故障出現(xiàn)的概率


微服務(wù)架構(gòu)體系中,服務(wù)與服務(wù)之間需要通過網(wǎng)絡(luò)相互溝通,意味著研發(fā)人員在原本的業(yè)務(wù)邏輯之外,還需要額外考慮網(wǎng)絡(luò)通信相關(guān)的問題。比如服務(wù)在向其上游服務(wù)發(fā)起請(qǐng)求時(shí)需要對(duì)上游服務(wù)的各種意外響應(yīng)做出處理,常見的有401錯(cuò)誤,404錯(cuò)誤,500錯(cuò)誤,503錯(cuò)誤等。此外還涉及到對(duì)網(wǎng)絡(luò)延遲,網(wǎng)絡(luò)故障等環(huán)境問題做出處理。


一旦研發(fā)人員不能妥善處理這些網(wǎng)絡(luò)通信帶來的意外情況,隨著微服務(wù)數(shù)量的不斷變多,故障的風(fēng)險(xiǎn)概率將會(huì)隨之增大,進(jìn)而影響系統(tǒng)的整體穩(wěn)定性。


2. 海量的微服務(wù)加大了故障排查的難度


隨著業(yè)務(wù)的發(fā)展,微服務(wù)之間的溝通關(guān)系開始變得復(fù)雜,一個(gè)業(yè)務(wù)的實(shí)現(xiàn)往往是途徑了很多個(gè)微服務(wù),然而冗長的調(diào)用鏈帶來的是數(shù)倍增長的排錯(cuò)難度。


舉個(gè)例子:一個(gè)業(yè)務(wù)需要經(jīng)過10個(gè)微服務(wù)的邏輯處理才能返回最終結(jié)果,某一個(gè)時(shí)間段依據(jù)用戶反饋,這個(gè)業(yè)務(wù)已經(jīng)無法正常運(yùn)轉(zhuǎn),此時(shí)研發(fā)人員需要地毯式排查每一個(gè)經(jīng)過的業(yè)務(wù)服務(wù),才能準(zhǔn)確的知道故障源。

故障定位一直以來都是一件麻煩事,在微服務(wù)架構(gòu)下排錯(cuò)更是需要支付高昂的成本。


3. 當(dāng)故障出現(xiàn)時(shí)難以確定影響范圍


雖然在微服務(wù)架構(gòu)下,單點(diǎn)故障難以對(duì)系統(tǒng)造成整體上的破壞,但業(yè)務(wù)從來都不是獨(dú)立完成的,各服務(wù)之間存在各式各樣的依賴關(guān)系,這就導(dǎo)致故障出現(xiàn)時(shí)往往會(huì)級(jí)聯(lián)影響到下游業(yè)務(wù),甚至引發(fā)其他業(yè)務(wù)的連鎖故障,此時(shí)業(yè)務(wù)最終呈現(xiàn)的現(xiàn)象往往會(huì)干擾研發(fā)人員對(duì)其故障范圍的判斷。


4. 微服務(wù)架構(gòu)在部署環(huán)境中的故障難以復(fù)現(xiàn)


微服務(wù)架構(gòu)下的服務(wù)調(diào)度錯(cuò)綜復(fù)雜,一個(gè)業(yè)務(wù)故障的產(chǎn)生往往與其上下游的服務(wù)有很大的關(guān)系。有時(shí)我們?cè)诒镜販y試一切正常,但放到環(huán)境當(dāng)中運(yùn)行時(shí)卻會(huì)引發(fā)故障,其原因或許是部署的環(huán)境有問題,亦或許是下游服務(wù)給予了一些意外的參數(shù),亦或許是上游服務(wù)響應(yīng)的結(jié)果不符合預(yù)期,此類種種都是我們?cè)陔x開了部署環(huán)境時(shí)很難預(yù)料到的變故,并且在微服務(wù)架構(gòu)的掩蓋下,復(fù)現(xiàn)故障十分困難。


總結(jié)


微服務(wù)架構(gòu)是解決業(yè)務(wù)復(fù)雜度的一個(gè)很好的方法,也是目前企業(yè)實(shí)踐中最常用的辦法。但是由于微服務(wù)架構(gòu)的復(fù)雜性,企業(yè)想要管理好基于微服務(wù)架構(gòu)的應(yīng)用,也需要具備更高的能力。如果微服務(wù)治理得不恰當(dāng),反而有可能適得其反,不僅不能享受到微服務(wù)架構(gòu)帶來的好處,反而會(huì)因?yàn)槲⒎?wù)帶來的系統(tǒng)復(fù)雜性,造成開發(fā)、運(yùn)維部署的復(fù)雜度增加,進(jìn)?影響開發(fā)迭代的速度,甚至影響系統(tǒng)的整體穩(wěn)定性。


綜上所述,企業(yè)對(duì)微服務(wù)治理的需求是十分明確的,就是想知道當(dāng)下環(huán)境當(dāng)中,特別是在數(shù)量龐大的微服務(wù)相互溝通的過程中,到底發(fā)生了什么,當(dāng)故障發(fā)生時(shí),故障的影響范圍,故障的根本原因,最后是需要解決或緩解故障對(duì)業(yè)務(wù)影響的手段。


目前主流的微服務(wù)治理解決思路


1. 以SDK為主要表現(xiàn)形式的研發(fā)側(cè)解決思路


通過編碼的方式,讓我們的業(yè)務(wù)代碼直接具備解決問題的手段,這是目前最主流的也是發(fā)展時(shí)間最長的一種解決問題的思路。


研發(fā)的思維十分純粹且直白,既然需要服務(wù)治理的能力,那就直接將這種能力寫在代碼上。通過日積月累沉淀出一些好用的SDK,代碼只需要引入這些SDK即可獲得服務(wù)治理能力。

在這條思路上最出名的開源庫是SpringCloud。作為微服務(wù)治理框架的集合,SpringCloud的核心庫封裝了包括服務(wù)發(fā)現(xiàn)、流量訪問、網(wǎng)關(guān)路由、熔斷器、鏈路追蹤等能力。


使用SDK解決服務(wù)治理的思路優(yōu)勢是:研發(fā)可以完全的掌握服務(wù)治理的所有能力,能夠根據(jù)實(shí)際需求進(jìn)行定制化,使其更加適配企業(yè)的實(shí)際情況。并且經(jīng)過經(jīng)年累月的打磨,部分語言的治理框架已經(jīng)比較完善,為研發(fā)后續(xù)的開發(fā)打下了堅(jiān)實(shí)的基礎(chǔ)。


缺點(diǎn)是:研發(fā)掌握了一切,一旦SDK內(nèi)部邏輯出現(xiàn)故障,或者是需要升級(jí),就必須讓研發(fā)介入重新編譯打包,并且由于大部分服務(wù)都接入了服務(wù)治理SDK,所以一次升級(jí)可能需要涉及到很大范圍的重新部署,這樣做風(fēng)險(xiǎn)很大。SDK具備語言相關(guān)的屬性,雖然部分語言的治理框架相對(duì)完善,但仍有很多流行的編程語言缺少完善的治理庫,如果企業(yè)內(nèi)部語言較多,為了平衡各類治理框架的差異,做統(tǒng)一管理,就需要投入額外的開發(fā)成本。


2. 以Sidecar為主要表現(xiàn)形式的運(yùn)維側(cè)解決思路


隨著技術(shù)的快速發(fā)展,DevOps理念開始流行,一種以Sidecar為主要表現(xiàn)形式的運(yùn)維側(cè)解決思路開始出現(xiàn)。研發(fā)只需要關(guān)注自身的業(yè)務(wù)部分,服務(wù)治理能力通過其他工具插入到正在運(yùn)行的業(yè)務(wù)服務(wù)當(dāng)中。




Sidecar模式,指單獨(dú)將能力封裝在另一個(gè)程序當(dāng)中與業(yè)務(wù)共同運(yùn)行,以此來增強(qiáng)業(yè)務(wù)服務(wù)的能力。服務(wù)網(wǎng)格(Service Mesh)技術(shù)就大量的使用了Sidecar模式,其中最為著名的開源庫是Istio。


使用Sidecar模式解決服務(wù)治理的思路優(yōu)勢是:Sidecar作為基礎(chǔ)設(shè)施可以由運(yùn)維人員完全掌控,它與編程語言無關(guān),并且完美的規(guī)避了SDK升級(jí)帶來的重新編譯部署的煩惱,并且由于Sidecar完全獨(dú)立于業(yè)務(wù)服務(wù),這就賦予業(yè)務(wù)在任何時(shí)間接入和任何時(shí)間退出的權(quán)利,即插即用。


與之相對(duì)的是Sidecar模式的缺陷:Sidecar必須劫持流量才可以做到對(duì)業(yè)務(wù)服務(wù)的能力增強(qiáng),這就意味著在業(yè)務(wù)調(diào)度的過程中產(chǎn)生了一個(gè)新的不確定因素,一旦Sidecar本身出現(xiàn)故障,它將影響業(yè)務(wù)的正常運(yùn)轉(zhuǎn)。其次,在路由中每個(gè)服務(wù)都多了一跳,這就導(dǎo)致Sidecar必然帶來性能的損耗。


3. 以SDK與Sidecar同時(shí)存在為主要表現(xiàn)形式的解決思路



在云原生理念的推動(dòng)下,業(yè)界又誕生了一種新的解決思路,它融合了SDK和Sidecar這2種解決問題的想法,并且期望實(shí)現(xiàn)完全的云原生,這就是Dapr。




Dapr 是微軟主導(dǎo)的云原生開源項(xiàng)目,2019年10月首次發(fā)布,到今年2月正式發(fā)布 V1.0 版本。在不到一年半的時(shí)間內(nèi),Github star 數(shù)達(dá)到了1.2 萬,發(fā)展勢頭迅猛,Dapr 這個(gè)詞是是「Distributed Application runtime」的首字母縮寫:dapr是一個(gè)為應(yīng)用提供分布式能力的運(yùn)行時(shí)。


準(zhǔn)確來說Dapr并不單單解決服務(wù)治理問題,而是完全基于云原生理念誕生的產(chǎn)物,Dapr希望將一切都抽象成云資源,代碼通過對(duì)云資源的依賴來實(shí)現(xiàn)相應(yīng)的業(yè)務(wù)。為了讓各種語言都有統(tǒng)一的實(shí)現(xiàn)規(guī)范,Dapr給很多流行的語言提供了SDK,又結(jié)合了Sidecar思想,將真正實(shí)現(xiàn)邏輯的部分都封裝在Sidecar當(dāng)中,此時(shí)的Sidecar就是Dapr的運(yùn)行時(shí),有多個(gè)Sidecar,那就會(huì)出現(xiàn)多個(gè)運(yùn)行時(shí)。業(yè)務(wù)代碼會(huì)先通過SDK溝通Sidecar,再歷經(jīng)各個(gè)Sidecar的相互作用來實(shí)現(xiàn)具體需求,其中就包含了服務(wù)治理能力。


這種解決問題的辦法有一個(gè)重要的優(yōu)勢:Dapr不僅可以動(dòng)態(tài)的添加包含服務(wù)治理能力在內(nèi)的各項(xiàng)公共能力,還可以基于抽象的云資源實(shí)現(xiàn)對(duì)底層實(shí)現(xiàn)的替換,比如將MongoDB替換成Redis等。


然而這種方式的缺陷也十分明顯:Dapr幾乎包含了SDK模式和Sidecar模式的大多缺點(diǎn),SDK如果無法匹配Sidecar的版本時(shí)同樣面臨著SDK升級(jí)困難問題。由于多運(yùn)行時(shí)共同作用,在路由上流量每經(jīng)過一個(gè)服務(wù),可能多了不止一跳,同樣面臨著性能問題。由于邏輯都封裝在Sidecar上,也避免不了Sidecar本身故障時(shí)無法正常訪問,并且由于多運(yùn)行時(shí),當(dāng)故障出現(xiàn)很難準(zhǔn)確定位故障。


如何抉擇


SDK的方式和企業(yè)業(yè)務(wù)最貼合,完全的自主可控,可是需要付出巨大的研發(fā)和維護(hù)代價(jià),去實(shí)現(xiàn)服務(wù)治理相應(yīng)的功能。


Dapr的理念十分前衛(wèi),它能提供更多的想象空間,但是如果使用Dapr結(jié)構(gòu),研發(fā)需要放棄經(jīng)營已久的開發(fā)框架去適配Dapr,相當(dāng)于把底層框架幾乎換掉,這個(gè)代價(jià)不是大多數(shù)企業(yè)能夠承受的。


從企業(yè)成本付出來看,服務(wù)網(wǎng)格或許是現(xiàn)階段最適合的解決方案。


使用服務(wù)網(wǎng)格解決微服務(wù)治理問題是當(dāng)下代價(jià)最小的解決方案


服務(wù)網(wǎng)格(Service Mesh)是Sidecar模式的代表型技術(shù)之一,是處理服務(wù)間通信的基礎(chǔ)設(shè)施層,在實(shí)踐中,服務(wù)網(wǎng)格通常以輕量級(jí)網(wǎng)絡(luò)代理陣列的形式實(shí)現(xiàn),這些代理與應(yīng)用程序代碼部署在一起。作為云原生的網(wǎng)絡(luò)基礎(chǔ)設(shè)施,它把微服務(wù)調(diào)度中有關(guān)網(wǎng)絡(luò)的公共能力下沉到代理,實(shí)現(xiàn)了在無任何代碼侵入的情況下提供可觀察性、流量管理和安全性等能力。


相比SDK和Dapr這種需要研發(fā)深度介入的解決問題思路,服務(wù)網(wǎng)格的使用代價(jià)相對(duì)最小,這取決于Sidecar模式帶來的結(jié)構(gòu)優(yōu)勢:
· 零侵入,業(yè)務(wù)無感知,不需要支付額外的研發(fā)成本。
· 語言無關(guān),無論使用任何編程語言都可以享受統(tǒng)一的服務(wù)治理能力。

· 升級(jí)便利,作為獨(dú)立第三方服務(wù),服務(wù)網(wǎng)格的升級(jí)迭代并不會(huì)影響業(yè)務(wù)的正常運(yùn)行。


服務(wù)網(wǎng)格即插即用的特質(zhì)對(duì)于企業(yè)十分友好,特別是針對(duì)組織架構(gòu)相對(duì)復(fù)雜的企業(yè),越少的部門關(guān)聯(lián)意味著越少的溝通成本,而部門之間的溝通幾乎是企業(yè)成本最大的地方。


綜上所述,使用服務(wù)網(wǎng)格解決企業(yè)微服務(wù)治理是現(xiàn)階段代價(jià)最小的選擇,也是最推薦的解決方案。


------------------------------------------------------


點(diǎn)擊鏈接,免費(fèi)獲取《微服務(wù)監(jiān)管平臺(tái)建設(shè)指南》


微服務(wù)監(jiān)管平臺(tái)


技術(shù)交流
我們建立了多個(gè)云原生技術(shù)交流群,其中有來自O(shè)racle、Citrix、華為、騰訊等國內(nèi)外云計(jì)算專家,立即掃碼,拉你進(jìn)群。目前已有2000+開發(fā)者加入我們......
云原生廠商 云原生技術(shù)服務(wù)商
在云原生時(shí)代,樂魚創(chuàng)新致力于通過賦能開發(fā)者,實(shí)現(xiàn)企業(yè)快速迭代與交付,大幅提升創(chuàng)新效率。
產(chǎn)品下載