Какую архитектуру выбрать для бэкенда мобильной онлайн игры?

Вечер добрый!


Все мы знаем, что существует куча ситибилдеров для различных мобильных платформ. Везде необходимо совершать какие-либо действия через заданный промежуток времени. Гугл подсказывает много инфы о том, как надо собирать кластер, как лучше разбить на таблички бд, о том, что сюжет — это главное в игре. Но молчит как рыба о том, как реализовать правильно эти самые таймеры ожидания. После предыдущих вопросов к хабру и своих размышлений, нарисовалось несколько вариантов:


1) Хранить в бд время окончания, и время от времени дергать сервак

2) Использовать встроенные в node.js таймеры, если верить описанию api, то будь их хоть 1кк все должно быть ок(?)

3) Redis+Resque — кажется очень простым в реализации решением, но не нашел инфы, насколько это целесообразно(экономично)

4) RabbitMQ — там вроде можно организовать доставку сообщений after delay, что кажется очень гуд, учитывая его хорошую масштабируемость


Какой вариант лучше? Может подскажите, где можно почитать, про мою задачу? Или, возможно, даже есть опенсорсные примеры? Вроде как должны быть и готовые библиотечки или фрэймворки под это дело, ведь таких игрушек миллионы, сложно поверить, что каждые пишет свою реализацию?!


Заранее спасибо!
  • Вопрос задан
  • 4301 просмотр
Пригласить эксперта
Ответы на вопрос 2
qxfusion
@qxfusion
1) теоретически можно, но не проще ли выделить сервер времени на базе NTP + JSONP API к нему?
2) node.js умирает уже при более 50таймерах, т.е. в принципе работа возможна, НО высокоточное время 100% не получит (писал проект — ЗНАЮ, ms точно потеряеете, а при большом числе клиентов погрешность до 10s может быть)
3) а почем не MemcacheDB + MemcacheQ = БД + Очереди
4) RabbitMQ самое то — особенно хорош в failover режиме
Ответ написан
sdevalex
@sdevalex
> 2) Использовать встроенные в node.js таймеры, если верить описанию api, то будь их хоть 1кк все должно быть ок(?)
Если сервер упадет, то у вас слетят все таймеры.

3) Redis+Resque — кажется очень простым в реализации решением, но не нашел инфы, насколько это целесообразно(экономично)
Отличное решение, если не нужна максимальная производительность.

У вас вопрос больше по теме «Как и где хранить список задач?» или я не так понял?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы