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

            歡迎訪問 生活随笔!

            生活随笔

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

            编程问答

            hystrix应用 博客_使用Hystrix DSL创建弹性骆驼应用程序

            發布時間:2023/12/3 编程问答 38 豆豆
            生活随笔 收集整理的這篇文章主要介紹了 hystrix应用 博客_使用Hystrix DSL创建弹性骆驼应用程序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

            hystrix應用 博客

            Apache Camel是一個成熟的集成庫(到現在已有9年的歷史了),它實現了Enterprise Integration Patterns一書中的所有模式。 但是Camel不僅是EIP實現庫,它還是一個不斷發展,添加新模式并適應行業變化的現代框架。 除了每個版本中添加了數十個連接器之外,Camel還與Java語言新版本本身和其他Java框架提供的新功能緊密結合。 隨著時間的流逝,諸如SOA和ESB之類的某些架構樣式逐漸失去吸引力,而諸如REST之類的新架構樣式則使微服務受到歡迎。

            為了使開發人員能夠利用這些新趨勢進行集成,Camel通過添加諸如REST DSL之類的新DSL和諸如Circuit Breaker之類的新模式以及諸如Spring Boot之類的組件來做出響應。 這還不是全部,我們還遠遠沒有完成。 借助Docker容器和Kubernetes等技術,IT行業現在正以更快的速度向前發展,而Camel也在不斷發展以減輕開發人員的負擔。 要了解某種工具,您需要在Docker和Kubernetes上開發和運行應用程序,請查看Fabric8項目,特別是工具,例如Docker Maven插件,Kubernetes CDI擴展,Kubernetes Java客戶端,針對Kubernetes的Arquilian測試等。大量有趣的技術將帶給您激動人心的時代,下面讓我們看一下其中的一種:駱駝和基于Hystrix的斷路器。

            兩座駱駝斷路器,該選擇哪一個?

            兩年前,當我第一次閱讀Michael Nygard的Release It時 ,我無法停止在Camel中實現Circuit Breaker模式 。 通常,我會根據實際客戶的需求來貢獻自己的力量,但是斷路器模式是如此優雅,我不得不這樣做。 為了以非介入方式實現它,我將其添加為Camel負載均衡器策略。 這很簡單:

            <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring"><route><from uri="direct:start"/><loadBalance><circuitBreaker threshold="2" halfOpenAfter="1000"><exception>MyCustomException</exception></circuitBreaker><to uri="mock:result"/></loadBalance></route> </camelContext>

            上面的DSL自我描述:如果模擬:結果端點拋出的MyCustomExceptions數量達到閾值數量,則CircuitBreaker進入打開狀態并開始拒絕所有請求。 1000毫秒后,它將進入halfOpenAfter狀態,并且在此狀態下的第一個請求的結果將其下一個狀態定義為已關閉或已打開。 您可以想象這是CircuitBreker的最簡單的實現,但仍然有用。

            從那時起,Microseservices體系結構變得越來越流行,Circuit Breaker Pattern及其java實現Hystrix也是如此 。 勞爾·克里帕拉尼(RaúlKripalani)在某個時候開始在駱駝(Camel)實施Hystrix,并將所有基礎工作落實到位,但是隨著時間的流逝,它失去了動力。 然后一次又一次地看到來自不同客戶的相同請求,我接下了繼電器并繼續進行工作,并將Hystrix組件推到了Camel。 看到社區的反饋,它仍然沒有它應有的優雅。 然后, Claus介入并通過將Hystrix轉變為EIP(而非組件)而使其成為Camel DSL的一部分。 那么現在在駱駝中創建基于Hystrix的斷路器是什么樣子呢?

            public class ClientRoute extends RouteBuilder {@Overridepublic void configure() {from("timer:trigger?period=1s").log(" Client request: ${body}").hystrix().to("http://localhost:9090/service1")// use onFallback() to provide a repsonse message immediately: .transform().simple("Fallback ${body}")// use onFallbackViaNetwork() when there is a 2nd service call.onFallbackViaNetwork().to("http://localhost:7070/service2").end().log("Client response: ${body}");} }

            在上面的示例中,您幾乎看不到斷路器的所有可用選項,要查看所有這些選項,請檢出官方文檔并嘗試放置在示例中的 Claus應用程序。

            根據此示例,您可能認為Hystrix是Camel核心的一部分,但事實并非如此。 駱駝核心仍然是這樣,沒有第三方庫的依賴。 如果要使用基于Hystrix的斷路器,則需要像其他任何非核心組件一樣,將camel-hystrix依賴項添加到依賴項中,并使其在運行時可用。

            快速失敗,后備,隔板,超時等

            Hystrix庫實現的不僅僅是斷路器模式。 它也可以進行批量處理,請求緩存,超時,請求折疊等。Camel中的實現不支持請求折疊和緩存,因為這些已經使用Camel中可用的其他模式和組件完成了。 Camel中的請求折疊可以使用Aggregator EIP完成,而緩存可以使用Redis,Inifinspan,Hazelcast等緩存組件完成。Camel中的Hystrix DSL提供了Hystrix支持的大約30種配置選項,還通過JMX和/或公開了指標Hystrix儀表板的 REST。

            最后一點,不要忘記創建一個真正的彈性應用程序,您需要的不僅僅是Hystrix。 Hystrix將在線程池級別進行批量處理,但是如果您不在進程,主機和物理計算機級別應用相同的原理,那還不夠。 要創建一個可恢復的分布式系統,您還需要使用Retry,Throttleing,Timeout…和其他好的技巧,我在Camel Design Patterns一書中已經描述了其中的一些技巧。

            要了解新模式,請查看示例 ,然后開始使用Hystrix保護基于Camel的微服務。

            翻譯自: https://www.javacodegeeks.com/2016/06/create-resilient-camel-applications-hystrix-dsl.html

            hystrix應用 博客

            總結

            以上是生活随笔為你收集整理的hystrix应用 博客_使用Hystrix DSL创建弹性骆驼应用程序的全部內容,希望文章能夠幫你解決所遇到的問題。

            如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。