14

マルチユーザーオンラインゲームプロジェクト用のこれらのテクノロジースイートのどれか。プロジェクト要件:1。いつでも2k-5kユーザーを処理できる。2. iphoneおよびandroid用のクライアントライブラリ(ネイティブ、javascriptなし)。3. Microsoft Windows(最も重要)用のクライアントライブラリ、またmacosxおよびlinux用。4.mod開発のための特別な優れたドキュメント5.プロジェクトはオープンソースではありません。したがって、適切なライセンスを持つライブラリのみを使用できます。

erlangとjavaでもプログラミングできますが、プログラミング言語は問題ではありません。

私は、Openfire、Tigase、ejabberd、RabbitMQなどの次のサーバーテクノロジーを検討していました。すべてが私のプロジェクトに適していますが、AMQPまたはXMPPのどのスイートが必要かについてもっと知りたいです。

AMQPがリアルタイムオンラインゲームのために特別に提供するもの。xmppよりも優れたオプションですか?

4

4 に答える 4

17

Linden Labs(Second Life)の人々は、あなたが読むべき多くのメッセージングシステムを徹底的に比較しました:

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

価値があるのは、プロジェクトでzeromqを使用していることです。ユースケースによっては、ブローカーノードが必要ないため、非常に興味深いものです。

于 2010-08-18T22:55:37.163 に答える
7

XMPPとAMQPの主な違いは、バイナリコンテンツです。AMQPはバイナリデータを適切に処理し、XMPPはXML用に設計されているようです。個人的にオンラインゲームでは、メッセージのフォーマットと解析にGoogle Protocol Buffersを使用していますが、バイナリフットプリントが非常に小さいため、AMQPを使用してこれらのメッセージを配信する傾向があります。

ただし、使用するAMQPサーバーを検討してください。過去にAMQPサーバーにRabbitMQを使用して噛まれたことがある。RabbitMQには、フロー制御機能はまったくありません。したがって、クライアントがサーバーがメッセージを消費するよりも速くメッセージを送信している場合、サーバー上のバッファーがいっぱいになり、サーバーが爆発する可能性があります。RabbitMQの最近のバージョンは、非常に粗い方法でフロー制御を実装しています。メモリがクリアされるまで、システム内のすべてのコンシューマーを停止します。

私はzeromqを試したことがありません。おそらく、私がRabbitMQを使用してきたものの方が良いでしょう...

于 2010-09-06T21:39:34.073 に答える
5

5Kユーザーは自分の行動についてあまり教えてくれませんが、全員が同じ10秒のウィンドウ内に1つのリクエストを送信した場合、1秒あたり500〜1000のリクエストを調べているとしましょう。

比較的低電力のラップトップでActive/MQを実行して、1秒あたり300のリクエストを簡単に処理できるようにしたので、ここでそれをお勧めします。ブローカーのクラスターをセットアップして、水平方向のスケーラビリティーを実現することもできます。httpプロトコル(STOMP)またはそのネイティブバイナリプロトコルを使用できます。C / C ++、Java、JavaScriptなどのクライアントAPIライブラリも多数あります。初期のAMQPサポートがいくつかあります。

永続性の要件については言及されていませんが、ほとんどのRDBMSで十分だと思いました。とは言うものの、ドキュメント指向でBigTableタイプのデータベースの中には、水平スケーリングの観点からは興味深いものがあります。

また、Apache Camelのパフォーマンスが高いこともわかったので、強くお勧めします。Camelは、ロジックレイヤーを実装するために使用されます。

'これがお役に立てば幸いです。

于 2010-09-07T00:09:28.017 に答える
1

XMPPは、テキストゲームで使用できます。http://gamerunes.com

于 2011-06-10T02:18:50.050 に答える