1

いくつかの値をメモリ内に保持する必要があります。メモリ内データベースのようなものです。信頼性に関しては、システム障害を心配していません。ただし、値はいつでも削除できるため、memcache サービスを使用できません。アプリケーションがスケーリングするときに、値を他のマシンで使用できるようにする必要があります。appengine はメモリ スケールを作成しないと思いますか (たとえば、通常の Java コレクションに値を保持する場合)。

ここで実現しようとしているのは、「ニックネームを選ぶ」サービスです。これは 2 つのステップで機能します。まず、ユーザーはニックネームを予約します。それから彼はニックネームを登録します。ニックネームは 1 つのエンティティ グループに保存されます (原文のまま!)。したがって、データストアの競合を避ける必要があります。

https://developers.google.com/appengine/articles/scaling/memcacheから理解できる限り、memcache の値が恣意的な理由で削除されるべきではないことにある程度依存できます。ただし、これが時々発生することを期待する必要があります(たとえば、メモリレベルが高い場合)。そして、この価値の損失は、ユーザーにとって非常に不快です。

4

2 に答える 2

1

アプリケーションはMemcacheの単一インスタンスを共有します。これは、「マシン」(またはアプリケーションのインスタンス)に対してローカルではありません。

したがって、2つのインスタンスを実行していて、両方がmemcacheから同じ値を取得する場合、両方とも同じ値を取得します。

「インメモリ」データベースの実行はクラウドでは実行できません。使用する予定のメモリはどれですか。シャットダウンしようとしているインスタンスのメモリですか。

https://developers.google.com/appengine/articles/scaling/memcache

アプリケーションを設計するときは、将来の再利用のためにどのデータセットをキャッシュできるかを時間をかけて検討してください。これらは、ほんの数例を挙げると、一般的に表示されるページであるか、データストアエンティティを読み取ることがよくあります。また、アプリのすべてのインスタンス間で共有したいが、永久に永続化する必要のないデータがアプリケーションに存在する場合があります。このような場合、memcacheは、一時データ用の高速で効率的な分散ストレージシステムを提供することで、アプリのスケーラビリティを向上させることができます。サーバー側のコードにmemcacheロジックを追加することは、多くの場合、数行のコードを追加するだけの価値があります。

于 2013-01-12T12:12:28.570 に答える
0

Python27を使用する場合は、AppEngineNDBを使用できます。NDbは、自動キャッシュなどを備えたデータストアです。

他のマシン?同じアプリのインスタンス間で共有することを意味します。

于 2013-01-12T12:10:23.443 に答える