Sharding и управление очень занятой переменной - PullRequest
1 голос
/ 27 июля 2010

У меня есть одна переменная pool, общая для всех клиентов, которая хранит всех оставшихся врагов в игре.Когда клиент начинает игру, он получает несколько врагов от pool.Когда он заканчивает, враги, которых он не убивал, возвращаются в pool.Игра также проверяет, все ли враги были убиты (т. Е. pool пусто).

Как лучше всего реализовать pool?Меня беспокоит ограничение в 5 обновлений в секунду для объекта хранилища данных.

1 Ответ

2 голосов
/ 27 июля 2010

Как часто вы ожидаете, что игра начнется / закончится?Если ответ определенно меньше 5 в секунду, тогда просто используйте одну сущность для представления pool и используйте транзакции для атомарного получения и обновления его по мере начала и окончания игры.

Если вы действительно этого ожидаетеМногие клиенты сообщают одну pool, что она будет обновляться с постоянной скоростью более 5 раз в секунду, а затем рассмотрим разбиение pool на несколько частей.Когда клиент запускает игру, удалите сущности только из одного из осколков.Чтобы проверить, является ли осколок pool пустым, просто извлеките все осколки и посмотрите, все ли они пусты.(При изменении шарда вам все равно придется использовать транзакцию.)

...