apache camel_Apache Camel中的断路器模式
apache camel
駱駝通常在分布式環境中用于訪問遠程資源。 遠程服務可能由于各種原因和期間而失敗。 對于短時間后暫時不可用且可恢復的服務,重試策略可能會有所幫助。 但是某些服務可能會失敗或掛起更長時間,從而使調用應用程序無響應且速度緩慢。 防止級聯故障和關鍵資源耗盡的一個好策略是Michael Nygard在Release It!中描述的斷路器模式。 書。
斷路器是一種有狀態模式,用于包裝容易發生故障的資源并監視錯誤。 最初,斷路器處于關閉狀態 ,并將所有調用傳遞給包裝的資源。 當故障達到某個閾值時,電路將轉為打開狀態 ,在此狀態下它將錯誤返回給調用方,而無需實際調用包裝的資源。 這樣可以防止已經發生故障的資源過載。 在這種狀態下,我們需要一種機制來檢測故障是否已經結束并開始調用受保護的資源。 這就是所謂的半開狀態的第三個狀態。 在上次故障之后的一定時間后達到此狀態。 在這種狀態下,調用將傳遞到受保護的資源,但是調用的結果很重要。 如果調用成功,則假定受保護的資源已恢復,并且電路進入關閉狀態 ;如果調用失敗,則重置超時,并將電路移回到拒絕所有調用的打開狀態 。 這是Martin Fowler 帖子中Circuit Breaker的狀態圖:
駱駝如何實現斷路器?
Camel的最新快照版本提供了Circuit Breaker,作為負載均衡器策略。
Camel負載平衡器已經具有用于Round Robin,Random,Failover等的策略,現在還具有CircuiBreaker策略。
這是一個示例負載均衡器,它使用具有2個錯誤的閾值和1秒的halfOpenAfter超時閾值的斷路器策略。 還要注意,此策略僅適用于由MyCustomException引起的錯誤
new RouteBuilder() {public void configure() {from("direct:start").loadBalance().circuitBreaker(2, 1000L, MyCustomException.class).to("mock:result");} };這是使用Spring XML DSL的相同示例:
<route><from uri="direct:start"/><loadBalance><circuitBreaker threshold="2" halfOpenAfter="1000"><exception>MyCustomException</exception></circuitBreaker><to uri="mock:result"/></loadBalance> </route>翻譯自: https://www.javacodegeeks.com/2014/04/circuit-breaker-pattern-in-apache-camel.html
apache camel
總結
以上是生活随笔為你收集整理的apache camel_Apache Camel中的断路器模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 巧妙地避开电脑弹窗广告电脑如何屏蔽弹窗广
- 下一篇: 笔记本键盘无法使用怎么办笔记本电脑键盘无