1.なぜヒューズをダウングレードする必要があります
(1)需要の背景
これは、システムの負荷が高すぎる、異常な状態またはトラフィックバースト導入ネットワーク、一般的なソリューションです。
分散システムでは、サービスは複数のサービスに依存して、我々は依存関係の問題の場合にはそれを確保することができ、かつ全体的なサービス障害につながることはありませんか、サービスコールは、残業、異常として、失敗があるかもしれません。
たとえば、次のように重い負荷条件下でのタイムアウトの場合はマイクロサービスのビジネスロジックの複雑さ、。
内部条件:プログラムのバグが無限ループを引き起こし、スロークエリがあり、プログラムロジックは、メモリ不足につながるものではありません
外部条件:ハッカーの攻撃、プロモーション、サードパーティ製のシステムはゆっくりと応答します。
(2)ソリューション
インターフェイスレベルの優先順位を解決するために、障害の核となるアイデアは、コアビジネスを保護し、ユーザーの大半に優先権を与えることです。このようなログイン機能としてトラフィックが高すぎると、登録機能をオフにし、リソースを解放するにはログイン、非常に重要です。
(3)解像度戦略
ヒューズ、降格、電流制限、キューイング。
2.ヒューズは何ですか
一般的には、サービスの障害である、あるいは現実の世界ヒューズ '、異常な状態がトリガされたときに、直接、サービス全体ではなく、サービスを融合さと同様に、異常はシステム全体の故障を防止するために防ぐために、このタイムアウトを待っていることが原因です。
保護対策の数を使用します。過負荷保護。応答が非常に遅いサービスインターフェースBである場合、そのような界面におけるX依存性Bサービスなどのサービス機能は、Xサービス機能応答はさらに、スレッドAサービスはXの関数で立ち往生している、その結果、減速され
上のその他の機能は、サービスが遅くなったり、マスターカードます。我々は機構を融合する必要があり、この時点で、すなわち、Bのサービスは、このインタフェースを要求されず、直接ダウングレードすることができます。
3.ダウングレードされ何
サーバーたときに圧力サージ、現在のビジネスの状況や一部のサービスの流れとダウングレードの戦略ページによります。顧客を維持しながら、中核事業の正常な動作を保証するために、サーバリソースへの圧力を緩和するため、および
正しい対応するほとんどの顧客を取得します。
自動的にダウングレード:タイムアウト、失敗の数、故障電流リミッタ
(1)設定されたタイムアウト(応答状況を検出するための非同期機構)
(2)特定の数のダウングレード(返信ケースを検出する非同期メカニズム)へのコールの数のAPI不安定性を、
(3)リモート・サービス障害(DNS、HTTPサービスのエラーステータスコード、ネットワーク障害、RPCサービス例外)、ダイレクトダウングレードを呼び出します。
人工ダウングレード:スパイク、ダブルXIは格下げ非本質的なサービスを推進しています。
図4に示すように、ヒューズとの類似点と相違点をダウングレード
同じポイント:
1)トリガーの可用性と信頼性から、システムのクラッシュを防止するために
2)エンドユーザーが一時的に使用することはできませんいくつかの機能を体験することができ
違い:
1)サービスヒューズの故障は、一般的に、発呼者によって制御され、一般的に全体として考えられている下流サービス、サービスの劣化やシステム負荷によって引き起こされます
2)トリガー異なる理由は、上記のフォントの色を説明しました
ダウングレードのプロセスを説明するための図5に示すように、ヒューズ
ヒューズを設定するには、次のようにHystrixは、いくつかの重要なパラメータを提供しています。
circuitBreaker.requestVolumeThreshold //スライディングウィンドウサイズ、デフォルトは20 //長すぎるcircuitBreaker.sleepWindowInMilliseconds、ヒューズが開くかどうかを再度検出され、デフォルトは5000であり、すなわち、5Sベルある circuitBreaker.errorThresholdPercentage //エラーレート、デフォルトの50%
三つのパラメータ一緒に、式の意味は次のとおりです。
20の要求は、50%が失敗したときはいつでも、ヒューズは、直接、障害、無調整リモートサービスに戻りますが、このサービスを呼び出して、この時間を開きます。ベル後まで5S、トリガ条件の再試験、ヒューズが閉じているかどうかを決定する、または開くために継続します。
これは非常に重要なポイントの内部にある、ヒューズに達した後、その後、直接チューンマイクロサービス背後に行きます。次いで、異常なサービスかトーンマイクロこれが起こるときに発生調整するので、融合のために、直接ユーザに最初のエラー情報には不可能です
私たちは、戦略をダウングレードを検討することができます。サービスが吹き込まれる、いわゆる降格は、サーバーは、もはやこの時間は、クライアントが独自のローカルフォールバックコールバックは、デフォルト値を返す準備することができ、呼ばれません。
そうすることで、直接ハングよりも強いレベルの低下が、どのような結果が提供されています、が、もちろん、これはまた、適切なビジネスシナリオに依存します。