簡(jiǎn)述:什么是應(yīng)用服務(wù)雪崩雪崩問題分布式系統(tǒng)都存在這樣一個(gè)問題,由于網(wǎng)絡(luò)的不穩(wěn)定性,決定了任何一個(gè)服務(wù)的可用性都不是100%的。當(dāng)網(wǎng)絡(luò)不穩(wěn)定的時(shí)候,作為服務(wù)的提供者,自身可能會(huì)被拖死,導(dǎo)致服務(wù)調(diào)用者阻塞,最終可能引發(fā)雪崩連鎖效應(yīng)。緩存雪崩當(dāng)緩存服務(wù)
什么是應(yīng)用服務(wù)雪崩?
雪崩問題
分布式系統(tǒng)存在這樣的問題。由于網(wǎng)絡(luò)的不穩(wěn)定性,任何服務(wù)的可用性都不是100%。當(dāng)網(wǎng)絡(luò)不穩(wěn)定時(shí),作為服務(wù)提供商,可能會(huì)被拖死,導(dǎo)致服務(wù)調(diào)用器堵塞,最終導(dǎo)致雪崩連鎖效應(yīng)。
緩存雪崩
當(dāng)緩存服務(wù)器重啟或大量緩存集中在一定時(shí)間內(nèi)時(shí),也會(huì)給后端系統(tǒng)(如DB)數(shù)據(jù)庫(kù)后端出現(xiàn)故障,導(dǎo)致應(yīng)用服務(wù)器雪崩。
雪崩效應(yīng)產(chǎn)生的幾種場(chǎng)景
流量激增:如流量異常,用戶重試導(dǎo)致系統(tǒng)負(fù)載增加;緩存刷新:假設(shè)A是client端,B為Server端,假設(shè)A系統(tǒng)請(qǐng)求都流向B系統(tǒng),請(qǐng)求超出了B系統(tǒng)的承載能力,就會(huì)造成B系統(tǒng)崩潰;程序有Bug:代碼循環(huán)調(diào)用的邏輯問題、資源未釋放引起的內(nèi)存泄漏等;硬件故障:如停機(jī)、機(jī)房斷電、光纖挖斷等。數(shù)據(jù)庫(kù)瓶頸嚴(yán)重,如長(zhǎng)期事務(wù)sql超時(shí)等。線程同步等待:同步服務(wù)調(diào)用模式常用于系統(tǒng)之間,核心服務(wù)和非核心服務(wù)共享線程池和消息隊(duì)列。如果一個(gè)核心業(yè)務(wù)線程調(diào)用非核心線程,這個(gè)非核心線程交由第三方系統(tǒng)完成,當(dāng)?shù)谌较到y(tǒng)本身出現(xiàn)問題,導(dǎo)致核心線程阻塞,一直處于等待狀態(tài),而進(jìn)程間的調(diào)用是有超時(shí)限制的,最終這條線程將斷掉,也可能引發(fā)雪崩;緩存雪崩解決方案
緩存失效的幾種情況:
1.緩存服務(wù)器掛斷
2.高峰期緩存局部失效
3.熱點(diǎn)緩存失效
解決方案:
1.避免不同的緩存集中故障key設(shè)置不同的超時(shí)時(shí)間
2.增加互斥鎖,控制數(shù)據(jù)庫(kù)請(qǐng)求,重建緩存。
3.增加緩存HA,如:redis集群。
雪崩的整體解決方案
一般來說,保護(hù)服務(wù)依賴主要有三種解決方案:
(1)熔斷模式
該模式主要是指電路熔斷器。如果線路電壓過高,保險(xiǎn)絲將熔斷以防止火災(zāi)。在我們的系統(tǒng)中,如果目標(biāo)服務(wù)呼叫緩慢或大量加班,此時(shí),熔斷服務(wù)呼叫,對(duì)于后續(xù)呼叫請(qǐng)求,不繼續(xù)呼叫目標(biāo)服務(wù),直接返回,快速釋放資源。如果目標(biāo)服務(wù)有所改善,請(qǐng)恢復(fù)呼叫。
重點(diǎn)監(jiān)控機(jī)器性能指標(biāo)
cpu(Load)cpu利用率/負(fù)載memory內(nèi)存mysql監(jiān)控長(zhǎng)事務(wù)(這里和sql超時(shí)查詢緊密結(jié)合,需要重點(diǎn)監(jiān)控)sql超時(shí)線程數(shù)等總之,除了cpu、除了內(nèi)存和線程數(shù),重點(diǎn)監(jiān)控?cái)?shù)據(jù)庫(kù)端的長(zhǎng)期事務(wù)sql加班等,絕大多數(shù)應(yīng)用服務(wù)器的雪崩場(chǎng)景來自數(shù)據(jù)庫(kù)端的性能瓶頸,導(dǎo)致數(shù)據(jù)庫(kù)端的大量瓶頸,最終拖累應(yīng)用服務(wù)器,最后是大面積的雪崩。
(2)隔離模式
這種模式就像按類型將系統(tǒng)要求劃分為小島一樣。當(dāng)一個(gè)小島被點(diǎn)燃時(shí),它不會(huì)影響其他小島。
例如,線程池可以用于隔離不同類型的要求,每種類型的要求不會(huì)相互影響。如果一種類型的要求線程資源耗盡,則直接返回后續(xù)類型的要求,不再呼叫后續(xù)資源。該模型有許多使用場(chǎng)景,如拆卸服務(wù),使用單獨(dú)的服務(wù)器部署重要服務(wù),或公司最近推廣的多中心。
(3)限流模式
上述熔斷模式和隔離模式屬于錯(cuò)誤后的容錯(cuò)處理機(jī)制,限流模式可稱為預(yù)防模式。限流模式主要是提前設(shè)置各種類型的最高要求QPS閾值,如果高于設(shè)定的閾值,請(qǐng)求將直接返回,后續(xù)資源將不再被調(diào)用。這種模式不能解決服務(wù)依賴的問題,只能解決系統(tǒng)整體資源分配的問題,因?yàn)闆]有流量限制的請(qǐng)求仍然可能導(dǎo)致雪崩效應(yīng)。
熔斷設(shè)計(jì)
熔斷設(shè)計(jì)主要參考hystrix做法。最重要的是三個(gè)模塊:熔斷要求判斷算法、熔斷恢復(fù)機(jī)制、熔斷報(bào)警
(1)熔斷要求判斷機(jī)制算法:使用無鎖循環(huán)隊(duì)列計(jì)數(shù),默認(rèn)維護(hù)每個(gè)熔斷器10個(gè)bucket,每1秒一個(gè)bucket,每個(gè)blucket默認(rèn)錯(cuò)誤超過50%,10秒內(nèi)中斷攔截20個(gè)請(qǐng)求,記錄請(qǐng)求的成功、失敗、加班和拒絕。
(2)熔斷恢復(fù):對(duì)于被熔斷的請(qǐng)求,每隔5s允許部分請(qǐng)求通過,如果請(qǐng)求是健康的(RT<250ms)要求健康恢復(fù)。
(3)熔斷報(bào)警:對(duì)于熔斷請(qǐng)求,如果異常請(qǐng)求超過某些設(shè)置,則報(bào)警。
隔離設(shè)計(jì)
一般采用兩種隔離方式
(1)線程池隔離模式:使用線程池存儲(chǔ)當(dāng)前請(qǐng)求,線程池處理請(qǐng)求,設(shè)置任務(wù)返回處理超時(shí)間,并將積累的請(qǐng)求積累到線程池隊(duì)列中。這樣,每個(gè)依賴的服務(wù)申請(qǐng)線程池都需要有一定的資源消耗。其優(yōu)點(diǎn)是可以處理緊急流量(當(dāng)流量峰值到來時(shí),數(shù)據(jù)可以存儲(chǔ)在線程池組中緩慢處理)
(2)信號(hào)量隔離模式:使用原子計(jì)數(shù)器(或信號(hào)量)記錄運(yùn)行中有多少線程。請(qǐng)先判斷計(jì)數(shù)器的值。如果超過設(shè)定的最大線程數(shù),則丟棄更改類型的新請(qǐng)求。如果不超過,則執(zhí)行計(jì)數(shù)操作請(qǐng)求以計(jì)數(shù)器 1求返回計(jì)數(shù)器-1。這種方法是嚴(yán)格控制線程并立即返回模式,無法處理緊急流量(當(dāng)流量峰值到來時(shí),處理的線程超過數(shù)量,其他請(qǐng)求將直接返回,不繼續(xù)要求依賴的服務(wù))
超時(shí)機(jī)制設(shè)計(jì)
(1)超時(shí)有兩種,一種是要求等待超時(shí),另一種是要求操作超時(shí)。
(2)等待加班:在任務(wù)進(jìn)入隊(duì)列時(shí)設(shè)置任務(wù)進(jìn)入隊(duì)列時(shí)間,判斷隊(duì)長(zhǎng)任務(wù)進(jìn)入隊(duì)列時(shí)間是否大于加班時(shí)間,超過任務(wù)時(shí)丟棄任務(wù)。
(3)運(yùn)行超時(shí):直接使用線程池提供的get方法。
如何提前發(fā)現(xiàn)雪崩?
首先,讓系統(tǒng)不崩潰,然后通過監(jiān)控發(fā)現(xiàn)要求接近或超過閥門值,然后根據(jù)具體情況進(jìn)行處理。接近或超過閥門值的過程可稱為“提前發(fā)現(xiàn)雪崩”。
以上是雪崩應(yīng)用服務(wù)場(chǎng)景和技術(shù)方案總結(jié)。如有問題,請(qǐng)聯(lián)系騰佑科技在線客服!
騰佑科技(m.mubashirfilms.com)成立于2009年,總部位于河南鄭州,是一家集互聯(lián)網(wǎng)基礎(chǔ)設(shè)施及軟硬件于一體化的高新技術(shù)企業(yè),具有IDC/ISP/ICP/云牌照、雙軟等資質(zhì),并擁有多個(gè)國(guó)家版權(quán)局認(rèn)證。公司自成立以來,一直致力于發(fā)展互聯(lián)網(wǎng)IDC數(shù)據(jù)中心DataCenter、云計(jì)算Cloud、大數(shù)據(jù)BigDate、人工智能AI、內(nèi)容加速CDN、互聯(lián)網(wǎng)安全、軟件定制開發(fā)等產(chǎn)品服務(wù)及行業(yè)客戶技術(shù)一體化智能解決方案;2018年成為百度智能云AI河南服務(wù)中心。
售前咨詢熱線:400-996-8756
備案提交:0371-89913068
售后客服:0371-89913000
搜索詞
熱門產(chǎn)品推薦