Amqp или xmpp для онлайн-игр в режиме реального времени

Какой из этих наборов технологий для многопользовательского онлайн-проекта игры. Требования к проекту: 1. Возможность обрабатывать пользователя 2k-5k в любой момент времени. 2. клиентская библиотека для iphone и android (родной, без javascript). 3. Клиентская библиотека для Microsoft Windows (самое главное), также для mac os x и linux. 4. Хорошая документация специально для разработки мода 5. Проект не является открытым исходным кодом. Таким образом, могут использоваться только библиотеки с подходящей лицензией.

Я могу программировать и в erlang и java, язык программирования не является проблемой.

Я рассматривал следующие серверные технологии, такие как Openfire, Tigase, ejabberd и RabbitMQ. Все хорошо для моего проекта, но я хочу узнать больше о том, какой пакет мне нужен, AMQP или XMPP.

Что предлагает AMQP специально для онлайн-игр в режиме реального времени. Это лучше вариант xmpp?

Ответы

Ответ 1

Люди из Linden Labs (Second Life) тщательно проанализировали множество систем обмена сообщениями, которые вы должны прочитать:

http://wiki.secondlife.com/wiki/Message_Queue_Evaluation_Notes

Для того, что стоит, я использую zeromq в проекте, и это действительно интересно, потому что, в зависимости от варианта использования, вам не нужен брокер node.

Ответ 2

Ключевым отличием между XMPP и AMQP является двоичный контент. AMQP обрабатывает двоичные данные просто отлично, и XMPP кажется более разработанным для XML. Лично для онлайн-игр я использую буферы протокола Google для форматирования и разбора сообщений, и с их очень маленьким двоичным размером, я был бы более склонен использовать AMQP для доставки этих сообщений.

Но подумайте, какой сервер AMQP вы хотите использовать. Я был укушен, используя RabbitMQ для моего сервера AMQP в прошлом. У RabbitMQ нет никаких средств управления потоком. Поэтому, если ваши клиенты отправляют сообщения быстрее, чем ваш сервер может их использовать, буферы на сервере могут заполнять и удалять сервер. Более свежие версии RabbitMQ обеспечивают управление потоком чрезвычайно грубым способом: они останавливают всех пользователей в системе до тех пор, пока память не очистится.

Я никогда не пробовал zeromq; возможно, было бы лучше, если бы я использовал RabbitMQ для...

Ответ 3

Пользователи 5K не рассказывают мне много о своем поведении, но если все они отправили один запрос в течение того же 10-секундного окна, то пусть скажет, что вы будете искать 500-1000 запросов в секунду.

У меня был Active/MQ, работающий на моем сравнительно маломощном ноутбуке, который легко обрабатывал 300 запросов в секунду, поэтому я бы с радостью порекомендовал его здесь. Вы также можете настроить кластеры брокеров и достичь горизонтальной масштабируемости. Вы можете использовать протокол http (STOMP) или собственный бинарный протокол. Множество клиентских API-библиотек также для C/С++, Java, JavaScript и других. Существует некоторая начальная поддержка AMQP.

Вы не упомянули о требованиях к сохранности, но я бы подумал, что большинство СУБД будет достаточным. Тем не менее, некоторые из баз данных, ориентированных на документы и большие таблицы, выглядят интересными с точки зрения горизонтального масштабирования.

Я также нашел Apache Camel высокоэффективным, и я настоятельно рекомендую его. Camel используется для реализации вашего логического уровня.

'надеюсь, что это поможет.

Ответ 4

XMPP может использоваться в текстовых играх. http://gamerunes.com