この記事は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 台のコンピューターに統合され、サーバーレス運用がサポートされる
cloudconeがCN2 GTに接続するというニュースが1週間近く出ています。実は、この状況はcl...
Appleによると、今年2月28日より、中国本土におけるiCloudサービスの運営が雲商貴州社に移管...
Ye Meng Chu Chen 氏の記事のタイトル「SEO 業界はいつまで存続するのか?」を見たら...
クラウド移行が適切に実施されると、速度、生産性、弾力性、スケーラビリティが向上します。しかし、適切に...
皆さんご存知の通り、Baiduはしばらく前に大きなアップデートを行い、多くのウェブサイトのキーワード...
クラウド コンピューティングへの支出が急増している一方で、多くの組織はコスト管理、自動化、プロバイダ...
BeastNode.com はカリフォルニアに登録された会社です。主に MINECRAFT ゲームに...
テクノロジーが進歩するにつれて、トラック輸送業界が業務を最適化する機会が増えます。連邦自動車運送安全...
Pacificrack は一昨日 80% 割引をリリースしましたが、提供された構成は 2 つだけでし...
Krypt Data Center傘下の直営クラウドサーバーブランド「iONcloud」は現在、米国...
fdcservers.net のクリスマス プロモーションが早くも始まりました。最初の 1 か月分を...
Baidu ウェイトは、ウェブサイトのキーワードランキングに基づいて公開され、ウェブサイトにトラフィ...
一昨日、Linodeはアップグレードが完了したと発表しました。今回はハードウェアが大きく変わりました...
前回の記事では、ユーザーエクスペリエンスに従わないウェブサイトは必然的に淘汰されるということを中心に...
[51CTO.com からのオリジナル記事] 現在、企業の IT 支出が中国全体の経済変革を推進して...