この記事はWeChatの公開アカウント「Lean Coder」から転載したもので、著者はXiaomajiaです。この記事を転載する場合は、Lean Coder の公開アカウントにご連絡ください。 概要1. クラウドネイティブシステムの回復力パターン
2. 弾力性モード: 下流のリクエストメッセージに基づいて動作する 3. 短時間中断時の応答コード 4. ポリークラシック戦略 5. Golang サーキットブレーカーパターン ドイツの哲学者ニーチェはかつてこう言いました。「私を殺さないものは私を強くする。」 01クラウドネイティブシステムの弾力性モデル今回は、最近の仕事の経験も踏まえて、引き続きクラウドネイティブの弾力性モデル(スケールではなく回復力)についてお話しします。これは「現代のクラウドネイティブ設計コンセプト」への回答でもあります。 「分散アーキテクチャでは、サービス B がサービス A からのネットワーク要求に応答しない場合はどうなるでしょうか? サービス C が一時的に利用できなくなり、C を呼び出す他のサービスがブロックされた場合はどうすればよいですか? ネットワークの問題またはサービス自体の理由により、サービス B と C は時間内に応答できず、サービス A によって開始された要求はブロックされます (B と C が応答するまで)。このとき、大量のリクエストが殺到すると、サービス A のスレッドリソースが枯渇し、サービス A の処理性能に大きな影響が出てしまい、ダウンストリームが依存する外部クライアント/バックエンド srv にも影響が出てしまいます。 障害は広がり、連鎖反応を引き起こし、分散構造全体に壊滅的な結果をもたらします。これはサービス障害の「雪崩効果」です。 サービス B と C が利用できない場合、ダウンストリーム クライアント/バックエンド srv は何ができますか? 客観的に見ると、リクエストは失敗し、事前に決定された弾性戦略(再試行/回路切断)が実行されます。 02 エラスティックモード: ダウンストリームリクエストメッセージに基づく動作レジリエンス モードとは、障害が発生してもシステムが正常な動作を維持する能力です。失敗を避けるのではなく、失敗を受け入れてそれに対処しようとすることです。 Polly は、開発者が流暢かつスレッドセーフな方法で回復力戦略を表現できるようにする、包括的な .NET 回復力および一時エラー処理ライブラリです。
一般的に、エラスティック ポリシーはさまざまな要求メッセージ (外部クライアント要求またはバックエンド サービス要求) に適用されます。 その目的は、一時的に利用できないサービス要求を補うことです。 03 短時間中断時の応答コード
正確で標準化された応答コードは、開発者ができるだけ早く障害を特定するのに役立ちます。 失敗戦略を実行するときは、失敗によって発生した操作のみを再試行し、403UnAuthorized を再試行しないなど、より対象を絞ることもできます。 04ポリーの定番戦略
同時にタイマーが起動し、ブレーカーは半開モードになります(少数の要求を発行し、要求が成功すると障害が修復されたとみなされ、ブレーカーは閉状態になり、障害カウンターがリセットされます)。
アプリケーションに複数の HTTP 呼び出しがある場合、上記の従来の記述方法に従うと、コードには多くの重複した無関係なビジネス コードが混在することになります。 バッチ HttpClient の弾力的な戦略をエレガントに実装する方法について考えます。 ここでは 2 つの方法を紹介します。 ① Blog Parkの有名ブロガーEdisonchou: AOPフレームワークを使ってPollyを動的に織り込む ② 匿名の専門家が、リフレクションと構成を使用してPollyHttpClientServiceCollectionExtension拡張クラスを実装しました。これは、構成ファイルでHttpClientNameを指定することをサポートしています。
05Golang サーキットブレーカー
func NewCircuitBreaker(st Settings) *CircuitBreaker 回路ブレーカー オブジェクトをインスタンス化します。パラメータは次のとおりです。
次の例は、Google Web サイトをリクエストするときに、失敗率が 60% に達すると、「オープン」状態に切り替わり、同時に 60 秒のタイマーが開始されることを示しています。 60 秒後、「半オープン」状態になります (1 つのリクエストを開始できるようになります)。成功した場合、回路ブレーカーは「閉」状態になります。失敗した場合は、「オープン」状態に戻り、60 秒のタイマーをリセットします。
要約するこの記事では、クラウド ネイティブ システムの弾力性モデルについて説明します。弾力性モデルとは、事前設定された戦略を通じて障害に直接対処し、一時的に利用できない要求を補正し、障害の伝播を回避することです。これは、マイクロサービスの高可用性と弾力的なフォールト トレランスを実現するために非常に重要です。 |
<<: Springboot2.x AOPはキャッシュロックと分散ロックを実装します
>>: クラウドコンピューティングの運命: 世界が 1 台のコンピューターに統合され、サーバーレス運用がサポートされる
収益性の高いウェブサイトは、ウェブサイトのプロモーションから切り離すことはできません。中国のインター...
週末です、とても退屈です、この記事は数字を埋めるためのものです、ちなみに、特典をいくつかあげます、以...
多くのウェブマスターは、Baidu のテストに耐えられないため、ウェブサイト構築の初期段階で自動的に...
インターネット技術の継続的な成長により、ウェブサイトの構築はコップ一杯の水を飲むのと同じくらい簡単に...
私たち中小企業は、SEO を行う際に、特にウェブサイトを構築したばかりの最初の数か月間は非常に悩むこ...
dedipath は現在、米国ダラス データ センターの専用サーバー特別プロモーションを提供していま...
私は、Fiberhub ラスベガス データ センターで、XEN 仮想化に基づく QuickPacke...
今日は、SEOにおけるGoogleランキングの重要なポイントについてお話ししましょう。ウェブサイトの...
ソフトテキスト プロモーションのチャネルは何ですか? SEO 担当者にとって、優れたプロモーション ...
10月27日の夕方、公式サイトのロゴが多くの友人のウェブサイトに登場し、QQグループの全員が話題にし...
企業がコンピューティングとネットワーク アーキテクチャを近代化するにつれて、クラウド ネイティブ ア...
SEO 実践者として、私と同じように貴重な SEO 情報を見つけるためにフォーラムに行くことを好む人...
ウェブサイトの最適化の過程では、同じ種類のウェブサイトでもランキングは必ず異なり、同じ最適化方法を使...
[[322423]]面接中に JVM に関連する質問をされると、多くの面接者は機械的に暗記しており、...
検索エンジンのアルゴリズムがますます洗練されるにつれて、ウェブサイトの品質に対する要求も高まっていま...