2010-07-02 14 views
13

Który z tych zestawów technologii dla projektu gier online dla wielu użytkowników .. Wymagania projektu: 1. Potrafi obsłużyć użytkownika 2k-5k w dowolnym momencie. 2. biblioteka klienta dla iPhone'a i Androida (natywna, bez javascript). 3. biblioteka klienta dla systemu Microsoft Windows (najważniejsze), także dla mac os x i linux. 4. Dobra dokumentacja specjalnie do rozwoju modów 5. Projekt nie jest open-source. Więc może korzystać tylko z bibliotek z odpowiednią licencją.amqp lub xmpp do gier czasu rzeczywistego

Mogę programować w języku erlang i java, a język programowania nie jest problemem.

Szukałem następujących technologii serwerowych, takich jak Openfire, Tigase, ejabberd i RabbitMQ. Wszystkie są dobre dla mojego projektu, ale chcę wiedzieć więcej o moim pakiecie moich potrzeb, AMQP lub XMPP.

Co AMQP oferuje specjalnie dla gier online w czasie rzeczywistym. Czy jest to lepsza opcja niż xmpp?

Odpowiedz

13

Lud Linden Labs (Second Life) dokonał gruntownej porównania wielu systemów przesyłania wiadomości, które należy przeczytać:

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

Na co warto, 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.

+0

Zawiera szczegółową analizę AMQP, ale prawie nic z XMPP. – Robin

7

Kluczową różnicą między XMPP i AMQP jest zawartość binarna. AMQP obsługuje dane binarne, a XMPP wydaje się być bardziej zaprojektowany dla XML. Osobiście używam buforów protokołów Google do formatowania i analizowania wiadomości, a dzięki bardzo małemu odciskom binarnym chętniej używam AMQP do dostarczania tych wiadomości.

Ale zastanów się, z jakiego serwera AMQP chcesz korzystać. Zostałem ugryziony za pomocą RabbitMQ dla mojego serwera AMQP w przeszłości. RabbitMQ nie ma żadnych urządzeń do kontroli przepływu. Więc jeśli twoi klienci wysyłają wiadomości szybciej niż serwer może je zużyć, bufory na serwerze mogą wypełnić i wysadzić serwer. Nowsze wersje kontroli przepływu narzędzia RabbitMQ w niezmiernie gruby sposób: zatrzymują w systemie wszystkich użytkowników, dopóki pamięć nie zostanie wyczyszczona.

Nigdy nie próbowałem zeromq; być może byłoby lepiej dla rzeczy, które używałem RabbitMQ dla ...

5

5K użytkownicy nie mówią mi zbyt wiele o swoim zachowaniu, ale jeśli wszyscy złożyli jedną prośbę w tym samym 10-sekundowym oknie, to powiedz, że będziesz szukał 500-1000 zapytań na sekundę.

Miałem Active/MQ działające na moim stosunkowo małym laptopie, który z łatwością obsługuje 300 zgłoszeń na sekundę, więc z przyjemnością polecam go tutaj. Można również skonfigurować klastry brokerów i osiągnąć skalowalność poziomą. 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 kilka początkowych AMQP support.

Nie wspomniano o wymogu trwałości, ale ponownie pomyślałem, że większość RDBMS wystarczy. Mimo to niektóre z baz danych zorientowanych na dokumenty i dużych tabel wyglądają interesująco z horyzontalnej perspektywy skalowania.

Zauważyłem też, że Apache Camel jest bardzo wydajny i zdecydowanie go polecam. Wielbłąd służy do implementacji twojej warstwy logicznej.

"mam nadzieję, że to pomaga.

Powiązane problemy