SpringCloudブレーカーHystrix包括的な分析

マイクロサービスシナリオでは、サービスコールは、通常、層の多くを持っています。問題は、基礎となるサービスを発生した場合、障害がユーザーにまで広がることになります。私たちは、基本的なサービスが利用できない場合、あなたは送信失敗を中断することができ、メカニズムが必要です。これは、回路ブレーカの役割です。彼は、システムの最後の再保証サービス安定性でした。

springcloudに回路遮断器アセンブリHystrixあります。Hystrixネットフリックスはまた、キットの一部です。彼の機能は、一定期間内のサービスの場合にコール(metrics.rollingStats.timeInMillisecondsによって設定されたデフォルトの10S)、より一定回数(circuitBreaker.requestVolumeThresholdパラメータによって設定されたデフォルト20)以上の故障率よりも存在することです特定の値は、(circuitBreaker.errorThresholdPercentage構成で50%デフォルト)、回路遮断器は、サービスを開きます。開発者によって設定されたフォールバックへ戻ります

別のフォールバックがHystrixサービスコールによって保護されていてもよく、それは固定値であってもよいです。フォールバックチェーンはまた、いくつかのロジックを実行するための呼び出しとして設計され、その後、フォールバックを返すことができます。

使い方

Netflixのブレーカーは、サービスコンシューマにインストールされています。私たちは、サービスコンシューマと構成の回路ブレーカを開いている実行する必要があります。

リボンの消費者:

1、の導入に依存しています

2、スイッチ

@EnableCircuitBreakerしか起動クラスに注釈を追加することができます

サービスプラスフォールバックで3、

4、オフにするには、サービスプロバイダのテスト

しばらくして、サービスプロバイダは、自動復旧サービスの消費者を観察することができ始めます。

なお、fallbackMethodの設定方法は、意思を持っている必要がありますし、方法は@HystrixCommandパラメータと戻り値に注釈を付けています

それ以外の場合は、見つかりませんでしたフォールバックメソッドをエラーになります。defaultFallbackを

使用中装います

プラス@EnableCircuitBreakerには何のコメントはここに授業を開始していないので、@EnableFeignClients回路ブレーカは、デフォルト機能によってオンされました

唯一@FeignClient方法でフォールバックのフォールバックパラメータを指定する必要が

@FeignClientアノテーションはインタフェースであるため、私たちはただのモックとして、代替クラスを作成する必要があります

実装インタフェースHelloServiceというクラスを作成します。

最後のステップ

application.ymlに設定ファイルのブレーカーをオンにします

初期のバージョンでは、装う回路ブレーカは、デフォルトで有効になっています。その後、誰かが問題を言及し、私はそれは便利ではないと思います。装うを使用することにより、いくつかの問題を引き起こし、デフォルトのサーキットブレーカ機能を使用しています。バックブレーカーの最初からDバージョンは、デフォルトでは手動で開く必要がオフになっています。

私たちは、同じ効果とリボンを見ることができます

注意事項

あなたがHystrixで、メインのリソースの分離は、通常使用するスレッドプールによって達成されているので、デフォルトのフォールバックメソッドに渡すことができない性質のスレッドローカル実行メソッドを使用する必要がある場合私たちは、リモート・サービス部門を呼び出しますときスレッドプールの複数。このようなコマンドを呼び出すスレッドプールなどの商品やサービス、スレッドプールにアカウントサービスコマンドBを呼び出します。これの主な利点は、動作環境を離れて設定されたことである。このように、コードにバグサービスを呼び出すためにしても他の原因に自分の時間スレッドプールが使い果たされるためか、サービスは他のシステムに影響を与えませんが、複数のスレッドを維持するためのコストは、追加のパフォーマンス・オーバーヘッドをもたらすでしょうプールシステムをもたらすことです。パフォーマンスがあれば厳格な要件は、サービスを起動するための独自のクライアントコードは問題ではないと確信している、あなたは、分離株のリソースへのHystrix信号パターン(セマフォ)を使用することができます。

あなたは以下の構成を行う必要があります

Hystrixダッシュボード

回路ブレーカので、サービスの可用性を検出しますが、直感的にすることはできません。Hystrixダッシュボードは、見やすいサービスのための監視プラットフォームの可用性を提供することができます。

新しいプロジェクトを作成します。1.

ダッシュボードは、統一された回路ブレーカ監視プラットフォームであるため、私たちは、新しいプロジェクトを作成します。そして今、消費者が混在していない機能

の導入に依存して2、

3、注釈起動クラス

クラスのノートで始まり@EnableHystrixDashboard

ブートの紹介、アクセス/ hystrix

Hystrixダッシュボードをサポートした三つの異なる監視方法では、我々が知ることができ、説明の上を参照してください。

1、デフォルトのクラスタの監視:URL経由:タービン - ホスト名:ポート/、オープンturbine.streamデフォルトのクラスタへの制御を実現。

URLを介し:タービンホスト名:?ポート/ turbine.streamクラスタ= [clusterNameの】オープン、clusterNameのクラスタの制御を達成するために、図2に示すように、監視クラスタを指定します。

3、単一のアプリケーションの監視:URL / hystrixアプリ経由:ポート/オープンhystrix.stream、特定のサービスインスタンスの制御を達成するために。

何かが間違っがあることに注意してください、私たちは前に言った、springboot2開始から、アクチュエータがhystrixアプリで要求パス/アクチュエータに連結されている:ポート/アクチュエータ/ hystrix.stream魚

遅延:サーバー上の情報を監視し、遅延時間制御ポール、デフォルトは2000ミリ秒ですが、クライアントは、プロパティを介してCPUとネットワーク構成の消費量を削減することができます。

タイトル:このパラメータは、適切なタイトルを実証することができます。

サービスの単一インスタンスの監視

レッツ・テスト最初の3、監視サービスの単一のインスタンス。これが最もよく理解されています

Robbon工学のための、プラス我々は良いブレーカーを持っていることの上に。今すぐ実行する必要が導入アクチュエータに依存しています

その後、暴露hystrix.streamインタフェース

アプリケーションを起動します。

今、私はサービスの塗りをwindows10.microdone.cn:8781/actuator/hystrix.stream、モニタ]をクリックします

要求要求がアップに監視されている場合より数回クリックするよりも、あなたが成功したか失敗したかを見ることができます

装うため

私たちは、それがブレーカーを統合しました装う、上記と述べています。しかし、あなたはhystrix.streamインタフェースを公開したい場合、または起動クラスの春、クラウドスターターNetflixの-hystrix依存、マーク@EnableCircuitBreaker注釈ノートの導入が必要

その後、テスト、および同じ効果のリボン

タービン

タービンは、どのようなコンセプトですか?

タービンは、データ回路ブレーカの有用性がspringcloudインスタンスが大きくない分離、ネットフリックスの独立したプロジェクトですが、また、多くの問題、我々は2つの消費者のアイテムを持っている上のように、次の2つのページビューを開く必要があり、これらすべての監視を置くことができません前の重合見て?

もちろん我々はできる、これだけタービンプロジェクト

タービン原理はレジストリに自身を登録することにより、hystrixの同じレジストリ上のサービス、および集計データを見つけることです。ここでも、自分のエンドポイントを公開することによって、ダッシュボード上のディスプレイに。

操作:

アプリケーションを作成します。1.

2、依存関係の導入:

[スタート]クラスのノート:

@EnableTurbine @EnableDiscoveryClient

YML配置:

スタートは、私たちは、タービンポート8792までなりました

hystrixページでは、アドレスモニタ127.0.0.1:8792/turbine.streamに記入

モニターをクリックします

あなたは、消費者が装うと一緒に二つのプロジェクトのリボンセットすることを見ることができます

サービス名HelloService#ハロー(String)メソッドとhiServiceはHystrixフォールバックの名前です。

デフォルトについて

クラスタ名表現のクラスタ名、SpeIで表現することができ、ここではデフォルトのデフォルトです。クラスタの名前をカスタマイズしたい場合は、以下の構成に変更されます。

タービン:複数のカンマで区切られたモニタに#アプリケーション、アプリケーション-config設定:装う-消費者、消費者、リボン#は、複数のを使用して、どのクラスタの重合を指定する「」スプリット・デフォルト・デフォルトアグリゲータ:クラスタ設定:リボン、装うアプリケーションでの使用に#が監視されています。アプリケーションが設定しeureka.instance.metadata-map.clusterを監視することを想定します。ABCは、あなたが設定する必要があり、turbine.aggregator.clusterConfigながら:ABC クラスタ名表現:メタデータ[「クラスター」] 同じホスト上の#メイクサービスは区別するために、ホスト名とポート番号の組み合わせによって行われ、試運転の時にマシンになるだろう分化デフォルトのサービスへの意志ホスト、ユニット上の異なるサービスを一つのサービスの統計に集約されます。コンバインホストポート:真

この構成は、二つのクラスタ、リボンと装う使用されています

クラスタ名-expressionは、メタデータクラスタ値を取ることです

これは、アプリケーション構成ファイルを変更する対応を監視する必要があります。

リボン民生プロジェクト:

コンシューマープロジェクトを装います:

すべてはそれを再起動します

囲碁hystrixページ

クラスタ名が変更されているので、この時間再び127.0.0.1:8792/turbine.stream ROMには、もはやデフォルトのクラスタが存在しません

127.0.0.1:8792/turbine.stream?cluster=feignは、監視およびリボンために使用されました

同社は、それぞれのクラスタを微分して見ることができるサービスの多くを持っている場合、このような区別は、役割です。

HTTPS :? //Baijiahao.baidu.com/s ID = 1623004854011062838&WFR =クモ&用= PC:より転載

おすすめ

転載: www.cnblogs.com/aboutYouH/p/12552062.html