5

アプリケーションを作成していて、サーキット ブレーカーパターンを実装したいと考えています。これは、私が書いた Hystrix コマンド クラスです。

public class HystrixCommandNextGen extends HystrixCommand<ScriptContext> {

    private ScriptContext scriptctx;
    private ScriptFactory scriptFactory;
    private ScriptContext responseContext = null;

    private Logger logger = LoggerFactory.getLogger(HystrixCommandNextGen.class);

    public HystrixCommandNextGen(ScriptContext scriptctx, ScriptFactory scriptFactory) {
        super(
            Setter.withGroupKey(HystrixCommandGroupKey.Factory.asKey("Thread_Pool"))
            .andCommandKey(HystrixCommandKey.Factory.asKey(scriptctx.getExecutionData(ExecutionParam.SCRIPTNAME)))
        );
        this.scriptctx = scriptctx;
        this.scriptFactory = scriptFactory;

        HystrixCommandProperties.Setter().withCircuitBreakerEnabled(true);
        HystrixCommandProperties.Setter().withCircuitBreakerRequestVolumeThreshold(150);
    }

    @Override
    protected ScriptContext run() throws Exception {
        scriptFactory.execute(scriptctx);
        return scriptctx;
    }

    @Override
    protected ScriptContext getFallback() {
        logger.error("FI is not responding: Error occurred in the execution of " + getClass().getSimpleName());
        return scriptctx;
    }
}

スレッドの数、サーキット ブレーカーのしきい値時間、および処理する要求の数を構成する方法を理解できません。

4

3 に答える 3

9

Hystrix は構成管理に Archaius を使用します。Archaius ライブラリでは、実行時にプロパティ値を動的に再読み込みできます。Archaius の設定方法に関するドキュメントはこちら: https://github.com/Netflix/archaius/wiki/Users-Guide

Hystrix をコードで構成する場合は、次のように Archaius ConfigurationManager クラスを使用できます。

ConfigurationManager.getConfigInstance().setProperty(
  "hystrix.command.HystrixCommandKey.execution.isolation.thread.timeoutInMilliseconds", 
  500);

プロパティ名文字列の HystrixCommandKey 部分は、実際には Setter の .andCommandKey() メソッドで設定したサーキット ブレーカーの名前であることに注意してください。したがって、コマンド キーを「MyCommand」に設定すると、タイムアウトのプロパティ キーは実際には次のようになります。"hystrix.command.MyCommand.execution.isolation.thread.timeoutInMilliseconds"

于 2015-10-29T16:49:23.853 に答える
1

構成と手段の完全なリストは、 https ://github.com/Netflix/Hystrix/wiki/Configuration で入手できます 。

特定の質問について:

  1. いいえを設定します。のスレッドが「hystrix.threadpool.HystrixThreadPoolKey.coreSize」を使用

  2. サーキット ブレーカーのしきい値時間は、'hystrix.command.HystrixCommandKey.execution.isolation.thread.timeoutInMilliseconds' を使用します

  3. 番号。処理する要求の。これは少しトリッキーです。しかし、最大。同時スレッド数は no と同じです。処理する要求の。

セットアップを試みる前に、Configuration wiki を読み、各プロパティの構造と使用法を理解することをお勧めします。

于 2015-05-26T06:27:25.670 に答える