2012-01-17 11 views
1

私は現在PythonでApp Engineを使用しています。App Engine:高速読み込みと高い書き込みスループットを保証するMemcacheデザイン

私のアプリケーションは、の大規模なマルチプレイヤーゲームのように見えます。 「部屋」に掲載された最新のアクションを取得するのに必要な時間を改善したいと思います。

私はMemcache APIを使用して、書き込みスループットの低いアクション(毎分1回)を保存して取得しています。

:以外にも、私はまた、(選手によって公表例えばメッセージ「部屋」で多くの人々が存在する場合秒あたりいくつかの)高い書き込みスループットを持つアクションを取得のためにそれを検討していますこの高い書き込みスループットのためにMemcacheストレージを設計するようにアドバイスしてください。 value = 1つのキーと値のペア(最新の公開されたアクションのリスト)が正しい解決策ではないようです。

おかげで、

+1

コードを表示してください!私たちは、あなたが何をしようとしているのかについて、何らかのコードとより有用な説明がなければ、有用なものを伝えることはできません。 –

答えて

2

あなたのアプリケーションの詳細はせずに質問に答えるのは難しいです。 簡単な考え方は、より多くのキーと値のペアを使用することです。例えば

# when write action log 
# 1. decide the prefix based on the data 
prefix = decide_prefix(action) 

# 2. random pick up a bulk for this data 
index = random.choice(range(100)) 

# 3. write action into a queue 
action_list = memceche.get("%s_%s"%(prefix, index)) 
action_list.append(action) 
memcache.set("%s_%s"%(prefix,index), action_list) 

# when read action log 
action_lists = memcache.get_multi(["%s_%s"%(prefix, k) for k in range(100)]) 

# merge all action list together. 
all_action_list = merge_action_list(action_lists) 

また、あなたは比較し、同時リクエストを処理するために設定することができます。 http://code.google.com/appengine/docs/python/memcache/overview.html#Using_Compare_and_Set_in_Python

GAE memcahceには独自の制限があり、データの永続性は保証されません。 memcacheの使用量を増やすと、失われるデータが増える可能性があります。したがって、データ・ストアを使用して永続性データを保存する必要があります。

http://code.google.com/appengine/docs/python/memcache/overview.html#Quotas_and_Limits

+1

ご意見ありがとうございます。それは私が思ったのですが、それが正しいアプローチであるかどうかわかりませんでした。実際には、サーバーとクライアント間のリアルタイム通信にPUBNUBを使用すると、数日前にAPIに「歴史」機能があります。私はすでにそれを使用して、それは本当に高速見つける。再度、感謝します。 – Damien

関連する問題