簡體   English   中英

Hystrix:定制斷路器和恢復邏輯

[英]Hystrix: Custom circuit breaker and recovery logic

我剛剛閱讀了Hystrix指南,並試圖了解默認斷路器和恢復周期的運行方式,以及如何自定義其行為。

顯然,如果電路被觸發,Hystrix將自動調用命令的getFallBack()方法; 我明白這一點。 但是,首先使電路跳閘的標准是什么? 理想情況下,在我們考慮服務離線/不健康並使斷路器跳閘之前,我想嘗試多次嘗試支持服務(例如,最多3次嘗試)。 我怎么能實現這個,在哪里?

但我想如果我覆蓋默認的斷路器,我還必須覆蓋處理默認恢復期的任何機制。 如果支持服務出現故障,可能是出於以下幾種原因之一:

  • 客戶端和服務器之間存在網絡中斷
  • 該服務部署了一個錯誤,使其無法向客戶端返回有效響應
  • 客戶端部署了一個錯誤,使其無法向服務器發送有效請求
  • 一些奇怪的,短暫的服務打嗝(也許服務正在做一個主要的垃圾收集等)
  • 等等

在大多數情況下,僅僅等待N秒然后再次嘗試的恢復期是不夠的。 如果服務中有錯誤,或者有人在數據中心拔出了一些網線,我們將始終從此服務中獲取失敗。 只有在少數情況下,客戶服務才能在沒有任何人為干預的情況下自動修復自身。

所以我想我的下一個問題部分是“ 如何自定義默認恢復期策略? ”,但我猜主要是:“ 當服務中斷並需要人工干預時,如何使用Hystrix通知devops?

Hystrix調用回退方法基本上有四個原因 :異常,超時,並行請求太多,或者之前的調用中有太多異常。

如果返回代碼或從服務收到的異常表明重試有意義,您可能希望在run()方法中重試。

在您的命令回退方法中,您可能會在超時時重試 - 當有太多並行請求或太多異常時,再次調用相同服務通常沒有意義。

還詢問如何通知devops :您應該將監控系統連接到Hystrix,以輪詢斷路器的狀態以及成功和不成功呼叫的比率。 您可以使用發布者提供的指標 ,JMX,或使用Hystrix的API編寫自己的適配器。 我在我准備教程中為Riemann和Zabbix編寫了兩個適配器; 你只需要很少的代碼行。

本教程還有一個示例應用程序和一個加載驅動程序來嘗試一些場景。

Br,亞歷山大。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM