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