ステートレスサーバーとは何ですか?


ベストアンサー

ステートレスとは、ステートレスサーバーを意味します。

Webサーバーを例にとってみましょう。ステートフルでもステートレスでもかまいません。

ステートフルとは、サーバーがセッション情報を保存して、後続の複数のリクエストでユーザーを識別することを意味します。セッションが有効な場合、リクエストは成功します。

ステートレスはその逆です。サーバーは状態、つまり後続の複数の要求でユーザーを識別するためのセッション情報を格納しません。各リクエストには、ユーザーを識別する何らかの方法を含める必要があります。これを実現する1つの方法は、トークン(JSON WebトークンやoAuthなど)を使用することです。このトークンは、リクエストごとに(通常はリクエストヘッダーで)送信されます。

これにより、サーバーがセッションデータを保持する必要がなくなり、複数のサーバーに移動するにはセッションデータを共有する必要があるため、スケーラビリティに影響します。

回答

Webに関連して「セッション」と呼ばれるものを聞いたことがありますか?

概念を一般化するのではなく、次のように説明します。私たちのほとんどすべてがインターネットやWWWで遭遇した、より一般的な出会いです。

ステートフルサーバーは、セッションの形式でユーザーの状態情報を維持します。これは、Webサイトでの「アカウントへのサインイン」とは異なります。現在、WWW経由でアクセスできるHTTP Webサイトの大部分は、ユーザーのセッション情報を保持しています。したがって、セッションの実行中、すべてのリクエストは、そのWebサイトのページに最初にアクセスしたときに開かれた特定のセッションに属します。通常、セッションはブラウザを閉じたときにのみ終了します。セッション情報を維持することは、Webサーバーがパーソナライズされたサービスを提供するのに役立ちます。さらに、セッションは、任意の時点で同時Webトラフィックを監視するのにも役立ち、サーバーに多数の要求を送信して(おそらく同じ確立されたセッションを使用して)サーバーを停止しようとする悪意のあるユーザーを禁止するなどのセキュリティ機能を提供します。最後に、セッションはWebサイトに「ログイン」するために使用されます。 Webサイトにログインすると、開いたセッションでWebサービスによって一意の識別子が保存され、その後のすべてのリクエストに対して、Webサーバーはサービスにアクセスしているのはあなたであることがわかります。

ステートレス一方、サーバーはユーザーの状態情報を保持しません。各リクエストは、前のリクエストから完全に独立しています。 HTTPを使用する最も一般的なステートレスアーキテクチャは、Web APIの設計に使用されるREST(REpresentational State Transfer)です。サービスへのリクエストに、以前にユーザーに割り当てられた一意のユーザーIDが含まれている場合でも、ステートレスサーバーはユーザーを識別できる場合があります。ただし、セッションでこのユーザーIDを維持するステートフルサーバーの場合とは異なり、そのユーザーIDはすべてのリクエストで渡される必要があり、リクエストデータには必ずしもこのIDが含まれている必要はありません。

この回答を通じて私はステートフルサーバーとステートレスサーバーの主な違いを強調しようとしました。違いは、より一般化されたシナリオに拡張される可能性があります。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です