華為云服務(wù)治理 | ** 服務(wù)治理的一般性原則**
服務(wù)治理通常是指通過(guò)限流、熔斷等手段,保障微服務(wù)的可靠運(yùn)行,即運(yùn)行時(shí)治理。更加寬泛的服務(wù)治理還包括微服務(wù)持續(xù)集成(開(kāi)源軟件管理、自動(dòng)化測(cè)試等),微服務(wù)部署最佳實(shí)踐(滾動(dòng)升級(jí)、灰度發(fā)布等),微服務(wù)可觀測(cè)性能力(日志、監(jiān)控、告警等)構(gòu)建等。
華為云微服務(wù)治理專題主要探討運(yùn)行時(shí)治理。接下來(lái)我們探討故障處理的一般性原則。
故障識(shí)別
在用戶看來(lái),故障場(chǎng)景和正常場(chǎng)景是非常容易區(qū)分的。在服務(wù)治理的角度,識(shí)別故障則非常困難。
以調(diào)用超時(shí)為例,產(chǎn)生調(diào)用超時(shí)的原因非常多,包括:(1)服務(wù)端部分接口處理慢,導(dǎo)致超時(shí),而其他接口處理正常;(2)服務(wù)端故障,網(wǎng)絡(luò)不可達(dá),可能是短暫的,也可能是持續(xù)的;(3)服務(wù)端內(nèi)存、CPU高,導(dǎo)致處理變慢;(4)大量并發(fā)請(qǐng)求在服務(wù)端排隊(duì),當(dāng)請(qǐng)求被處理的時(shí)候,已經(jīng)超過(guò)了很長(zhǎng)的時(shí)間;(5)客戶端并發(fā)建立連接,內(nèi)存、CPU增高,導(dǎo)致請(qǐng)求握手超時(shí)等。這些不同類型的錯(cuò)誤,從調(diào)用者看起來(lái),都體現(xiàn)為一樣的行為。
以錯(cuò)誤碼為例,服務(wù)端返回503錯(cuò)誤,也可能包含很多不一樣的原因。比如系統(tǒng)未就緒,正在啟動(dòng)過(guò)程中,下次重試就可以訪問(wèn);或者服務(wù)出現(xiàn)內(nèi)存泄漏等原因,導(dǎo)致無(wú)法進(jìn)行響應(yīng);當(dāng)服務(wù)內(nèi)部的一些部件不可用的時(shí)候,也可能返回503錯(cuò)誤碼。
基于上述原因,服務(wù)治理能夠識(shí)別少量的故障類型,而無(wú)法識(shí)別更細(xì)維度的故障原因。
故障反饋
高并發(fā)場(chǎng)景下,相對(duì)于單個(gè)請(qǐng)求處理的時(shí)延,故障反饋過(guò)程非常緩慢。比如單個(gè)請(qǐng)求處理只需要幾個(gè)毫秒,但是檢測(cè)到請(qǐng)求超時(shí),至少需要幾秒時(shí)間。如果減少超時(shí)時(shí)間,檢測(cè)就會(huì)變得很不準(zhǔn)確,通常會(huì)由于系統(tǒng)調(diào)度延遲,讓超時(shí)時(shí)間出現(xiàn)大范圍的波動(dòng)。而且請(qǐng)求超時(shí)會(huì)觸發(fā)一些系統(tǒng)資源,比如HTTP連接的關(guān)閉和重建,引起更大范圍的超時(shí)。再比如依賴于CPU、內(nèi)存或者請(qǐng)求TPS的監(jiān)控?cái)?shù)據(jù),一般是通過(guò)異步線程在后臺(tái)周期性進(jìn)行統(tǒng)計(jì)實(shí)現(xiàn)的,當(dāng)統(tǒng)計(jì)數(shù)據(jù)反饋到服務(wù)治理策略的時(shí)候,相比較請(qǐng)求時(shí)延,已經(jīng)過(guò)去很長(zhǎng)時(shí)間了,這個(gè)時(shí)候再去實(shí)施治理策略,得到的反饋數(shù)據(jù)已經(jīng)不足以支持治理策略的實(shí)施。
服務(wù)治理的一般原則
故障識(shí)別困難、故障反饋緩慢導(dǎo)致了在故障場(chǎng)景下,不能像處理正常功能邏輯一樣,通過(guò)復(fù)雜的邏輯,比如轉(zhuǎn)移故障、采集更多歷史數(shù)據(jù)計(jì)算最優(yōu)解等保障本次請(qǐng)求盡可能成功。也不能假設(shè)一個(gè)實(shí)際無(wú)法模擬驗(yàn)證的故障,然后針對(duì)這個(gè)故障進(jìn)行保護(hù)。
服務(wù)治理策略需要結(jié)合大量的實(shí)踐來(lái)進(jìn)行驗(yàn)證,總結(jié)起來(lái)有幾個(gè)非常核心的原則:
· 快速失敗優(yōu)先于保障本次請(qǐng)求成功。通過(guò)快速失敗降低故障的影響時(shí)間,減少故障對(duì)于系統(tǒng)資源的占用,讓系統(tǒng)能夠快速恢復(fù)到正常的處理水平。
· 治理策略的邏輯應(yīng)該采用無(wú)狀態(tài)算法,不依賴于其他微服務(wù)或者中間件,只依賴于本服務(wù)的內(nèi)部狀態(tài)就能夠?qū)嵤?,避免依賴于?fù)雜的錯(cuò)誤檢測(cè)機(jī)制。這個(gè)原則使得服務(wù)治理的策略依賴于相對(duì)實(shí)時(shí)的故障數(shù)據(jù),減少治理策略本身的處理時(shí)間,讓治理策略的前提和結(jié)果變得更好預(yù)測(cè)。
· 治理策略的實(shí)施條件和結(jié)果必須可以通過(guò)模擬的方式進(jìn)行驗(yàn)證。雖然故障識(shí)別是非常困難的,但是任何治理策略都需要假設(shè)他出現(xiàn)的場(chǎng)景是什么,這個(gè)場(chǎng)景發(fā)生的時(shí)候,故障表現(xiàn)是什么,依賴于故障場(chǎng)景、故障表現(xiàn)來(lái)執(zhí)行治理策略,并且可以評(píng)估不同治理策略對(duì)同樣的故障場(chǎng)景和故障表現(xiàn)得出的保護(hù)效果。
審核編輯 黃宇
-
華為
+關(guān)注
關(guān)注
216文章
34440瀏覽量
251769
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論