最近では、特にマイクロサービス環境で作業している場合、アプリケーションが他のアプリケーションに依存することが非常に一般的です。アプリケーションがエラーを報告し始めることはよくあります。調査すると、パートナー チームまたはサプライヤーの一部の API がダウンしていることに気づきます。
アプリケーションの復元力を高めるための良い方法は、非推奨状態にあるアプリケーションとの通信を遮断することです。他の分野を観察しながら、電気工学からサーキットブレーカーの概念を吸収します。その中には、故障が発生した場合に自動的に電源が切れる機器、つまりブレーカーが設置されています。これは私たちの家庭では非常に一般的であり、電気ネットワークが不安定になり始めると自動的にオフになる回路ブレーカーが設置されています。
コンピューティングでは、中間状態も定義するため、サーキット ブレーカーはもう少し複雑です。以下の図は、サーキットブレーカーがどのように機能するかをよりよく説明しています:
最後に、州は次のとおりです:
かなりクールですね?しかし、この概念をよりよく例示するために、実際にそれを行ってみてはどうでしょうか?
まず、サービス A を構築しましょう。サービス A はリクエストの受信を担当します。つまり、アプリケーションが依存するサービス、サプライヤーのサービスなどになります。簡単にするために、常に 200 を返す /success と常に 500 を返す /failure の 2 つのエンドポイントを公開します。
サービス B はサービス A を呼び出す責任があります。サーキット ブレーカーを構築するのはサービス B です。幸運なことに、Go コミュニティには、パターンを実装する gobreak ライブラリがすでにあります。まず、ブレーカーのプロパティを定義します:
ライブラリを使用するとさらに多くのことをカスタマイズできますが、ここでは次の 3 つに焦点を当てます。
リーリー
リーリー
以上がGo アプリケーションのサーキット ブレーカーの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。