5.5.6. 未変更の Node.js Circuit Breaker サンプルアプリケーションとの対話


Node.js サンプルアプリケーションをデプロイしたら、以下のサービスが実行されます。

MY_APP_NAME-name

以下のエンドポイントを公開します。

  • このサービスの機能時に 名前を返す /api/ name エンドポイントと、このサービスが失敗を示すよう設定されているとエラーが返されます。
  • /api/ name エンドポイントの 動作を制御し、サービスが正しく動作するか、またはエラーを実証する /api/ state エンドポイント。
MY_APP_NAME-greeting

以下のエンドポイントを公開します。

  • /api/greeting エンドポイント。 このエンドポイントは、あいまいな応答を取得するために呼び出しできます。

    /api/greeting エンドポイントを呼び出すと、リクエストの処理の一環として MY_APP_NAME- name サービスの /api/ name エンドポイントに対する呼び出しが発行されます。/api/name エンドポイントに対して行われる呼び出しは、サーキットブレーカーによって保護されます。

    リモートエンドポイントが利用可能になると、name サービスは HTTP コード 200 (OK)で応答し、/api/greeting エンドポイントから以下の greeting を受け取ります。

    {"content":"Hello, World!"}
    Copy to Clipboard Toggle word wrap

    リモートエンドポイントが利用できない場合、name サービスは HTTP コード 500内部サーバーエラー)で応答し、/api/greeting エンドポイントから事前定義されたフォールバック応答を受け取ります。

    {"content":"Hello, Fallback!"}
    Copy to Clipboard Toggle word wrap
  • Circuit Breaker の 状態を返す /api/cb- state エンドポイント。状態は以下のとおりです。

    • Open : サーキットブレーカーは、失敗したサービスに到達できないようにします。
    • closed: サーキットブレーカーはサービスに到達できる要求を許可します。

以下の手順は、サービスの可用性を検証し、障害をシミュレートし、フォールバック応答を受け取る方法を示しています。

  1. curl を使用して MY_APP_NAME-greeting サービスに対して GET 要求を実行します。Web インターフェースの Invoke ボタンを使用してこれを行うこともできます。

    $ curl http://MY_APP_NAME-greeting-MY_PROJECT_NAME.LOCAL_OPENSHIFT_HOSTNAME/api/greeting
    {"content":"Hello, World!"}
    Copy to Clipboard Toggle word wrap
  2. MY_APP_NAME-name サービスの失敗をシミュレートするには、以下を実行します。

    • Web インターフェース Toggle ボタンを使用します。
    • MY_APP_NAME-name サービスを実行している Pod のレプリカ数を 0 にスケールダウンします。
    • MY_APP_NAME-name サービスの /api/state エンドポイントに対して HTTP PUT 要求を実行し、その state を fail に設定し ます。

      $ curl -X PUT -H "Content-Type: application/json" -d '{"state": "fail"}' http://MY_APP_NAME-name-MY_PROJECT_NAME.LOCAL_OPENSHIFT_HOSTNAME/api/state
      Copy to Clipboard Toggle word wrap
  3. /api/greeting エンドポイントを呼び出します。/api/name エンドポイントでの複数の要求が失敗する場合:

    1. サーキットブレーカーが開きます。
    2. Web インターフェースの状態インジケーターが CLOSED から OPEN に変更されます。
    3. サーキットブレーカーは、/api/greeting エンドポイントを呼び出すとフォールバック応答を発行します。

      $ curl http://MY_APP_NAME-greeting-MY_PROJECT_NAME.LOCAL_OPENSHIFT_HOSTNAME/api/greeting
      {"content":"Hello, Fallback!"}
      Copy to Clipboard Toggle word wrap
  4. MY_APP_NAME-name サービスの可用性に復元します。そのためには、以下を行います。

    • Web インターフェース Toggle ボタンを使用します。
    • MY_APP_NAME-name サービスを実行している Pod のレプリカ数を 1 にスケールアップします。
    • MY_APP_NAME-name サービスの /api/state エンドポイントに対して HTTP PUT 要求を実行し、その状態を ok に設定します。

      $ curl -X PUT -H "Content-Type: application/json" -d '{"state": "ok"}' http://MY_APP_NAME-name-MY_PROJECT_NAME.LOCAL_OPENSHIFT_HOSTNAME/api/state
      Copy to Clipboard Toggle word wrap
  5. /api/greeting エンドポイントを再度呼び出します。/api/name エンドポイントでの複数の要求に成功すると、以下を実行します。

    1. サーキットブレーカーを閉じます。
    2. Web インターフェースの状態インジケーターが OPEN から CLOSED に変更されます。
    3. Circuit Breaker は、/api/greeting エンドポイントを呼び出すと Hello World! greeting を 返します。

      $ curl http://MY_APP_NAME-greeting-MY_PROJECT_NAME.LOCAL_OPENSHIFT_HOSTNAME/api/greeting
      {"content":"Hello, World!"}
      Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat