成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

斷路器HystrixCircuitBreaker

Integ / 3510人閱讀

摘要:一個啥都不做的斷路器,它允許所有請求通過,并且斷路器始終處于閉合狀態(tài)斷路器的另一個實現(xiàn)類。主要步驟有如果斷路器強制打開,返回如果斷路器強制關(guān)閉,返回判斷的值,如果大于等于,返回否則返回

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 ConcurrentHashMap circuitBreakersByCommand = new ConcurrentHashMap();
    }


    class HystrixCircuitBreakerImpl implements HystrixCircuitBreaker {
    }

    static class NoOpCircuitBreaker implements HystrixCircuitBreaker {
    }

}

下面先看一下該接口的抽象方法:

allowRequest(): 每個Hystrix命令的請求都通過它判斷是否被執(zhí)行(已經(jīng)不再使用,使用attemptExecution()方法進行判斷)
attemptExecution(): 每個Hystrix命令的請求都通過它判斷是否被執(zhí)行
isOpen(): 返回當前斷路器是否打開
markSuccess(): 用來關(guān)閉斷路器
markNonSuccess: 用來打開斷路器

下面看一下該接口中的類:

Factory: 維護了一個Hystrix命令和HystrixCircuitBreaker的關(guān)系的集合ConcurrentHashMap circuitBreakersByCommand。其中key通過HystrixCommandKey來定義,每一個Hystrix命令都需要有一個Key來標識,同時根據(jù)這個Key可以找到對應的斷路器實例。
NoOpCircuitBreaker: 一個啥都不做的斷路器,它允許所有請求通過,并且斷路器始終處于閉合狀態(tài)
HystrixCircuitBreakerImpl:斷路器的另一個實現(xiàn)類。

HystrixCircuitBreakerImpl介紹

在該類中定義了斷路器的五個核心對象:

HystrixCommandProperties properties:斷路器對應實例的屬性集合對象/斷路器對應HystrixCommand實例的屬性對象
HystrixCommandMetrics metrics:用來讓HystrixCommand記錄各類度量指標的對象
AtomicReference status: 用來記錄斷路器的狀態(tài),默認是關(guān)閉狀態(tài)
AtomicLong circuitOpened:斷路器打開的時間戳,默認-1,表示斷路器未打開
AtomicReference activeSubscription: 記錄HystrixCommand

對接口的實現(xiàn)如下:

        @Override
        public boolean isOpen() {
            if (properties.circuitBreakerForceOpen().get()) {
                return true;
            }
            if (properties.circuitBreakerForceClosed().get()) {
                return false;
            }
            return circuitOpened.get() >= 0;
        }

用來判斷斷路器是否打開或關(guān)閉。主要步驟有:

如果斷路器強制打開,返回true
如果斷路器強制關(guān)閉,返回false
判斷circuitOpened的值,如果大于等于0,返回true, 否則返回false

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/77428.html

相關(guān)文章

  • Netflix Hystrix路器原理分析

    摘要:斷路器原理斷路器在和執(zhí)行過程中起到至關(guān)重要的作用。其中通過來定義,每一個命令都需要有一個來標識,同時根據(jù)這個可以找到對應的斷路器實例。一個啥都不做的斷路器,它允許所有請求通過,并且斷路器始終處于閉合狀態(tài)斷路器的另一個實現(xiàn)類。 斷路器原理 斷路器在HystrixCommand和HystrixObservableCommand執(zhí)行過程中起到至關(guān)重要的作用。查看一下核心組件HystrixCi...

    Lemon_95 評論0 收藏0
  • 云計算模型- 路器模式

    摘要:斷路器模式也使系統(tǒng)能夠檢測出錯誤是否已被修復。斷路器模式的目的和重試模式有所不同。斷路器模式為在從錯誤中恢復的系統(tǒng)提供穩(wěn)定性,同時降低對性能的影響。 斷路器模式 當連接到遠程服務或資源到時候,處理那些需要一段時間才能修復的系統(tǒng)缺陷。這能優(yōu)化應用對穩(wěn)定性和可靠性。 上下文和問題 在分布式環(huán)境中,對遠端服務或資源的請求可能會由于諸如以下臨時性錯誤而失?。壕徛木W(wǎng)絡請求,連接超時,資源被過度...

    KoreyLee 評論0 收藏0
  • SpringCloud升級之路2020.0.x版-36. 驗證路器正確性

    摘要:本系列代碼地址上一節(jié)我們通過單元測試驗證了線程隔離的正確性,這一節(jié)我們來驗證我們斷路器的正確性,主要包括驗證配置正確加載即我們在配置例如中的加入的的配置被正確加載應用了。本系列代碼地址:https://github.com/JoJoTec/spring-cloud-parent上一節(jié)我們通過單元測試驗證了線程隔離的正確性,這一節(jié)我們來驗證我們斷路器的正確性,主要包括:驗證配置正確加載:即我們...

    NotFound 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<