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