天天看點

高并發系統三大利器之降級

引言

這是高并發系統三大利器的最後一篇文章了,前面兩篇如果沒看的話可以先去看下前面的文章

《高并發系統三大利器之限流》 《高并發系統三大利器之緩存》

。說到服務降級,大多數人可能會認為熔斷和降級是一樣的。我曾經也一度是這樣認為的,直到有一天一個面試官問我熔斷和降級有啥差別嗎?我直接回答沒啥差別,然後就讓我回去等通知了,我才知道它們還是有差別的。我們先看下服務降級的定義:

服務降級是當伺服器壓力劇增的情況下,根據目前業務情況及流量對一些服務和頁面有政策的降級,以此釋放伺服器資源以保證核心任務的正常運作。

來源于百度百科。這些話看起來是不是不是很好了解,那麼我們可以舉個栗子:雙十一的時候,我們買東西是不是都不允許修改購物位址,不允許發起退貨,不允許退款還有很多服務都不可以用,隻允許使用者選擇商品加入購物車付錢。那天隻有一個目的就是讓一些不是很重要的服務所占用的

cpu

資源都讓出來,給購物,付款這樣的核心服務。這樣的話,使用者付款的速度就會越來越快,畢竟前多少名支付的使用者是有免單機會的(大家都會擠在0點那一刻去付款)。服務降級主要用于當整個微服務架構整體的負載超出了預設的上限門檻值或即将到來的流量預計将會超過預設的門檻值時,為了保證重要或基本的服務能正常運作,将一些 不重要 或 不緊急 的服務或任務進行服務的 延遲使用 或 暫停使用。

降級就是為了解決資源不足和通路量增加的沖突。

服務降級方式

  • 延遲服務:定時任務處理、或者

    mq

    延時處理。比如新使用者注冊送多少優惠券可以提示使用者優惠券會24小時到達使用者賬号中,我們可以選擇再淩晨流量較小的時候,批量去執行送券。
  • 頁面降級:頁面點選按鈕全部置灰,或者頁面調整成為一個靜态頁面顯示“系統正在維護中,。。。。”。
  • 關閉非核心服務:比如電商關閉推薦服務、關閉運費險、退貨退款等。保證主流程的核心服務下單付款就好。
  • 寫降級:比如秒殺搶購,我們可以隻進行

    Cache

    的更新傳回,然後通過mq異步扣減庫存到

    DB

    ,保證最終一緻性即可,此時可以将

    DB

    降級為

    Cache

  • 讀降級:比如多級緩存模式,如果後端服務有問題,可以降級為隻讀緩存,這種方式适用于對讀一緻性要求不高的場景。

服務熔斷

服務雪崩

說到服務熔斷我們就得先了解下什麼是服務雪崩。雪崩效應好比就是蝴蝶效應,說的都是一個小因素的變化,卻往往有着無比強大的力量,以至于最後改變整體結構、産生意想不到的結果。

多個微服務之間調用的時候,比如

A

服務調用了

B

服務,

B

C

服務,然後

C

服務由于機器當機或者網略故障, 然後就會導緻

B

服務調用

C

服務的時候逾時,然後

A

服務調用B服務也會逾時,最終整個鍊路都不可用了,導緻整個系統不可用就跟雪蹦一樣。

高并發系統三大利器之降級

##### 雪崩效應産生的幾種場景

  • 突增流量:比如一大波爬蟲,或者黑客攻擊等。
  • 程式bug:代碼死循環,或者資源未釋放等。
  • 硬體原因:機器當機、機房斷電、光纖被挖斷等。

    說完了服務雪崩然後就可以說下服務熔斷了。 熔斷機制是應對雪崩效應的一種微服務鍊路保護機制,在網際網路系統中當下遊的服務因為某種原因突然變得不可用或響應過慢,上遊服務為了保證自己整體服務的可用性,暫時不再繼續調用目标服務,直接快速傳回,快速釋放資源。如果目标服務情況好轉則恢複調用。

通俗點來說的話就是,比如我們以前大學的時候宿舍是不是不允許使用大功率電器,一旦使用大功率電器,電流過大,宿舍立馬就會跳閘斷電。因為已經超過了這個已經超過了電線所能承載的最大電流。如果不斷電話的會導緻火災,然後整棟宿舍都會斷電。宿舍停電之後要恢複來電的話需要到宿管那裡解釋下為什麼突然停電了,上交大功率電器,一頓教育然後才會給你恢複供電。

熔斷和降級的比較

共性
  • 目的很一緻:都是從可用性可靠性着想,為防止系統的整體緩慢甚至崩潰,采用的技術手段,都是為了保證系統的穩定。
  • 終表現類似:對于兩者來說,最終讓使用者體驗到的是某些功能暫時不可達或不可用;
  • 粒度一般都是服務級别:當然,業界也有不少更細粒度的做法,比如做到資料持久層(允許查詢,不允許增删改);
  • 自治性要求很高: 熔斷模式一般都是服務基于政策的自動觸發,比如

    降級雖說可人工幹預,但在微服務架構下,完全靠人顯然不可能,開關預置、配置中心都是必要手段;

差異性
  • 觸發原因不太一樣,服務熔斷一般是某個服務(下遊服務)故障引起,而服務降級一般是從整體負荷考慮;
  • 管理目标的層次不太一樣,熔斷其實是一個架構級的處理,每個微服務都需要(無層級之分),而降級一般需要對業務有層級之分(比如降級一般是從最外圍服務開始)熔斷是降級方式的一種展現。

結束

  • 由于自己才疏學淺,難免會有纰漏,假如你發現了錯誤的地方,還望留言給我指出來,我會對其加以修正。
  • 如果你覺得文章還不錯,你的轉發、分享、贊賞、點贊、留言就是對我最大的鼓勵。
  • 感謝您的閱讀,十分歡迎并感謝您的關注。
    高并發系統三大利器之降級

站在巨人的肩膀上摘蘋果:

https://blog.csdn.net/guwei9111986/article/details/51649240/

繼續閱讀