私は、ユーザーがサーバーに接続して、ゲームをプレイしたいレベルのユーザーを見つけるゲームを持っています。ここにゲームリクエストの基本的なアーキテクチャがあります。GAE + ndbを使った試合
私はGoogleのデータストア内の各ユーザーレベルの待機キューを保存するためにndb
を使用しています。
私はこれらのキューにアクセスして、一貫性を確保しています(this article)。エンティティは、繰り返された(のリスト)LocalStructuredPropertyを使用してキューに格納されます。
質問:それは要求に一致しているので、エンティティが待ちキューから削除され
- 。トランザクションはコミットされていますが、まだ適用されていません。同じエンティティが別の要求と照合され、削除されます。これはエラーを投げるでしょうか?
- これらの強固に一貫したアクセスは〜1書き込み/秒に制限されています。この制約を取り除く優れたアーキテクチャはありますか?
私が後者の問題について考えてきたことの1つは、複数のキュー(要求が増えて縮小する)を維持することです。
うん、誰かが:)理論を知っていた期待していました。 [memcacheが削除されてしまった](https://cloud.google.com/appengine/articles/scaling/memcache#what)が心配でした。どのくらいの頻度でそれが起こるか考えてみてください – Alex
memcacheが落とされる頻度はわかりませんが、memcache(他のユーザーも含む)の合計負荷/需要に依存していることが分かります。 NDBとmemcacheの両方に書き込むことで、それを管理できます。キューに祖先がない場合は、1つのwrite/sec制約によって制限されるべきではなく、親キーにのみ適用されます。 –