數(shù)十年專注企業(yè)數(shù)字化轉(zhuǎn)型、智能化升級、企業(yè)上云解決方案服務(wù)商
工單提交 實名認證 騰佑科技咨詢熱線咨詢熱線: 400-996-8756
百度云服務(wù)中心騰佑科技公司
云服務(wù)器活動 服務(wù)器租用 服務(wù)器托管 機柜租賃 帶寬租賃
  • 最新資訊
  • 熱門資訊
  • 最熱資訊
智能建站

什么是緩存雪崩?服務(wù)器雪崩場景及解決方案

發(fā)布時間:2022-07-18 作者:admin

簡述:什么是應用服務(wù)雪崩雪崩問題分布式系統(tǒng)都存在這樣一個問題,由于網(wǎng)絡(luò)的不穩(wěn)定性,決定了任何一個服務(wù)的可用性都不是100%的。當網(wǎng)絡(luò)不穩(wěn)定的時候,作為服務(wù)的提供者,自身可能會被拖死,導致服務(wù)調(diào)用者阻塞,最終可能引發(fā)雪崩連鎖效應。緩存雪崩當緩存服務(wù)

什么是應用服務(wù)雪崩?

雪崩問題

分布式系統(tǒng)存在這樣的問題。由于網(wǎng)絡(luò)的不穩(wěn)定性,任何服務(wù)的可用性都不是100%。當網(wǎng)絡(luò)不穩(wěn)定時,作為服務(wù)提供商,可能會被拖死,導致服務(wù)調(diào)用器堵塞,最終導致雪崩連鎖效應。

緩存雪崩

當緩存服務(wù)器重啟或大量緩存集中在一定時間內(nèi)時,也會給后端系統(tǒng)(如DB)數(shù)據(jù)庫后端出現(xiàn)故障,導致應用服務(wù)器雪崩。

雪崩效應產(chǎn)生的幾種場景

流量激增:如流量異常,用戶重試導致系統(tǒng)負載增加;緩存刷新:假設(shè)A是client端,B為Server端,假設(shè)A系統(tǒng)請求都流向B系統(tǒng),請求超出了B系統(tǒng)的承載能力,就會造成B系統(tǒng)崩潰;程序有Bug:代碼循環(huán)調(diào)用的邏輯問題、資源未釋放引起的內(nèi)存泄漏等;硬件故障:如停機、機房斷電、光纖挖斷等。數(shù)據(jù)庫瓶頸嚴重,如長期事務(wù)sql超時等。線程同步等待:同步服務(wù)調(diào)用模式常用于系統(tǒng)之間,核心服務(wù)和非核心服務(wù)共享線程池和消息隊列。如果一個核心業(yè)務(wù)線程調(diào)用非核心線程,這個非核心線程交由第三方系統(tǒng)完成,當?shù)谌较到y(tǒng)本身出現(xiàn)問題,導致核心線程阻塞,一直處于等待狀態(tài),而進程間的調(diào)用是有超時限制的,最終這條線程將斷掉,也可能引發(fā)雪崩;

緩存雪崩解決方案

緩存失效的幾種情況:

1.緩存服務(wù)器掛斷

2.高峰期緩存局部失效

3.熱點緩存失效

解決方案:

1.避免不同的緩存集中故障key設(shè)置不同的超時時間

2.增加互斥鎖,控制數(shù)據(jù)庫請求,重建緩存。

3.增加緩存HA,如:redis集群。

雪崩的整體解決方案

一般來說,保護服務(wù)依賴主要有三種解決方案:

(1)熔斷模式

該模式主要是指電路熔斷器。如果線路電壓過高,保險絲將熔斷以防止火災。在我們的系統(tǒng)中,如果目標服務(wù)呼叫緩慢或大量加班,此時,熔斷服務(wù)呼叫,對于后續(xù)呼叫請求,不繼續(xù)呼叫目標服務(wù),直接返回,快速釋放資源。如果目標服務(wù)有所改善,請恢復呼叫。

重點監(jiān)控機器性能指標

cpu(Load)cpu利用率/負載memory內(nèi)存mysql監(jiān)控長事務(wù)(這里和sql超時查詢緊密結(jié)合,需要重點監(jiān)控)sql超時線程數(shù)等

總之,除了cpu、除了內(nèi)存和線程數(shù),重點監(jiān)控數(shù)據(jù)庫端的長期事務(wù)sql加班等,絕大多數(shù)應用服務(wù)器的雪崩場景來自數(shù)據(jù)庫端的性能瓶頸,導致數(shù)據(jù)庫端的大量瓶頸,最終拖累應用服務(wù)器,最后是大面積的雪崩。

(2)隔離模式

這種模式就像按類型將系統(tǒng)要求劃分為小島一樣。當一個小島被點燃時,它不會影響其他小島。

例如,線程池可以用于隔離不同類型的要求,每種類型的要求不會相互影響。如果一種類型的要求線程資源耗盡,則直接返回后續(xù)類型的要求,不再呼叫后續(xù)資源。該模型有許多使用場景,如拆卸服務(wù),使用單獨的服務(wù)器部署重要服務(wù),或公司最近推廣的多中心。

(3)限流模式

上述熔斷模式和隔離模式屬于錯誤后的容錯處理機制,限流模式可稱為預防模式。限流模式主要是提前設(shè)置各種類型的最高要求QPS閾值,如果高于設(shè)定的閾值,請求將直接返回,后續(xù)資源將不再被調(diào)用。這種模式不能解決服務(wù)依賴的問題,只能解決系統(tǒng)整體資源分配的問題,因為沒有流量限制的請求仍然可能導致雪崩效應。

熔斷設(shè)計

熔斷設(shè)計主要參考hystrix做法。最重要的是三個模塊:熔斷要求判斷算法、熔斷恢復機制、熔斷報警

(1)熔斷要求判斷機制算法:使用無鎖循環(huán)隊列計數(shù),默認維護每個熔斷器10個bucket,每1秒一個bucket,每個blucket默認錯誤超過50%,10秒內(nèi)中斷攔截20個請求,記錄請求的成功、失敗、加班和拒絕。

(2)熔斷恢復:對于被熔斷的請求,每隔5s允許部分請求通過,如果請求是健康的(RT<250ms)要求健康恢復。

(3)熔斷報警:對于熔斷請求,如果異常請求超過某些設(shè)置,則報警。

隔離設(shè)計

一般采用兩種隔離方式

(1)線程池隔離模式:使用線程池存儲當前請求,線程池處理請求,設(shè)置任務(wù)返回處理超時間,并將積累的請求積累到線程池隊列中。這樣,每個依賴的服務(wù)申請線程池都需要有一定的資源消耗。其優(yōu)點是可以處理緊急流量(當流量峰值到來時,數(shù)據(jù)可以存儲在線程池組中緩慢處理)

(2)信號量隔離模式:使用原子計數(shù)器(或信號量)記錄運行中有多少線程。請先判斷計數(shù)器的值。如果超過設(shè)定的最大線程數(shù),則丟棄更改類型的新請求。如果不超過,則執(zhí)行計數(shù)操作請求以計數(shù)器 1求返回計數(shù)器-1。這種方法是嚴格控制線程并立即返回模式,無法處理緊急流量(當流量峰值到來時,處理的線程超過數(shù)量,其他請求將直接返回,不繼續(xù)要求依賴的服務(wù))

超時機制設(shè)計

(1)超時有兩種,一種是要求等待超時,另一種是要求操作超時。

(2)等待加班:在任務(wù)進入隊列時設(shè)置任務(wù)進入隊列時間,判斷隊長任務(wù)進入隊列時間是否大于加班時間,超過任務(wù)時丟棄任務(wù)。

(3)運行超時:直接使用線程池提供的get方法。

如何提前發(fā)現(xiàn)雪崩?

首先,讓系統(tǒng)不崩潰,然后通過監(jiān)控發(fā)現(xiàn)要求接近或超過閥門值,然后根據(jù)具體情況進行處理。接近或超過閥門值的過程可稱為“提前發(fā)現(xiàn)雪崩”。

以上是雪崩應用服務(wù)場景和技術(shù)方案總結(jié)。如有問題,請聯(lián)系騰佑科技在線客服!

點擊展開全文

騰佑科技(mubashirfilms.com)成立于2009年,總部位于河南鄭州,是一家集互聯(lián)網(wǎng)基礎(chǔ)設(shè)施及軟硬件于一體化的高新技術(shù)企業(yè),具有IDC/ISP/ICP/云牌照、雙軟等資質(zhì),并擁有多個國家版權(quán)局認證。公司自成立以來,一直致力于發(fā)展互聯(lián)網(wǎng)IDC數(shù)據(jù)中心DataCenter、云計算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

熱門活動

百度云服務(wù)中心
  • 熱門資訊
  • 隨便看看