В настоящее время я разрабатываю многопользовательскую игру в реальном времени и оцениваю различные облачные хостинговые решения.Я не уверен, соответствует ли App Engine моим потребностям, и был бы признателен за любые отзывы.
По сути, я хочу, чтобы система работала так: игрок A вычисляет раунд n и генерирует хеш из игрысостояние в конце этого раунда.Затем он отправляет свои команды для этого раунда и хэш в виде HTTP POST на сервер.Проигрыватель B выполняет то же самое параллельно.
Сервер, обрабатывая POST от проигрывателя, сначала записывает полученный хеш-код в memcache.Если хеш от другого игрока еще не находится в memcache, он ожидает и периодически проверяет memcache для хеша других игроков.Как только оба хэша попадают в memcache, он сравнивает их на равенство.Если они равны, сервер отправляет команды каждого игрока соответственно другому в качестве ответа http.
Подобный раунд должен длиться около полсекунды, то есть два запроса на игрока в секунду.
Конечно, этот способ будет работать только в том случае, если запущено хотя бы два экземпляра приложения, так как два запроса должны обрабатываться параллельно.Кроме того, кэш-память должна быть согласованной во всех экземплярах, быть достаточно надежной и обновляться немедленно.
Я не могу использовать XMPP, потому что хочу, чтобы моя игра могла работать в ограниченных сетях, поэтому он должен быть ограниченна http через порт 80.
Есть ли способ обеспечить принудительное выполнение двух экземпляров приложения?Есть ли в моем дизайне явно очевидные недостатки?Как вы думаете, такая архитектура может работать на App Engine?Если нет, какое облачное решение вы бы предложили?