春の雲 - Hystrixブレーカー

分散アプリケーションの問題:

  • 依存関係の複雑な分散アプリケーションアーキテクチャ数十各依存性は、必然的にいくつかの点で失敗します。マイクロサービスは応答時間が長すぎる表示されるか、利用できない場合はマイクロサービスコールが複数、最高品質のサービスを、より多くのリソースを取り上げるときは、それによって「雪崩効果」を引き起こし
  • 高流量では、サーバーのリソースが飽和するように瞬時にしてもよいか、数秒間、サービス、スレッド、およびその他のリソースの制約の間に増加した遅延につながる、全体のサービスは利用できません。

これらは、単一のサービスに到達するための障害がシステム全体をクラッシュしない、失敗や遅延を分離して管理する必要があります。

ブレーカ:Hystrixクライアント

17129643-c339ca98fc4243ac.png
Hystrixフォールバックカスケード故障

サービスの下位レベルにおけるサービスの障害は、ユーザーのカスケードの障害を引き起こす可能性があります。特定のサービスへの呼び出しが所定の閾値(5秒以内に20 Hystrix障害のデフォルト値)に達すると、回路は話すことなく、開放されます。エラーとオープンの場合、開発者は、バックアップを提供することができます。
オープン回路が故障をカスケード停止し、不必要な障害やサービス時間が治癒することができます。フォールバックは別のHystrix保護、静的データまたは通常のヌル値を呼び出すことができます。ロールバックをリンクさせることができるので、最初のフォールバックは、静的データにコールバックするためにいくつかの他のビジネスを作ります。

サービスヒューズ

引用パッケージ:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-hystrix</artifactId>
</dependency>

hystrixRヒューズメカニズムの@EnableCircuitBreaker //オープンサポート

期待に沿って、呼び出し元のメソッドに異常戻り、代替応答(フォールバック)を処理し、ない長い待ち時間をまたは例外を投げることができるサービスを扱うことができません。
Hystrixサービスは、吹きマイクロサービスは、そのノード、クイックリターン「間違った」応答情報を呼び出して、ダウングレードされます。

@Component
public class StoreIntegration {

    @HystrixCommand(fallbackMethod = "defaultStores")
    public Object getStores(Map<String, Object> parameters) {
        //do stuff that might fail,throw exception
    }

    public Object defaultStores(Map<String, Object> parameters) {
        return /* something useful */;
    }
}

サービスのダウングレード

最初のいくつかのサービスをオフにし、その他のリソース余裕が、その後、対応するサービスを開始します。

なぜダウングレード?
上記の例は、欠点がある:プロバイダ内の処理ロジック、ハードコードされた、高結合、および拡張プロセスを起こしやすいです。
また、当社が不適切、メインロジックに余分なロジックのメインロジックになります、あなたはそれがロジックから吹き出される、アスペクト指向プログラミングのアイデアを使用する必要があります。

FallbackFactory <インターフェース>クラスインターフェースを実装し、覚えプラス@Component、対応するインターフェースの書き換え処理ロジックをダウングレードします。クライアント設定は=真feign.hystrix.enabled。

@Component // 不要忘记添加,不要忘记添加
public class DeptClientServiceFallbackFactory implements FallbackFactory<DeptClientService> {
    @Override
    public DeptClientService create(Throwable throwable) {
        return new DeptClientService() {
            @Override
            public Dept get(long id) {
                return new Dept().setDeptNo(id)
                        .setDeptName("该ID:" + id + "没有没有对应的信息,Consumer客户端提供的降级信息,此刻服务Provider已经关闭")
                        .setDbSource("no this database in MySQL");
            }

            @Override
            public List<Dept> list() {
                return null;
            }

            @Override
            public boolean add(Dept dept) {
                return false;
            }
        };
    }
}

この後、サービス低下のロジックは、消費者に、リソース集約型雪崩を失敗せずに、すぐにフォールバックを返すことができ、中断または融合させるために、サービスプロバイダを統合しました。

ブレイカー:Hystrixダッシュボード

主な利点の一つは、それがHystrixCommandのそれぞれの指標のセットを収集Hystrixことです。Hystrixダッシュボードは、効率的な方法で各回路遮断器の動作状態を表示します。

関連する実施例をモニターするために、単一インスタンスのエンドポイントモニタ/タービン・ストリーム・エンドポイントを/hystrix.stream。例えば、Bへの呼は、Bは、C、等を呼び出し、/タービンストリームを監視、エンドポイントの操作が表示されている関連付けられたC、A、Bであろう。

ます。https://www.jianshu.com/p/ce39f620425cで再現

おすすめ

転載: blog.csdn.net/weixin_33922672/article/details/91273180