この質問は、SOに適合されていないのであれば申し訳ありません。
しかし、私は答えを探して多くのことを試してみました。
私はそのあなたのAPIのフォールトトレランスを作るために使用さを理解として、私は、サーキットブレーカのデザインパターンを勉強していました。今私は混乱があり、午前何か
私は支払いAPIを呼び出し、私は5回の通話が連続して失敗した場合に開くように私の回路を構成し言うことができますAPIを持っているとしましょう。
今、回路ブレーカの設計どおり、私はルートメソッドをフォールバックする回路を開いた後、後続の呼び出しをなります。次の5つの呼び出しを言うことができます、と6日の呼び出しに私は、APIがオンラインである場合、私は回路を閉じます決済APIの呼び出しを行います。
しかし、私はcatchブロックと回路ブレーカの違いは何であるかのように、このパターンのいずれかの利点を見つけるいけません。
そして、我々は秋のバック方式で何ができるのでしょうか?どのようにこの助けることができますか?
私たちの同僚は、すでに回路ブレーカの利点を示しているので、私は実用的な例に集中します。
だから、あなたの例を見て、あなたが支払いAPIを呼び出す必要があり流れを持っている>のは、その「外部」コンポーネントを想定してみましょう。この呼び出しがなければ、全体の流れはおそらく(私はあなたがその本質的なステップの1つとして支払いを持っているいくつかのオンラインプロセスを持って理解して)「正常に完了」とみなすことはできません。
フォールバックとしてあなたは中間貯蔵し、「再適用する」支払ロジックのいくつかの種類でのお支払いのコマンドを保存しない限り、この場合、サーキットブレーカーは確かにおそらく有用ではないだろう。
回路遮断器の全体のポイントを提供することにある合理的流れがフォールバックロジックが適用されます場合に失敗とみなされないようにフォールバックします。
ここではサーキットブレーカーがはるかに意味を持っている別の例です。
あなたは「ネットフリックスのような」を構築した場合のポータルおよびUIでのショーは、映画を「推奨」というウィジェットがあります。推奨エンジンを考慮にあなたが前に言っています/見た映画をとります。技術的にはこれは「外部システム」/ microserviceです。
さて、どのような(推薦サービスがダウンした場合、たとえば)UIのデータを移入フローは、推奨を取得することができない場合は、全体の流れを「失敗」のだろうか?おそらくない、多分その良くはお薦め作品のいくつかの「ジェネリックリスト」を表示し、ユーザーがアプリケーションでの作業に進むようにします。
この場合には、サーキットブレーカーは、外部推薦サービスへの呼び出しを実装するための良い選択することができます。
さて、このフローと例外処理の違いは何ですか?
その推薦システムの失敗の理由は、いくつかの一時ネットワーク停止/データベースの遅さである場合は、おそらくその最高の、このサービスにいくつかの時間を与えるためではなく、それを超える呼び出そうとすると何度も繰り返し、私たちはそれを取り戻す」への機会を与える必要があります」。私たちは、回路ブレーカを適用すると、「開回路」期間中に我々のコードにも直接フォールバック方式へのルーティング、サーバーを呼び出すようにしようとしません。
通常のtry / catchブロックは、他の一方で、う常に推薦サービスを呼び出します。
アップラップするので、回路ブレーカは質問で述べたように、フォールトトレランスのためのパターンがあります。他の場合にはいくつかの状況において適用可能で、かつ無関係であることができるそのAツール。