您當前的位置:首頁 > 體育

降級-熔斷-限流-傻傻分不清楚

作者:由 支付技術那些事 發表于 體育時間:2019-04-03

降級-熔斷-限流-傻傻分不清楚

1. 熔斷

1.1 熔斷來源

我們家用電閘上都有保險絲模組,當電壓出現短路問題時,自動跳閘,此刻電路主動斷開,我們的電器就會收到保護。否則,不能斷開,後果不堪設想。

保險絲就是一個自我保護裝置,保護整個電路。

1.2 分散式系統中的熔斷

在分散式系統中,我們往往需要依賴下游服務,不管是內部系統還是第三方服務,如果下游出現問題,我們還是盲目地去請求,及時失敗了多次,還是傻傻的去請求,去等待。

這樣,

一是增加了整個鏈路的請求時間

第二,下游系統本身就出現了問題,不斷的請求又把系統問題加重了,恢復困難。

1.3 熔斷的作用

熔斷模式可以防止應用程式不斷地嘗試可能超時和失敗的服務,能達到應用程式執行而不必等待下游服務修正錯誤服務。

熔斷器模式最牛的是能讓應用程式自我診斷下游系統的錯誤是否已經修正,如果沒有,不放量去請求,如果請求成功了,慢慢的增加請求,再次嘗試呼叫。

1.4 像不像代理模式?

熔斷器模式像那些,容易導致錯誤操作的,一種代理

這種代理能夠記錄呼叫發生的錯誤次數,並根據次數,自我決定是否繼續呼叫還是立刻返回錯誤。

降級-熔斷-限流-傻傻分不清楚

比如說A服務呼叫B服務,B服務是下游的服務提供,或者是第三方服務,容易發生問題。這樣既能防止不斷的呼叫,是下游服務更壞,保護了下游方,還能降低自己的執行成本,快速的響應,減少延遲,增加吞吐量。

業內目前流行的熔斷器很多,例如阿里出的Sentinel,以及最多人使用的Hystrix。

2. 降級

2.1 降級的本質

降級就是為了解決資源不足和訪問量增加的矛盾

在有限的資源情況下,為了能抗住大量的請求,就需要對系統做出一些犧牲,有點“棄卒保帥”的意思。放棄一些功能,保證整個系統能平穩執行

2.2 降級犧牲的是什麼?

強強一致性變成最終一致性

大多數的系統是不需要強一致性的。

強一致性就要求多種資源的佔用,減少強一致性就能釋放更多資源

這也是我們一般利用訊息中介軟體來削峰填谷,變強一致性為最終一致性,也能達到效果

幹掉一些次要功能

停止訪問不重要的功能,從而釋放出更多的資源

舉例來說,比如電商網站,評論功能流量大的時候就能停掉,當然能不直接幹掉就別直接,最好能簡化流程或者限流最好

簡化功能流程

。把一些功能簡化掉

2.3 降級的注意點

對業務進行仔細的梳理和分析

哪些是核心流程必須保證的,哪些是可以犧牲的

什麼指標下能進行降級

吞吐量、響應時間、失敗次數等達到一個閾值才進行降級處理

如何降級

降級最簡單的就是在業務程式碼中配置一個開關或者做成配置中心模式,直接在配置中心上更改配置,推送到相應的服務。

3. 限流

3.1 限流的目的

透過對併發訪問進行限速。

3.2 限流有哪些行為

拒絕服務

最簡單的方式,把多餘的請求直接拒絕掉

做的高大上一些,可以根據一定的使用者規則進行拒絕策略。

服務降級

降級甚至關掉後臺的某些服務。

特權請求

在多租戶或者對使用者進行分級時,可以考慮讓一些特殊的使用者有限處理,其他的可以考慮幹掉

延時處理

可以利用佇列把請求快取住。削峰填谷。

3.3 限流的實現方式

計數器

最簡單的實現方式 ,維護一個計數器,來一個請求計數加一,達到閾值時,直接拒絕請求。

一般實踐中用 ngnix + lua + redis 這種方式,redis 存計數值

漏斗模式

降級-熔斷-限流-傻傻分不清楚

流量就像進入漏斗中的水一樣,而出去的水和我們系統處理的請求一樣,當流量大於漏斗的流出速度,就會出現積水,水對了會溢位。

漏斗很多是用一個佇列實現的,當流量過多時,佇列會出現積壓,佇列滿了,則開始拒絕請求。

令牌桶

降級-熔斷-限流-傻傻分不清楚

看圖例,令牌通和漏斗模式很像,主要的區別是增加了一箇中間人,這個中間人按照一定的速率放入一些token,然後,處理請求時,需要先拿到token才能處理,如果桶裡沒有token可以獲取,則不進行處理。

3.4 限流的一些注意點

限流越早設計約好,架構成型後,不容易加入

限流模組不要成為系統的瓶頸,效能要求高

最好有個開關,可以直接介入

限流發生時,能及時發出通知事件

限流發生時,給使用者提供友好的提示 。

4. 三者的關係

熔斷強調的是服務之間的呼叫能實現自我恢復的狀態;

限流是從系統的流量入口考慮,從進入的流量上進行限制,達到保護系統的作用;

降級,是從系統內部的平級服務或者業務的維度考慮,流量大了,可以幹掉一些,保護其他正常使用;

熔斷是降級方式的一種;

降級又是限流的一種方式;

三者都是為了透過一定的方式去保護流量過大時,保護系統的手段。

降級-熔斷-限流-傻傻分不清楚

標簽: 限流  降級  請求  服務  熔斷