0

AppEngine を使用した Web アプリケーションのライフサイクルを考えると疑問があります。次の状況を考えてみましょう: 現在接続しているユーザーに関する情報と、p2p プロトコルの使用中に役立つその他すべての詳細を提供する、p2p ネットワークでサーブレットをスーパー ピアにしたいと考えています。

Datastore Java API を使用してこれらのデータを保存することにしました。アプリにリクエストが届くと、データベースからデータが取得され、ユーザーに送信されます。単純。これが問題です-データの取得はやや冗長なようです。アプリの起動時に一度データを取得して、ユーザーに送信することは可能でしょうか。

私は 60 秒のリクエストとレスポンスの制限を認識しており、このトピックGoogle App Engine Instance Life Cycleに基づいて、すべてのユーザー リクエストがサーブレットの別のインスタンスを作成し、ユーザーがアクセスするたびにすべてのデータを取得する必要があると推測します。リクエストを送信します。私は正しいですか?冗長なデータベース アクセスをなくすためにできることはありますか? Google が提供する Backend を使ってみませんか?

前もって感謝します!

4

2 に答える 2

0
  1. すべてのリクエストに対して新しいインスタンスが開始されるわけではありません。

  2. インスタンスは、GAEがリクエストを処理するためにより多くのコンピューティングパワーが必要であると判断したときに開始されます。

  3. どのインスタンスがリクエストを処理するかを知ることはできません。

  4. バックエンドは固定インスタンス(=実行中の数を構成)であるため、共有データを保持するのに適しています。注意:バックエンドは永続的なストレージではなく、いつでも再起動できます(私の経験では、これは1日に1回発生します)。したがって、データを保存する必要があります

  5. memcache(=揮発性ですが、高速で安価)を使用して、共有データとデータストアをフォールバック(=信頼性はありますが、低速で高価)として保持できます。

于 2012-08-14T14:07:37.930 に答える
0

いいえ、あなたは正しくありません。サーブレット (つまりインスタンス) は、複数の要求に対して存続します。ただし、寿命は予測できないため、それに依存するべきではありません。

このタイプのデータを保存するには、memcached を使用する必要があります。

于 2012-08-14T14:04:14.250 に答える