App Engine: дизайн Memcache для обеспечения быстрого чтения и высокой скорости записи

В настоящее время я использую App Engine с Python.

Мое приложение выглядит как массивная многопользовательская игра. Я хотел бы сократить время, необходимое для получения последних действий, опубликованных в "комнате".

Я уже использую Memcache API для хранения и извлечения действий с низкой производительностью записи (1 каждую минуту). Кроме того, я также рассматриваю это для извлечения действий с высокой скоростью записи (несколько раз в секунду, если в "комнате" много людей: например, сообщения, опубликованные игроками)

Как бы вы посоветовали мне спроектировать хранилище memcache для такой высокой производительности записи? Одна пара ключ / значение, где значение = список последних опубликованных действий, не кажется правильным решением.

Спасибо,

1 ответ

Решение

Трудно ответить на вопрос без более подробной информации о вашем заявлении. Простая идея - использовать больше пары ключ / значение.

Например:

# 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

GAE memcahce имеет свой собственный лимит и не гарантирует сохранность данных. Увеличение использования memcache может привести к потере большего количества данных. Таким образом, вам все еще нужно использовать хранилище данных для сохранения данных о постоянстве.

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

Другие вопросы по тегам