1

私の質問を明確に説明しようとします。Amazon EC2 で Java REST Web サービスを実行したとします。HTTP リクエストは、文字列「testString」を使用してサービスの 1 つに到達します。いくつかの一般的なクラスのメモリに保存します。たとえば、文字列のリスト ('stringsList') に追加するとします。

私の質問は: Web サービスのインスタンスが複数ある場合、これらのインスタンスのそれぞれでこの文字列を使用できますか? ユーザーが "stringsList.getString('testString')" を呼び出す HTTP 要求を生成する場合、文字列は確実に取得されますか? または、利用可能であるが、Web サービスの別のインスタンス上にあるため、見逃す可能性がありますか?

負荷分散と複数のインスタンスを備えたスケーラブルな Web サービスとして Web サービスを実行できるようにしたいが、特定の HTTP 要求情報を保存できるようにしたい (おそらくこれがまさに REST がステートレスであるべき理由なので、私の設計は私がこれをしたいのなら間違っていますか?)。私が目指すWebサービスは次のようなものです。

スケーラブルな Web サービス (Heroku から)

よくわかりませんが、詳細を説明します。

  1. SSH 経由で EC2 インスタンスに Web サービスを実行した場合、このような 1 つしかない場合、問題にはなりませんよね?
  2. 同じことをしますが、多くのインスタンスで、Amazon Elastic 負荷分散を使用すると?
  3. 2 に対する答えがミスの可能性があるというものであるが、それでもこれを達成したい場合、別の方法は何ですか?
  4. これを Amazon EC2 ではなく、別のサービスで行うのは得策ではないでしょうか? もしそうなら、どれですか?

    • それをデータベースに入れるのは私が望んでいることではありません。必要なもののために数時間だけメモリに保存したいのです。

ありがとう、
リラン

4

2 に答える 2

1

Memcacheは、この問題の自然な選択のようです。ただし、GoogleAppEngineでのみ利用できるわけではありません。必要に応じて、EC2で独自のMemcacheサーバーを実行することもできます。

于 2011-05-04T20:23:18.270 に答える
0

Amazon には「共有メモリ」の概念はなく、その文字列はすべてのインスタンスで利用できるわけではありません。は単純なデータベースですが、DB を使用したくないと言います。

ロードバランサーで Cookie を使用して、最初にリダイレクトされたのと同じインスタンスにユーザーを常にリダイレクトすることは可能ですが、これで問題が解決するようには思えません。文字列は、それを設定したユーザーだけのものではないと思います.

Google App Engine の方が適している可能性があります。使用するサーブレット インスタンス全体でMemcacheをサポートし、すべてのサーブレット インスタンスが同じ memcache にアクセスできます。

于 2011-05-03T20:49:06.507 に答える