日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Apache Camel中的断路器模式

發(fā)布時間:2023/12/3 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Apache Camel中的断路器模式 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

駱駝通常在分布式環(huán)境中用于訪問遠程資源。 遠程服務可能由于各種原因和期間而失敗。 對于短時間后暫時不可用且可恢復的服務,重試策略可能會有所幫助。 但是某些服務可能會失敗或掛起更長時間,從而使調(diào)用應用程序無響應且速度緩慢。 防止級聯(lián)故障和關(guān)鍵資源耗盡的一個好策略是Michael Nygard在Release It!中描述的斷路器模式。 書。
斷路器是一種有狀態(tài)模式,用于包裝容易發(fā)生故障的資源并監(jiān)視錯誤。 最初,斷路器處于關(guān)閉狀態(tài) ,并將所有調(diào)用傳遞給包裝的資源。 當故障達到某個閾值時,電路將轉(zhuǎn)為打開狀態(tài) ,在此狀態(tài)下,錯誤將錯誤返回給調(diào)用方,而沒有實際調(diào)用包裝的資源。 這樣可以防止已經(jīng)發(fā)生故障的資源過載。 在這種狀態(tài)下,我們需要一種機制來檢測故障是否已經(jīng)結(jié)束并開始調(diào)用受保護的資源。 這就是所謂的半開狀態(tài)的第三個狀態(tài)。 在上次故障之后的一定時間后達到此狀態(tài)。 在這種狀態(tài)下,調(diào)用將傳遞到受保護的資源,但是調(diào)用的結(jié)果很重要。 如果調(diào)用成功,則假定受保護的資源已恢復并且電路進入關(guān)閉狀態(tài) ,如果調(diào)用失敗,則重置超時,并將電路移回到拒絕所有調(diào)用的打開狀態(tài) 。 這是Martin Fowler 帖子中Circuit Breaker的狀態(tài)圖:

駱駝如何實現(xiàn)斷路器?

Camel的最新快照版本提供了Circuit Breaker,作為負載均衡器策略。
Camel負載平衡器已經(jīng)具有用于Round Robin,Random,Failover等的策略,現(xiàn)在還具有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

總結(jié)

以上是生活随笔為你收集整理的Apache Camel中的断路器模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。