4

私はRESTを知っており、セッションを使用せずにRESTful Webサービスを作成することを知っています。それはよく知っていますが、ステートレスの概念と、RESTを使用してアプリケーションをスケーラブルにする方法をよく理解していません。

誰かがRESTのこれらの2つの側面、ステートレスとスケーラビリティを説明できますか?また、SOAPはどのように異なり、お勧めできませんか?

4

3 に答える 3

6

ステートフル API は、接続されているすべてのクライアントのセッションを維持します。これは、セッションをサーバー間で共有する必要があることを意味し、スケーラビリティが制限されます。

この状態をクライアントに保存し、リクエストごとに送信することで、同じ状態を維持しながらスケーラビリティを向上させることができます。

于 2012-12-21T12:04:28.527 に答える
2

RESTful サービスを作成しても、アプリケーションがスケーラブルになるわけではありません。実際には、セッション ベースの RESTful サービスを作成できます。これは、複数のマシン、固定セッション、または完全にステートレスにまたがることはできません。

スケーラビリティに関しては、サービスがスケーラブルかどうかは多くの要因によって決まります。実際、サービスセッションを必要とする場合でも、サービスはスケーラブルです (たとえば、サービスにスティッキー セッションがある場合は、セッションが 1 台のマシンと Web でホストされていることを意味します)。訪問者は常にセッションが存在する同じマシンに戻ってきます)。

ステートレス サービスは、リクエストが処理されると、その Web 訪問者からの次のリクエストが必ずしも同じマシンに返される必要がないことを意味するため、スケールアウトが容易になります。同じ種類のリクエストにサービスを提供したい。トラフィック量が 2 倍になった場合、同じ数のマシンとブームを追加するだけで、2 倍のリクエストを処理できるようになります。

ただし、実際には複雑になり、完全にステートレスなサービスを作成することはほとんど不可能です。ほとんどの場合、Web 訪問者がデータを更新できる場合、2 人の Web 訪問者が同じデータを変更する可能性があり、データの破損を防ぐために何らかの同期を行う必要があるため、同時実行の問題が発生します。そのような場合、データを変更できるサービスがステートレスではなく、データを抽出できるサービスがステートレスになるように、サービスを分割することをお勧めします。ほとんどの場合、重労働のほとんどはデータ更新ではなくデータ抽出側にあると推測されるため、これでうまくいきます。

SOAPに関しては、より軽量なRESTに向かって世界が動いているとしか言えません。

于 2012-12-21T12:16:34.330 に答える
1

ステートレスであることは、必要な数のフロントを持つことができることを意味し、それぞれが同じ方法でリクエストに答えることができます。つまり、世話をするファイルシステム セッションはありません。

したがって、スケーリングできます (必要な数のフロントを追加できます)。これが、ステートレスになる最も明白な理由です。

于 2012-12-21T12:01:25.460 に答える