AnalyticDB for PostgreSQL APIを呼び出すときにリクエストタイムアウトまたは内部サーバーエラーが発生した場合、クライアントはリクエストの再送信を試みる可能性があります。 この場合、クライアントがリクエストを繰り返し送信しないように、リクエストにClientTokenパラメーターを指定できます。
べき等とは
等価性は、数学またはコンピュータサイエンスにおけるいくつかの操作およびリソースの特性です。 Impotenceを使用すると、操作を実行した後、またはリソースを複数回適用した後に、最初のリクエストの結果を取得できます。 等価性は、分散システムの設計にとって重要である。
べき等性を確保する
ほとんどの場合、返されたHTTPステータスコードが500 Internal Server Errorまたは503 Service Unavailableの場合、または結果が返されない場合、クライアントは再試行要求を送信します。 AnalyticDB for PostgreSQL APIを使用すると、クライアントは最大64 ASCII文字で構成されるパラメーター値を生成します。この値をClientTokenに割り当てて、再試行されたリクエストのべき等性を確保できます。
ClientTokenの詳細
次のセクションでは、ClientTokenの詳細について説明します。
- ClientToken値は、クライアントによって生成される一意で大文字と小文字を区別する文字列で、長さは最大64のASCII文字を含めることができます。 例:
ClientToken=123e4567-e89b-12d3-a456-426655440000 - 使用中のClientToken値で異なるリクエストパラメーターを指定した場合、AnalyticDB for PostgreSQLは
IdeintentParameterMismatchエラーコードを返します。説明 操作を再度呼び出す場合は、SignatureNonce、Timestamp、およびSignatureパラメーターの値を変更する必要があります。 これは、AnalyticDB for PostgreSQLがSignatureNonceパラメーターを使用してリプレイ攻撃を防ぎ、Timestampパラメーターを使用して各リクエストのタイムスタンプを識別するためです。 したがって、再試行要求には、SignatureNonceおよびTimestampパラメーターの異なる値が必要です。 この場合、Signatureパラメーターの値が変更されます。 - ClientTokenパラメーターを指定してリクエストが失敗した場合、リクエストは次のHTTPステータスコードとエラーメッセージに基づいて再送信されます。
- HTTPステータスコードの200が返された場合、再試行によって前回のリクエストと同じ結果が生成され、サーバーのステータスは影響を受けません。
- HTTPステータスコード4xxが返された場合、再試行は失敗します。 ステータスコードが
try it laterエラーメッセージとともに返された場合、サーバーはビジー状態です。 しばらくしてからもう一度お試しください。 リクエストを再送信する前に、返されたエラーメッセージに基づいて問題をトラブルシューティングする必要があります。