amqp lub xmpp Do Gier online w czasie rzeczywistym

Który z tych pakietów technologii dla wielu użytkowników projektu gry online.. Wymagania projektowe: 1. W stanie obsłużyć użytkownika 2k-5k w dowolnym momencie. 2. biblioteka kliencka dla iphone ' a i Androida (natywna, bez javascript). 3. biblioteka kliencka dla Microsoft Windows (najważniejsza), także dla mac os x i linux. 4. Dobra dokumentacja specjalnie dla rozwoju mod 5. Projekt nie jest open-source. Można więc używać tylko bibliotek z odpowiednią licencją.

Mogę programować również w erlang i Javie, język programowania nie jest problemem.

Patrzyłem na następujące technologie serwerowe, takie jak Openfire, Tigase, ejabberd i RabbitMQ. Wszystkie są dobre dla mojego projektu, ale chcę wiedzieć więcej o tym, jaki pakiet moje potrzeby, AMQP lub XMPP.

Co AMQP oferują specjalnie do gier online w czasie rzeczywistym. Czy to lepsza opcja niż xmpp?

Author: user381930, 2010-07-02

4 answers

Ludzie z Linden Labs (Second Life) dokonali dokładnego porównania wielu systemów komunikatorów, które powinieneś przeczytać:

Http://wiki.secondlife.com/wiki/Message_Queue_Evaluation_Notes

Jeśli coś jest warte, używam zeromq w projekcie i jest to naprawdę interesujące, ponieważ, w zależności od przypadku użycia, nie potrzebujesz węzła brokera.

 14
Author: itorres,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-18 22:55:37

Kluczową różnicą między XMPP i AMQP jest zawartość binarna. AMQP dobrze radzi sobie z danymi binarnymi, a XMPP wydaje się bardziej zaprojektowane dla XML. Osobiście w przypadku gier online używam buforów protokołu Google do formatowania i parsowania wiadomości, a przy ich bardzo małym rozmiarze binarnym byłbym bardziej skłonny używać AMQP do dostarczania tych wiadomości.

Ale zastanów się, jakiego serwera AMQP chcesz użyć. Zostałem ugryziony przez używanie RabbitMQ na moim serwerze AMQP w przeszłości. RabbitMQ nie posiada żadnych urządzenia do kontroli przepływu, w ogóle. Jeśli więc Twoi klienci wysyłają wiadomości szybciej niż serwer może je konsumować, bufory na serwerze mogą zapełnić się i wysadzić serwer. Nowsze wersje RabbitMQ implementują kontrolę przepływu w niezwykle szorstki sposób: zatrzymują wszystkich konsumentów w systemie, dopóki pamięć nie zostanie wyczyszczona.

Nigdy nie próbowałem zeromq, być może byłoby lepiej dla rzeczy, do których używam RabbitMQ...

 7
Author: Unoti,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-09-06 21:39:34

Użytkownicy 5K nie mówią mi zbyt wiele o swoim zachowaniu, ale jeśli wszyscy przesłali jedno żądanie w tym samym oknie 10 sekund, powiedzmy, że będziesz szukać w 500-1000 żądań na sekundę.

Miałem Active / mq działa na moim stosunkowo niskiej mocy lap-top łatwo obsługujących 300 żądań na sekundę, więc z przyjemnością polecam go tutaj. Możesz również skonfigurować klastry brokerów i osiągnąć poziomą skalowalność. Możesz użyć protokołu http (STOMP) lub jego natywnego protokołu binarnego. Wiele bibliotek API klienta również dla C / C++, Java, JavaScript i innych. Istnieje pewne początkowe wsparcie AMQP .

Nie wspomniałeś o żadnym wymogu wytrwałości, ale znowu myślałem, że większość RDBMSs wystarczy. Mimo to niektóre z baz danych zorientowanych na dokumenty i dużych tabel wyglądają interesująco z perspektywy skalowania poziomego.

Znalazłem również Apache Camel bardzo wydajny i Gorąco polecam. Camel jest używany do implementacji logiki warstwa.

'mam nadzieję, że to pomoże.

 5
Author: Christopher Hunt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-09-07 00:09:28

XMPP może być używany w grach tekstowych. http://gamerunes.com

 1
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-10 02:18:50