摘要:一個啥都不做的斷路器,它允許所有請求通過,并且斷路器始終處于閉合狀態斷路器的另一個實現類。主要步驟有如果斷路器強制打開,返回如果斷路器強制關閉,返回判斷的值,如果大于等于,返回否則返回
package com.netflix.hystrix; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.atomic.AtomicReference; import com.netflix.hystrix.HystrixCommandMetrics.HealthCounts; import rx.Subscriber; import rx.Subscription; public interface HystrixCircuitBreaker { boolean allowRequest(); boolean isOpen(); void markSuccess(); void markNonSuccess(); boolean attemptExecution(); class Factory { // String is HystrixCommandKey.name() (we can"t use HystrixCommandKey directly as we can"t guarantee it implements hashcode/equals correctly) private static ConcurrentHashMapcircuitBreakersByCommand = new ConcurrentHashMap (); } class HystrixCircuitBreakerImpl implements HystrixCircuitBreaker { } static class NoOpCircuitBreaker implements HystrixCircuitBreaker { } }
下面先看一下該接口的抽象方法:
allowRequest(): 每個Hystrix命令的請求都通過它判斷是否被執行(已經不再使用,使用attemptExecution()方法進行判斷)
attemptExecution(): 每個Hystrix命令的請求都通過它判斷是否被執行
isOpen(): 返回當前斷路器是否打開
markSuccess(): 用來關閉斷路器
markNonSuccess: 用來打開斷路器
下面看一下該接口中的類:
Factory: 維護了一個Hystrix命令和HystrixCircuitBreaker的關系的集合ConcurrentHashMap
NoOpCircuitBreaker: 一個啥都不做的斷路器,它允許所有請求通過,并且斷路器始終處于閉合狀態
HystrixCircuitBreakerImpl:斷路器的另一個實現類。
在該類中定義了斷路器的五個核心對象:
HystrixCommandProperties properties:斷路器對應實例的屬性集合對象/斷路器對應HystrixCommand實例的屬性對象
HystrixCommandMetrics metrics:用來讓HystrixCommand記錄各類度量指標的對象
AtomicReference
AtomicLong circuitOpened:斷路器打開的時間戳,默認-1,表示斷路器未打開
AtomicReference
對接口的實現如下:
@Override public boolean isOpen() { if (properties.circuitBreakerForceOpen().get()) { return true; } if (properties.circuitBreakerForceClosed().get()) { return false; } return circuitOpened.get() >= 0; }
用來判斷斷路器是否打開或關閉。主要步驟有:
如果斷路器強制打開,返回true
如果斷路器強制關閉,返回false
判斷circuitOpened的值,如果大于等于0,返回true, 否則返回false
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/77428.html
摘要:斷路器原理斷路器在和執行過程中起到至關重要的作用。其中通過來定義,每一個命令都需要有一個來標識,同時根據這個可以找到對應的斷路器實例。一個啥都不做的斷路器,它允許所有請求通過,并且斷路器始終處于閉合狀態斷路器的另一個實現類。 斷路器原理 斷路器在HystrixCommand和HystrixObservableCommand執行過程中起到至關重要的作用。查看一下核心組件HystrixCi...
摘要:斷路器模式也使系統能夠檢測出錯誤是否已被修復。斷路器模式的目的和重試模式有所不同。斷路器模式為在從錯誤中恢復的系統提供穩定性,同時降低對性能的影響。 斷路器模式 當連接到遠程服務或資源到時候,處理那些需要一段時間才能修復的系統缺陷。這能優化應用對穩定性和可靠性。 上下文和問題 在分布式環境中,對遠端服務或資源的請求可能會由于諸如以下臨時性錯誤而失敗:緩慢的網絡請求,連接超時,資源被過度...
摘要:本系列代碼地址上一節我們通過單元測試驗證了線程隔離的正確性,這一節我們來驗證我們斷路器的正確性,主要包括驗證配置正確加載即我們在配置例如中的加入的的配置被正確加載應用了。本系列代碼地址:https://github.com/JoJoTec/spring-cloud-parent上一節我們通過單元測試驗證了線程隔離的正確性,這一節我們來驗證我們斷路器的正確性,主要包括:驗證配置正確加載:即我們...
閱讀 3880·2021-10-08 10:12
閱讀 4452·2021-09-02 15:40
閱讀 970·2021-09-01 11:09
閱讀 1618·2021-08-31 09:38
閱讀 2551·2019-08-30 13:54
閱讀 2262·2019-08-30 12:54
閱讀 1253·2019-08-30 11:18
閱讀 1413·2019-08-29 14:06