マイクロサービスアーキテクチャでは、システムは、アプリケーション間の各ユニットは、サービス登録およびサブスクリプションベースを介して相互に依存して、サービス単位の数に分割されます。各ユニットは別のプロセスで実行されているので、呼び出しに依存した方法をリモート実行することにより、その呼び出しの失敗や遅延がネットワーク上の理由または依存サービス自分の問題ため発生する可能性があり、これらの問題は、直接呼び出し側の外交サービスにつながるあり呼び出し側の要求が増加している場合も、この時点で遅延させ、最終的にはバックログに応じてタスクを形成するために、証明書利用者を待っているの故障があるだろう、スレッドのリソースは、最終的には自分自身のサービスの麻痺、あるいは失敗した最終のさらなる普及につながる、解放することができませんシステム全体の麻痺が生じます。そのようなフレームワークは、このような重大な危険が存在する場合は、なおさら不安定性の伝統的な建築と比較。これサーキットブレーカやその他の保護サービスのシリーズを作成し、この問題を解決するには。
これらの問題に対応して、春クラウドHystrixにおけるサービス保護スレッドの分離、回路ブレーカ、などのシリーズを達成するために。また、フレームワークは、遅延や失敗のより堅牢な耐障害性を提供し、それらのリモートノードシステム、サービス、およびサードパーティのライブラリへのアクセスを制御することを目指し、HystrixのオープンソースNetflixのフレームワークに実装基づいています。Hystrixは、サービス低下、サービスヒューズ、スレッド分離、要求キャッシング、要求のマージとサービスの監視および他の強力な機能を有しています。
次に、我々は簡単な例から学び、春クラウドHystrixに使用し始めました。
手を試してみてください
あなたは春のクラウドHystrixはブレーカーを達成使用を開始する前に、私たちは前に実装するための基礎として取得何か、を含みます:
eureka-server
プロジェクト:登録サービスセンター、ポート:1001eureka-client
プロジェクト:サービスプロバイダは、開始ポート2001の2つの例です
今、私たちは、消費者サービスの実施に先立って、それをコピーすることができます:eureka-consumer-ribbon
命名しますeureka-consumer-ribbon-hystrix
。ここでは、でそれらを変更し始めます。
最初のステップ:pom.xml
ノードの依存関係を導入spring-cloud-starter-hystrix
依存:
|
ステップ2:アプリケーションのメインクラスを使用し@EnableCircuitBreaker
たり@EnableHystrix
の注釈付きオープンHystrixの使用を:
|
注:ここでは、また、春のクラウドアプリケーションを使用することができます@SpringCloudApplication
示す注釈が以下に具体的に定義され、主クラスの注釈を修正しています。私たちは、注釈が私たちの3引用上の注意事項が含まれていることを見ることができ、これは、標準のアプリケーションが春のクラウドサービスの発見と回路ブレーカを含むべきであることを意味します。
|
第三段階:サービス消費の変換、新しいConsumerService
クラス、およびその後にController
最後の論理マイグレーション。最後に、特定の機能に論理的な増加を実行するための@HystrixCommand
サービスをダウングレードする方法を指定するには、注釈を、例えば:
|
のは、上記のHystrixがもたらす確認するために、いくつかの基本的な機能を見てみましょう。私たちは、最初のカバーのサービスは、アクセスを起動され、localhost:2101/consumer
その後、次のような、通常のリターンを得ることができ、: Services: [eureka-consumer-ribbon-hystrix, eureka-client]
。
サービス低下のロジックをトリガーするために、我々は、プロバイダサービスを提供することができますeureka-client
:論理のような、いくつかの遅延を追加します
|
再起動しeureka-client
た後、次にアクセスしてみてくださいlocalhost:2101/consumer
、そして、我々が得た結果は返されます:fallback
。私たちeureka-client
のコンソール、あなたは、サービスコンシューマは、サービス要求のタイムアウト例外をトリガしながら、返す前にHystrixCommandで指定されたサービスコンシューマアノテーションをサービスプロバイダーの出力の結果が返されなければならなかった見たが、原因5秒の遅延にすることができます実行ロジックが劣化するので、リクエストリターン結果fallback
。セルフサービスのような機構は、基盤を保護するために役立った、だけでなく、サービスの劣化メカニズムの自動切り替えが異常で提供します。