[英]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.