我們一般說的是線程等待。
例子:(以b為主)
1:a等待b,b等待c,c又等待d.
2:b是執行自己的應用,但是報錯了,導致下面的程序沒法走,所以又在等待。
主要發佈在:
1:查詢數據庫
2:redis集群崩潰
3:查詢mysql和訪問redis最大值,最後就佔用線程,最後沒法預留。
解決:
1:雙機部署,分開兩個機房
2:進行數據庫同步數據
具體發生了:
對 緩存 使用了熔斷(就像初中說的自動斷電保險絲,比如當電壓太高了,進行自動斷電,保護因為電流燒掉),降級處理。
熔斷(springcloud里的)
當出現線程錯誤,然後就開始在等待,有個規定的時間,如果超過90秒沒有像服務器註冊,那麼註冊中心就認為這個服務不可用。
然後就開啟熔斷,然後也把和這個相關的程序進行降級,減少他的訪問次數。如果當他正常,就關閉熔斷。
對原服務進行限流,資源隔離。
處理后:
Redis數據備份和回復
快速緩存預熱