amqp или xmpp для онлайн игр в реальном времени - PullRequest
15 голосов
/ 02 июля 2010

Какой из этих наборов технологий для проекта многопользовательской онлайн-игры. Требования к проекту: 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?

Ответы [ 4 ]

16 голосов
/ 19 августа 2010

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

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

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

7 голосов
/ 07 сентября 2010

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

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

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

5 голосов
/ 07 сентября 2010

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

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

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

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

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

1 голос
/ 10 июня 2011

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

...