高併發 - 服務降級與服務熔斷

爲什麼要服務降級

  1. 假設一個服務器1秒最大隻能併發處理5W條請求,如果用戶併發請求6萬,那麼多的1萬請求在1秒內多出1W個cpu時間切片,這些cpu時間切片佔用了1秒的資源,導致前面5W請求不夠資源,這個時候大家都要花費時間在等待資源的時間上,如果這個時候後續請求都是超過5W,那麼前面的請求來不及處理,後面的請求不夠資源,找出cop切片越來越多,沒有請求獲取的時間資源越來越少,最終前面的請求處理不完,後面的請求一直不斷,數據庫連接不釋放,數據庫崩了–》服務崩了,請求分配給其他服務器(服務集羣)–》集羣崩了。

一 服務降級

服務器壓力過大的時候,限制訪問過大的接口,返回數據提示服務器繁忙等信息,比如12306搶票

1返回數據類型

  1. 提示服務繁忙,跳轉靜態頁面
  2. 會提示稍晚能看到結果, 用戶的請求放到異步隊列延遲處理。

2降級要做到使用配置中心做成可在線配置調整。

二 服務熔斷

如果某個目標服務調用慢或者有大量超時,此時,停止該服務的調用,對於後續調用請求,不在處理,直接返回服務掛了,這樣快速釋放資源。如果目標服務情況好轉則恢復調用。
1 . 好處是目標服務不可用的時候,不會對其他服務的功能造成影響,因爲其他服務調用獲取的信息是該服務不可用

1爲什麼要服務熔斷

1 . 目標服務請求調用慢,其他服務調用目標服務的時候會卡在這裏,當大量請求目標服務的時候會造成大量請求堵塞,後面請求不斷,最後雪崩。

1熔斷模塊

  1. 熔斷請求判斷機制算法:使用無鎖循環隊列計數,每個熔斷器默認維護10個bucket,每1秒一個bucket,每個blucket記錄請求的成功、失敗、超時、拒絕的狀態,默認錯誤超過50%且10秒內超過20個請求進行中斷攔截。
  2. 熔斷恢復:對於被熔斷的請求,每隔5s允許部分請求通過,若請求都是健康的(RT<250ms)則對請求健康恢復。
  3. 熔斷報警:對於熔斷的請求打日誌,異常請求超過某些設定則報警

三降級與熔斷對比

  1. 目的: 都是防止系統的整體緩慢甚至奔潰而採用的技術手段。
  2. 表現: 給用戶一種當前服務不可用或者不可達的感覺
  3. 粒度: 降級一般作用到接口,熔斷一般作用到模塊。
  4. 自治: 基本都是靠系統達到某一臨界條件時,實現自動的降級與熔斷 、
  5. 觸發原因: 服務器或者接口壓力過大。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章