真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java架構(gòu)之微服務(wù)架構(gòu)雪崩效應(yīng)的示例分析

這篇文章將為大家詳細(xì)講解有關(guān)java架構(gòu)之微服務(wù)架構(gòu)雪崩效應(yīng)的示例分析,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

自2013年起創(chuàng)新互聯(lián)建站專(zhuān)注于”幫助中小企業(yè)+互聯(lián)網(wǎng)”, 也是目前成都地區(qū)具有實(shí)力的互聯(lián)網(wǎng)服務(wù)商。團(tuán)隊(duì)致力于為企業(yè)提供--站式網(wǎng)站建設(shè)、移動(dòng)端應(yīng)用( H5手機(jī)營(yíng)銷(xiāo)、成都app軟件開(kāi)發(fā)公司、微信開(kāi)發(fā))、軟件開(kāi)發(fā)、信息化解決方案等服務(wù)。

前言

微服務(wù)化產(chǎn)品線,每一個(gè)服務(wù)專(zhuān)心于自己的業(yè)務(wù)邏輯,并對(duì)外提供相應(yīng)的接口,看上去似乎很明了,其實(shí)還有很多的東西需要考慮,比如:服務(wù)的自動(dòng)擴(kuò)充,熔斷和限流等,隨著業(yè)務(wù)的擴(kuò)展,服務(wù)的數(shù)量也會(huì)隨之增多,邏輯會(huì)更加復(fù)雜,一個(gè)服務(wù)的某個(gè)邏輯需要依賴多個(gè)其他服務(wù)才能完成。

一但一個(gè)依賴不能提供服務(wù)很可能會(huì)產(chǎn)生雪崩效應(yīng),最后導(dǎo)致整個(gè)服務(wù)不可訪問(wèn)。

微服務(wù)之間進(jìn)行rpc或者h(yuǎn)ttp調(diào)用時(shí),我們一般都會(huì)設(shè)置調(diào)用超時(shí),失敗重試等機(jī)制來(lái)確保服務(wù)的成功執(zhí)行,看上去很美,如果不考慮服務(wù)的熔斷和限流,就是雪崩的源頭。

假設(shè)我們有兩個(gè)訪問(wèn)量比較大的服務(wù)A和B,這兩個(gè)服務(wù)分別依賴C和D,C和D服務(wù)都依賴E服務(wù)

java架構(gòu)之微服務(wù)架構(gòu)雪崩效應(yīng)的示例分析

A和B不斷的調(diào)用C,D處理客戶請(qǐng)求和返回需要的數(shù)據(jù)。當(dāng)E服務(wù)不能供服務(wù)的時(shí)候,C和D的超時(shí)和重試機(jī)制會(huì)被執(zhí)行

java架構(gòu)之微服務(wù)架構(gòu)雪崩效應(yīng)的示例分析

由于新的調(diào)用不斷的產(chǎn)生,會(huì)導(dǎo)致C和D對(duì)E服務(wù)的調(diào)用大量的積壓,產(chǎn)生大量的調(diào)用等待和重試調(diào)用,慢慢會(huì)耗盡C和D的資源比如內(nèi)存或CPU,然后也down掉。

java架構(gòu)之微服務(wù)架構(gòu)雪崩效應(yīng)的示例分析

A和B服務(wù)會(huì)重復(fù)C和D的操作,資源耗盡,然后down掉,最終整個(gè)服務(wù)都不可訪問(wèn)。

java架構(gòu)之微服務(wù)架構(gòu)雪崩效應(yīng)的示例分析

常見(jiàn)的導(dǎo)致雪崩的情況有以下幾種:

  • 程序bug導(dǎo)致服務(wù)不可用,或者運(yùn)行緩慢

  • 緩存擊穿,導(dǎo)致調(diào)用全部訪問(wèn)某服務(wù),導(dǎo)致down掉

  • 訪問(wèn)量的突然激增。

  • 硬件問(wèn)題,這感覺(jué)只能說(shuō)是點(diǎn)背了⊙︿⊙。

雖然雪崩效應(yīng)的產(chǎn)生千萬(wàn)條,保證服務(wù)的不掛機(jī),和流暢運(yùn)行是我們不可推卸的責(zé)任,對(duì)應(yīng)雪崩效應(yīng)還是有很多保護(hù)方案的。

服務(wù)的橫向擴(kuò)充

現(xiàn)在我們可以利用很多工具來(lái)保證服務(wù)不會(huì)掛掉,然后流量比較大的時(shí)候,可以橫向擴(kuò)充服務(wù)來(lái)保證業(yè)務(wù)的流暢。比如我們最常使用k8s,能保證服務(wù)的運(yùn)行狀態(tài),也可以讓服務(wù)自動(dòng)的橫向擴(kuò)充。對(duì)于用戶訪問(wèn)量的激增情況這樣處理還是很不錯(cuò)的,但是,橫向擴(kuò)充也是有盡頭的,如果在一定環(huán)境下E服務(wù)的響應(yīng)時(shí)間過(guò)長(zhǎng),依然有可能導(dǎo)致雪崩效應(yīng)的產(chǎn)生。

限流

限制客戶端的調(diào)用來(lái)達(dá)到限流的做法是很常見(jiàn)的,比如,我們限制每秒最大處理200個(gè)請(qǐng)求,超過(guò)個(gè)數(shù)量直接拒絕請(qǐng)求。常見(jiàn)的算法如令牌桶算法

以一定的速度在桶里放令牌,當(dāng)客戶端請(qǐng)求服務(wù)的時(shí)候,要先從桶里得到令牌,才能被處理,如果桶里的令牌用完了,則拒絕訪問(wèn)。

java架構(gòu)之微服務(wù)架構(gòu)雪崩效應(yīng)的示例分析

熔斷

在客戶端控制對(duì)依賴的訪問(wèn),如果調(diào)用的依賴不可用時(shí),則不再調(diào)用,直接返回錯(cuò)誤,或者降級(jí)處理。開(kāi)源的庫(kù)比如hystrix-go,也是我接下來(lái)要寫(xiě)的源碼分析的一個(gè)庫(kù)。很好的實(shí)現(xiàn)了熔斷和降級(jí)的功能。他的主要思想是,設(shè)置一些閥值,比如,最大并發(fā)數(shù),錯(cuò)誤率百分比,熔斷嘗試恢復(fù)時(shí)間等。能過(guò)這些閥值來(lái)轉(zhuǎn)換熔斷器的狀態(tài):

  • 關(guān)閉狀態(tài),允許調(diào)用依賴

  • 打開(kāi)狀態(tài),不允許調(diào)用依賴,直接返回錯(cuò)誤,或者調(diào)用fallback

  • 半開(kāi)狀態(tài),根據(jù)熔斷嘗試恢復(fù)時(shí)間來(lái)開(kāi)啟,允許調(diào)用依賴,如果調(diào)用成功則關(guān)閉失敗則繼續(xù)打開(kāi)

java架構(gòu)之微服務(wù)架構(gòu)雪崩效應(yīng)的示例分析

關(guān)于“java架構(gòu)之微服務(wù)架構(gòu)雪崩效應(yīng)的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。


當(dāng)前文章:java架構(gòu)之微服務(wù)架構(gòu)雪崩效應(yīng)的示例分析
文章URL:http://weahome.cn/article/igchpp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部