服務的熔斷和降級的區別

OkidoGreen發表於2020-04-05

https://blog.csdn.net/isitman/article/details/81184868

 

熔斷:

舉個例子解釋,生活中每家每戶都在用電,小明家的電線因為故障導致了小明家停電了。而小李、小張家的電是正常使用的。電力公司沒有因為小明家有故障線路而停掉其他人家的電,同時小明家沒有使用有故障的電路的電。這時即為熔斷。熔斷的目的是當A服務模組中的某塊程式出現故障後為了不影響其他客戶端的請求而做出的及時回應。

降級:

舉個例子解釋,我們去銀行排隊辦理業務,大部分的銀行分為普通視窗、特殊視窗(VIP視窗,老年視窗)。某一天銀行大廳排普通視窗的人巨多。這時特殊視窗貼出告示說某時刻之後再開放。那麼這時特殊視窗的工作人員就可以空出來去幫其他視窗辦理業務,提高辦事效率,已達到解決普通視窗排隊的人過的目的。這時即為降級,降級的目的是為了解決整體專案的壓力,而犧牲掉某一服務模組而採取的措施。

以上為了加深理解分別舉了個例子。有不妥的地方歡迎留言指出。下面摘錄一段網友的總結:

兩者其實從有些角度看是有一定的類似性的:
  1. 目的很一致,都是從可用性可靠性著想,為防止系統的整體緩慢甚至崩潰,採用的技術手段;
  2. 最終表現類似,對於兩者來說,最終讓使用者體驗到的是某些功能暫時不可達或不可用;
  3. 粒度一般都是服務級別,當然,業界也有不少更細粒度的做法,比如做到資料持久層(允許查詢,不允許增刪改);
  4. 自治性要求很高,熔斷模式一般都是服務基於策略的自動觸發,降級雖說可人工干預,但在微服務架構下,完全靠人顯然不可能,開關預置、配置中心都是必要手段;
而兩者的區別也是明顯的:
  1. 觸發原因不太一樣,服務熔斷一般是某個服務(下游服務)故障引起,而服務降級一般是從整體負荷考慮;
  2. 管理目標的層次不太一樣,熔斷其實是一個框架級的處理,每個微服務都需要(無層級之分),而降級一般需要對業務有層級之分(比如降級一般是從最外圍服務開始)

(總結參考來自:https://blog.csdn.net/guwei9111986/article/details/51649240/

相關文章