中華廚具網(wǎng)
    手機版    二維碼   標簽云  廚具企業(yè)大全

使用spring boot + resilience 4j實現(xiàn)斷路器

2024-05-13 08:29:49 來源:今日頭條 作者/編輯: 瀏覽次數(shù):8322 手機訪問 使用手機“掃一掃”以下二維碼,即可分享本文到“朋友圈”中。

resilience 4j提供以下功能。

斷路器

ratelimiter

艙壁

重試

高速緩存

timelimiter

如果您打算在spring boot中使用它,可以使用starter。請注意,spring boot 1.x和2.x系列之間的artifactid似乎有所不同。另外,上面只包含circuitbreaker和ratelimiter,在使用其他功能時需要單獨添加依賴項。(由于未準備好autoconfigure,您還需要自己定義bean。)

這次我將總結(jié)如何在spring boot 2.x系列中使用circuitbreaker和ratelimiter。

環(huán)境

jdk 8

spring boot 2.1.2.release

resilience 4j 0.13.2

斷路器

當某些具有微服務的服務發(fā)生故障時,可以臨時阻止對故障服務的訪問并防止故障傳播。

circuitbreaker有三種狀態(tài):closed,open,halfopen。如果是正常的,則它是關閉的,如果處理失敗超過一定數(shù)量,它將變?yōu)榇蜷_并且訪問被阻止。當在打開狀態(tài)下經(jīng)過一段時間后,進入halfopen狀態(tài)。如果處理在halfopen狀態(tài)下失敗超過一定量,則返回到關閉狀態(tài)。

在resilience 4j中,處理的成功和失敗由環(huán)形緩沖器ring bit buffer管理,并且當緩沖器中的故障數(shù)超過設定的速率時,狀態(tài)轉(zhuǎn)變。

斷路器使用狀態(tài)中的ring bit buffer closed來存儲呼叫的成功或失敗狀態(tài)。成功的呼叫存儲為0位,失敗的呼叫存儲為1位。ring bit buffer具有(可配置的)固定大小。環(huán)位緩沖區(qū)在內(nèi)部使用類似數(shù)據(jù)結(jié)構(gòu)的bitset來存儲與布爾數(shù)組相比節(jié)省內(nèi)存的位。bitset使用long []數(shù)組來存儲這些位。這意味著bitset只需要一個包含16個長(64位)值的數(shù)組來存儲1024個調(diào)用的狀態(tài)。

例如,如果環(huán)形緩沖區(qū)的大小為10,則必須至少評估10個調(diào)用,然后才能計算故障率。如果僅評估了9個呼叫,即使所有9個呼叫都失敗,斷路器也不會打開。

用于closed - >; open和halfopen - >; closed判斷的環(huán)形緩沖區(qū)是不同的,可以定義大小,但使用相同的判斷條件(錯誤率)。

在持續(xù)關閉時間結(jié)束后,斷路器狀態(tài)從open更改為half_open并允許調(diào)用以查看后端是否仍然不可用或已再次可用。

斷路器使用另一個(可配置的)環(huán)位緩沖區(qū)來評估half_open狀態(tài)中的故障率。如果故障率高于配置的閾值,則狀態(tài)將更改回open。如果故障率低于或等于閾值,則狀態(tài)變回closed。

此外,處理的成功和失敗由異常判斷。默認情況下,如果任何異常拋出異常,則會將其視為處理失敗,但您也可以指定要將其視為失敗的條件。

設置

application.yml你可以設置定義多個斷路器。

如果你想只考慮一個特定的異常和故障使用recordexceptions,當你不想忽視特定的異常時使用ignoreexceptions。

有兩種方法可以使用spring aop并在函數(shù)中實現(xiàn)它。無論哪種實現(xiàn),如果circuit處于open狀態(tài),它將生成circuitbreakeropenexception。

在以下實現(xiàn)示例中,為簡單起見,它不是微服務。最初resttemplate,我認為這將是service class 調(diào)用其他服務api等使用等的過程。

spring aop實現(xiàn)

通過@circuitbreaker(name = "hogehoge")注釋到類或方法上則可以啟用斷路器。如果在類指定這個注釋,則為所有公共方法啟用斷路器。

如何寫業(yè)務函數(shù)?

調(diào)用端使用斷路器的decorate~方法修飾要調(diào)用的方法。

后備處理

接下來,如果發(fā)生故障,執(zhí)行回退過程怎么辦?在hystrix 的情況下,通過指定@hystrixcommand("hogemethod"),由于resilience4j沒有設置的這樣的功能,必須自己實現(xiàn)。

ratelimiter

您可以限制每單位時間的執(zhí)行次數(shù)。

單位時間是一個周期,并且可以在一個周期中執(zhí)行的數(shù)量是有限的。如果它超過了可以在一個循環(huán)中執(zhí)行的上限,則讓它等待,如果等待時間超過超時時間,則發(fā)生requestnotpermitted。

在application.yml可以定義多個ratelimiter。

它與斷路器實現(xiàn)方式相同,有兩種方法可以使用spring aop并在業(yè)務函數(shù)中編寫它。實現(xiàn)方法也類似于斷路器。

調(diào)用者不用考慮任何事情,只需執(zhí)行該方法即可。

函數(shù)方法:

后備處理,與斷路器一樣,沒有自動執(zhí)行回退處理的機制,因此您需要自己實現(xiàn)它。

單位時間為5秒,超時時間為1秒,每單位時間的執(zhí)行次數(shù)為1。如果同時發(fā)送多個請求,則會發(fā)出失敗請求。(如果您同時請求三個,則至少一個將始終失敗。)

寫在最后:

歡迎留言討論,如需java方面的架構(gòu)資料,我這里剛好有一份,怎么領取→→→關注+轉(zhuǎn)發(fā) 然后私信“架構(gòu)資料” 即可領取

來源:今日頭條

以上是網(wǎng)絡信息轉(zhuǎn)載,信息真實性自行斟酌。

 
本條標題:使用spring boot + resilience 4j實現(xiàn)斷路器
本條信息網(wǎng)址:
文本助手 資訊搜索 分享好友 打印本文 關閉窗口
閱讀關鍵詞
  • 手機瀏覽本文

    手機應用中掃描本文二維碼,即可瀏覽本文或分享到您的社交網(wǎng)絡中。

  • 微信公眾號

    掃描二維碼,關注中華廚具網(wǎng)微信公眾號,實時了解行業(yè)最新動態(tài)。

版權(quán)/免責聲明:
一、本文圖片及內(nèi)容來自網(wǎng)絡,不代表本站的觀點和立場,如涉及各類版權(quán)問題請聯(lián)系及時刪除。
二、凡注明稿件來源的內(nèi)容均為轉(zhuǎn)載稿或由企業(yè)用戶注冊發(fā)布,本網(wǎng)轉(zhuǎn)載出于傳遞更多信息的目的;如轉(zhuǎn)載稿涉及版權(quán)問題,請作者聯(lián)系我們,同時對于用戶評論等信息,本網(wǎng)并不意味著贊同其觀點或證實其內(nèi)容的真實性。
三、轉(zhuǎn)載本站原創(chuàng)文章請注明來源:中華廚具網(wǎng)

0相關評論
今日熱點文章更多
品牌聚焦更多
推薦品牌更多
熱門頻道
關閉廣告
合作伙伴:
中華廚具網(wǎng) 魯ICP備2021046805號         魯公網(wǎng)安備 37162502000363號 (c)2018-2025SYSTEM All Rights Reserved 投資有風險 加盟需謹慎
關閉廣告
關閉廣告
伊人久久大香线焦AV综合影院| av午夜福利一片免费看久久| 精品国产婷婷久久久| 久久综合给合综合久久| 7777久久久国产精品消防器材 | 国产精品久久久久久久久久影院| 伊人久久综合无码成人网| 亚洲国产精品久久久久婷婷软件 | 性欧美大战久久久久久久| 久久久久久国产精品免费无码| 伊人久久大香线焦综合四虎| 99精品久久久久久久婷婷| 久久精品亚洲精品国产欧美| 久久久久无码精品国产不卡| 久久性精品| 97精品国产97久久久久久免费| 国产激情久久久久久熟女老人| 国产精品美女久久久久av爽| 国产精品国色综合久久| 777午夜精品久久av蜜臀| 热99RE久久精品这里都是精品免费| 香港aa三级久久三级| 99精品久久久久中文字幕| 久久福利资源国产精品999| 无码8090精品久久一区| 精品无码久久久久久久动漫| 99久久超碰中文字幕伊人| 亚洲级αV无码毛片久久精品| 午夜精品久久久久9999高清| 久久久久99精品成人片牛牛影视| 久久99精品综合国产首页| 国产精品久久久久久吹潮| 久久久久国产精品熟女影院| 无码久久精品国产亚洲Av影片 | 午夜精品久久久久久久久| 久久精品国产久精国产一老狼| 7777精品伊人久久久大香线蕉| 欧美日韩精品久久久久| 久久久久久久91精品免费观看| 久久无码高潮喷水| 国产精品无码久久久久久|