Spring Cloudでサーキットブレーカーとフォールバックとは何か
Spring Cloud のサーキットブレーカー(Circuit Breaker)とフォールバック(Fallback)は、サービス呼び出しの障害を処理するための一般的なフォールトトレランスメカニズムです。
サービス呼び出しが失敗した際、そのエラーの伝播と障害が発生したサービスの呼び出しを継続的に行わないようにするために、クライアント側でサーキットブレーカーを実装することで、サーキットブレーカーを使用して防止できます。サーキットブレーカーは、サービスの呼び出しに失敗すると「開いた」状態になり、一定時間サービスの呼び出しを拒否します。その間、サーキットブレーカーは実際のサービス呼び出しを実行せずに、事前に定義された既定値またはエラーメッセージを高速に返します。サービスの呼び出しが失敗する回数が一定のしきい値に達すると、サーキットブレーカーは「半開き」の状態に切り替わり、サービスが正常に回復したかどうかを検出するために、一部のサービス呼び出しを通過させます。サービス呼び出しが成功した場合、サーキットブレーカーは「閉じ」の状態になり、サービスの通常の呼び出しを再開します。
降格とは、サービスの呼び出しに失敗した場合に、ユーザーの不必要な待ち時間や影響を避けるために、失敗したサービスの代わりに、代替のサービスやデータを提供することです。降格は、静的な降格(固定のデフォルト値を提供すること)と、動的な降格(システムの現在の状態や設定に応じて異なる降格ポリシーを提供すること)のいずれかになります。また、降格には、すべての呼び出しに有効なグローバル降格と、特定のサービス呼び出しにのみ有効な部分的な降格の2種類があります。
サーキットブレーカーとフォールバックは併用でき、サーキットブレーカー機能を使ってサービス呼び出しのサーキットブレーカー戦略とフォールバック戦略を実施し、システムの耐障害性と安定性を向上させます。Spring Cloudでは、Hystrixなどのサーキットブレーカーを使用して、サーキットブレーカーとフォールバックの機能を実現できます。