日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

大部分老鐵都沒用過hystrix,一般來說能用到hystrix的公司都是比較大型的互聯網公司, 服務的限流,降級,熔斷,超時這些東西很多老鐵經常聽說,在一些技術演講技術大會上,聽一些大牛演講常說服務限流,熔斷,降級這些東西,很多公司的流量,性能,并發達不到那么大,對于高可用沒有高的要求,用到這些技術機會很少,所以老鐵對今天的內容很陌生,非常的感興趣,確實這是技術BAT用到最多的技術。所以今天一起探秘,看起來很牛逼的技術讓他技術的落地,能徹底的了解掌握這門技術。

 

軟件架構-服務限流降級熔斷機制詳解

 

 

(一)分布式系統中,會出現哪些問題?

  • 雪崩效應

分布式系統集群系統中一定會遇到的一個問題:服務雪崩效應 或者叫級聯效應

那么什么是服務雪崩效應呢?

在一個高度服務化的系統中,我們實現的一個業務邏輯通常會依賴多個服務,比如:

商品詳情展示服務會依賴商品服務, 價格服務, 商品評論服務.

 

軟件架構-服務限流降級熔斷機制詳解

 

 

調用三個依賴服務會共享商品詳情服務的線程池. 如果其中的商品評論服務不可用, 就會出

現線程池里所有線程都因等待響應而被阻塞, 從而造成服務雪崩.

 

軟件架構-服務限流降級熔斷機制詳解

 

 

服務雪崩效應:因服務提供者的不可用導致服務調用者的不可用,并將不可用逐漸放大的過

程,就叫服務雪崩效應。

  • 導致服務不可用的原因總結有幾點:程序Bug,大流量請求,硬件故障,緩存擊穿
  1. 【大流量請求】:在秒殺和大促開始前,如果準備不充分,瞬間大量請求會造成服務提供者的
  2. 不可用。
  3. 【硬件故障】:可能為硬件損壞造成的服務器主機宕機, 網絡硬件故障造成的服務提供者的
  4. 不可訪問。
  5. 【緩存擊穿】:一般發生在緩存應用重啟, 緩存失效時高并發, 所有緩存被清空時,以及短
  6. 時間內大量緩存失效時. 大量的緩存不命中, 使請求直擊后端,造成服務提供者超負荷運行,引
  7. 起服務不可用。
  • 在服務提供者不可用的時候,會出現重試的情況:用戶重試、代碼邏輯重試
  1. 【用戶重試】:在服務提供者不可用后, 用戶由于忍受不了界面上長時間的等待,會不斷刷新頁面
  2. 甚至提交表單。
  3. 【代碼邏輯重試】:服務調用端的會存在大量服務異常后的重試邏輯.
  4. 這些重試最終導致:進一步加大請求流量。
  • 根本原因:

大量請求線程同步等待造成的資源耗盡,當服務調用者使用同步調用 時, 會產生大量的等待線程占用系統資源. 一旦線程資源被耗盡,服務調用者提供的服務也將處于不可用狀態, 于是服務雪崩效應產生了。

(二)解決方案

  1. 超時機制
  2. 服務限流
  3. 服務熔斷
  4. 服務降級
  • 超時機制

服務級聯失敗(服務雪崩效應)的最根本原因是:大量請求線程同步等待造成的資源耗盡那么,在不做任何處理的情況下,服務提供者不可用會導致消費者請求線程強制等待,而造成系統資源耗盡,而且,既然服務提供者已經不可用了,還在作死的請求的話,是毫無意義的。那么,如果我們加入超時機制,例如2s,那么超過2s就會直接返回了,那么這樣是不是一定程度上可以抑制消費者資源耗盡的問題。

  • 服務限流(資源隔離)

限制請求核心服務提供者的流量,使大流量攔截在核心服務之外,這樣可以更好的保證核心服務提供者不出問題,對于一些出問題的服務可以限制流量訪問,只分配固定線資源訪問,這樣能使整體的資源不至于被出問題的服務耗盡,進而整個系統雪崩那么服務之間怎么限流,怎么資源隔離了?例如通過線程池+隊列的方式,通過信號量的方式。當商品評論服務不可用時, 即使商品服務獨立分配的20個線程全部處于同步等待狀態,也不會影響其他依賴服務的調用.

 

軟件架構-服務限流降級熔斷機制詳解

 

 

  • 服務熔斷

遠程服務不穩定或網絡抖動時暫時關閉,就叫服務熔斷。舉個通俗易懂的例子,就跟我們現實生活中的“跳閘”一樣,跳閘應該都聽說過吧,比如說家里有點短路了,那是不是閘會跳掉,等你把短路的問題找到并且修復后,然后你把這個閘一送,是不是整個家庭的電路又恢復了正常。這就是熔斷器。

所以,同樣的道理,當依賴的服務有大量超時時,在讓新的請求去訪問根本沒有意義,只會無畏的消耗現有資源。比如我們設置了超時時間為1s,如果短時間內有大量請求在1s內都得不到響應,就意味著這個服務出現了異常,此時就沒有必要再讓其他的請求去訪問這個依賴了,這個時候就應該使用熔斷器避免資源浪費。

  • 服務降級

有服務熔斷,必然要有服務降級。所謂降級,就是當某個服務熔斷之后,服務將不再被調用,此時客戶端可以自己準備一個本地的fallback(回退)回調,返回一個缺省值。 例如:(備用接口/緩存/mock數據)這樣做,雖然服務水平下降,但好歹可用,比直接掛掉要強,當然這也要看適合的業務場景。

PS:這次說了雪崩的解決方案和這幾種方案的介紹,下次講講如何通過springclud技術完成技術的落地。

分享到:
標簽:架構 軟件
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定