1

ユーザーはfolderクライアントで作成し、クライアント側のコードでサーバーにAPIをヒットして、そのユーザーに対してこれを永続化します。しかし、場合によっては、サーバーが非常にビジーで、リクエストがタイムアウトすることがあります。サーバーはリクエストを実行しましたが、クライアントにレスポンスを返す前にタイムアウトしました。クライアントで設定されるタイムアウトは 10 秒です。この時点で、クライアントは、サーバーがその要求 (フォルダーの作成) を実行していないと判断し、最終的に再送信します。現在、サーバーには 2 つのフォルダーがありますが、ユーザーはクライアントに 1 つのフォルダーしか作成していません。これを防ぐ方法は?

これを解決する方法の 1 つは、新しいリクエストごとに一意の ID を使用することです。そのため、ID はクライアントからの古いリクエストと新しいリクエストを区別する役割を果たします。しかし、これにより、これらの ID がサーバーに保存され、回避したい API 呼び出しごとにルックアップが行われます。

もう 1 つの方法は、タイムアウト期間を長くすることです。しかし、これを10秒から変更したくありません。

より良い解決策があることを何かが教えてくれます。

4

1 に答える 1

0

ある種のシーケンス番号を使用して、リクエストを再送信するときに、元のリクエストと同じシーケンス番号を持つようにします。そうすれば、サーバーは重複したリクエストを簡単に破棄できます。

また、サーバーの応答が非常に遅い理由を調べる必要があります。コンピュータにとって10秒は長い時間です。

于 2012-11-30T06:33:34.520 に答える