2010-07-02 3 views
13

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

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

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

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

ответ

13

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

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

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

+0

В нем содержится подробный анализ AMQP, но почти ничего относительно XMPP. – Robin

7

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

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

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

5

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

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

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

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

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

Смежные вопросы