この記事は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 は最近大きなアップデートがなく、いくつかのローカルなマイナーアップデートがあるだけです。...
海外には大容量ハードディスク搭載のVPSがたくさんあります。大容量ハードディスク搭載の通常のVPSと...
今後 18 か月以内にエッジ コンピューティング ソリューションを導入し、モノのインターネット (I...
優秀な SEO プロジェクト マネージャーまたは SEO スーパーバイザーは、ほとんどの組織で最も見...
SEO をしばらくやっている人なら、トラフィックを傍受する方法を知っていると思います。これをやったこ...
インターネット産業の出現と発展から現在に至るまで、インターネットの世界は次々と伝説を生み出してきまし...
多くの企業は、ウェブサイトのトラフィックを増やし、顧客に自社製品についてより詳しく知ってもらうために...
検索エンジンのアルゴリズムは機密事項であり、日々調整されていると言われていますが、詳細は誰も知りませ...
Linkerd では、カナリア リリースはトラフィック分割を通じて管理されます。これは、動的に構成可...
UK2グループのサーバーブランドである100tbは、サーバーを10%割引する「秋のディスカウントデー...
INIZは中国人を嫌っています。私は1年以上アカウントを持っていましたが、結局削除されました。でも、...
昨年ウェブサイトを立ち上げてから半年が経ちました。現在、両方のウェブサイトが安定して稼働しています。...
オラクルの会長兼 CTO であるラリー・エリソンは本日基調講演を行い、Oracle Autonomo...
tmhhost は、国慶節 + 中秋節期間中、米国 (トリプル ネットワーク) CN2 GIA 20...
2009年に設立され、主に海外のクラウドホスティング事業に注力しています。VPSは、日本CN2(東京...