切り捨て型指数バックオフ

切り捨て型指数バックオフは、ネットワーク アプリケーションの標準的なエラー処理方法で、クライアントはリクエスト間の遅延を増加させながら、失敗したリクエストを定期的に再試行します。クライアントは、データまたはメタデータのアップロードとダウンロードを含め、HTTP 5xx429 のレスポンス コードを返す Cloud Storage へのすべてのリクエストについて、切り捨て型指数バックオフを使用する必要があります。

以下の場合に、切り捨て型指数バックオフの機能を理解していることが重要です。

Google Cloud Platform Console を使用している場合、ユーザーの代わりに Console が Cloud Storage にリクエストを送信し、必要なバックオフを処理します。

アルゴリズムの例

指数バックオフのアルゴリズムは、再試行の待ち時間の間隔を最大バックオフ時間まで増加させながら、指数関数的にリクエストを再試行します。次に例を示します。

  1. Cloud Storage へのリクエストを作成します。

  2. リクエストが失敗した場合、1 + random_number_milliseconds 秒待ってから、リクエストを再試行します。

  3. リクエストが失敗した場合、2 + random_number_milliseconds 秒待ってから、リクエストを再試行します。

  4. リクエストが失敗した場合、4 + random_number_milliseconds 秒待ってから、リクエストを再試行します。

  5. このようにして、最大 maximum_backoff 時間まで繰り返します。

  6. 再試行の最大回数まで待機と再試行を続行しますが、再試行の待ち時間の間隔は増加させません。

ここで

  • 待ち時間は min(((2^n)+random_number_milliseconds), maximum_backoff) で、n は反復(リクエスト)のたびに +1 されます。

  • random_number_milliseconds は、1000 以下のミリ秒単位の乱数です。これにより、なんらかの状況によって多数のクライアントが同期され、再試行が一度に実行されて、リクエストが同時に次々と送信されるような状況を避けることができます。random_number_milliseconds の値は再試行リクエストの後に毎回再計算されます。

  • 通常、maximum_backoff は 32 秒または 64 秒です。適切な値はユースケースによって異なります。

maximum_backoff 時間に達した後でも再試行を続行することができます。この時点より後の再試行では、バックオフ時間を増加させ続ける必要はありません。たとえば、クライアントで 64 秒の maximum_backoff 時間が使用されている場合、この値に達した後は、クライアントは 64 秒ごとに再試行を繰り返します。いずれかの時点で、クライアントが無限に再試行を行わないようにする必要があります。

クライアントの再試行の待ち時間の間隔や再試行の回数は、ユースケースとネットワークの状態によって異なります。たとえば、アプリケーションのモバイル クライアントでは、同じアプリケーションのデスクトップ クライアントに比べて、より多くの再試行回数とより長い再試行間隔が必要になる可能性があります。

maximum_backoff と再試行に対して許容される追加時間を合計した時間を超えたために再試行リクエストが失敗した場合は、サポートとヘルプにあるいずれかの方法で、エラーのレポートまたはログを作成してください。

実装の例

Cloud Storage の切り捨て型指数バックオフの例には、次のようなものがあります。

  • 再開可能なアップロードの boto の例

  • Java または Python を使用した Storage Transfer Service でのリクエストの再試行

  • 指数バックオフを使用した、JSON API アップロード エラーの処理

  • Cloud Storage で、指数バックオフを使用して、オブジェクトの変更通知を通知のサブスクライバーに送信する

Cloud Storage で使用可能なクライアント ライブラリに実装されているバックオフには、次のようなものがあります。

  • Python の retrying ライブラリ

  • Node.js はバックオフ方法を自動的に使用して、autoRetry パラメータでリクエストを再試行します。

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Cloud Storage ドキュメント