您好,登錄后才能下訂單哦!
這篇文章主要介紹“java熔斷器設(shè)計如何實現(xiàn)”,在日常操作中,相信很多人在java熔斷器設(shè)計如何實現(xiàn)問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”java熔斷器設(shè)計如何實現(xiàn)”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
我們已一個開關(guān)為例
在每一種狀態(tài)下,context不必關(guān)心每一種狀態(tài)下的行為。交給每一種狀態(tài)自己處理。
熔斷器是當(dāng)依賴的服務(wù)已經(jīng)出現(xiàn)故障時,為了保證自身服務(wù)的正常運行不再訪問依賴的服務(wù),防止雪崩效應(yīng)
熔斷器本身就是一個狀態(tài)機。
關(guān)閉狀態(tài):熔斷器的初始化狀態(tài),該狀態(tài)下允許請求通過。當(dāng)失敗超過閥值,轉(zhuǎn)入打開狀態(tài),
打開狀態(tài):熔斷狀態(tài),該狀態(tài)下不允許請求通過,當(dāng)進(jìn)入該狀態(tài)經(jīng)過一段時間,進(jìn)入半開狀態(tài)。
半開狀態(tài):在半開狀態(tài)期間,允許部分請求通過,在半開期間,觀察失敗狀態(tài)是否超過閥值。如果沒有超過進(jìn)入關(guān)閉狀態(tài),如果超過了進(jìn)入關(guān)閉狀態(tài)。如此往復(fù)。
之前,查了一些資料,網(wǎng)上所有的資料幾乎都是針對Hystrix的。這個只是針對分布式系統(tǒng)的接口請求,并不能運用于我們的系統(tǒng)中,因此這種情況下,根據(jù)原理自己實現(xiàn)了一個基本的分布式熔斷器,數(shù)值與計數(shù)器存放在redis中,因為redis的操作客戶端不一樣,我就以本地熔斷器為例,講解熔斷器實現(xiàn)。
希望我的文章能對于理解熔斷器,以及需要熔斷器的人有所幫助。
一個基本的本地熔斷器。
image.png
對外暴露接口
熔斷器對外暴露接口
熔斷器狀態(tài)對外暴露接口
三種狀態(tài)
關(guān)閉狀態(tài)實現(xiàn):
打開狀態(tài)
半開狀態(tài)
熔斷器
抽象熔斷器
本地熔斷器
測試?yán)?/p>
結(jié)果
到此,關(guān)于“java熔斷器設(shè)計如何實現(xiàn)”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。