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?
Решение
Люди Линден Лаборатории (вторая жизнь) сделали тщательное сравнение множества систем обмена сообщениями, которые вы должны прочитать:
http://wiki.secondlife.com/wiki/message_queue_evaluation_notes.
Для чего стоит, я использую Zeromq в проекте, и это действительно интересно, потому что, в зависимости от случая использования, вам не нужен узел брокера.
Другие советы
Ключевое различие между XMPP и AMQP - это двоичный контент. AMQP обрабатывает двоичные данные просто хорошо, а XMPP кажется более предназначенным для XML. Лично для онлайн-игр я использую буферы протокола Google для форматирования и анализа сообщений, а также с их очень маленьким двоичным следом, я был бы более склонен использовать AMQP для доставки этих сообщений.
Но рассмотрите возможность использовать AMQP Server, который вы хотите использовать. Я был укушен, используя rabbitmq для моего сервера AMQP в прошлом. У RABBITMQ нет никаких объектов управления потоком, вообще. Поэтому, если ваши клиенты отправляют сообщения быстрее, чем ваш сервер может потреблять их, буферы на сервере могут заполнить и ударить сервер вверх. Более поздние версии RABBITMQ реализуют контроль потока в чрезвычайно грубый путь: они остановлены все Потребители в системе, пока память не устранится.
Я никогда не пробовал Zeromq; Возможно, это будет лучше для вещей, которые я использовал rabbitmq для ...
Пользователи 5k не рассказывают мне много о своем поведении, но если они все будут представлены один запрос в рамках того же 10 секунды, то скажем, вы бы искали в 500-1000 запросов в секунду.
У меня был Active / MQ, работающий на моем относительно низкой мощности, легко обработке 300 запросов в секунду, и поэтому я бы счастливо рекомендую это здесь. Вы также можете настроить кластеры брокеров и достичь горизонтальной масштабируемости. Вы можете использовать HTTP-протокол (STOP) или его родной бинарный протокол. Множество библиотек API клиента также для C / C ++, Java, JavaScript и других. Есть некоторые начальные Поддержка AMQP.
Вы не упомянули никаких требований настойчивости, но я снова бы подумал, что большинство RDBMS достаточно. Тем не менее, некоторые из баз данных ориентированного на документ и базы данных большого стола выглядят интересными из горизонтальной перспективы масштабирования.
Я также нашел Apache верблюда высокопроизводительного, и я настоятельно рекомендую это. Верблюд используется для реализации вашего логического слоя.
«Надеюсь, что это поможет.
XMPP можно использовать в текстовых играх. http://gamerunes.com.