【问题标题】:amqp or xmpp for real time online gamesamqp 或 xmpp 用于实时在线游戏
【发布时间】:2011-03-11 00:56:35
【问题描述】:

哪些技术套件适用于多用户在线游戏项目。 项目要求: 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 更好的选择?

【问题讨论】:

    标签: xmpp rabbitmq openfire ejabberd


    【解决方案1】:

    XMPP 可用于文字游戏。 http://gamerunes.com

    【讨论】:

      【解决方案2】:

      5K 用户并没有告诉我太多关于他们的行为,但如果他们都在同一个 10 秒窗口内提交了一个请求,那么假设您将查看每秒 500-1000 个请求。

      我的 Active/MQ 在我相对低功率的笔记本电脑上运行,每秒轻松处理 300 个请求,因此我很乐意在此推荐它。您还可以设置代理集群并实现水平可扩展性。您可以使用 http 协议 (STOMP) 或其本机二进制协议。许多客户端 API 库也适用于 C/C++、Java、JavaScript 等。有一些初始的AMQP support

      您没有提到任何持久性要求,但我再次认为大多数 RDBMS 就足够了。也就是说,从水平扩展的角度来看,一些面向文档和大表类型的数据库看起来很有趣。

      我还发现 Apache Camel 的性能非常好,我强烈推荐它。 Camel 用于实现你的逻辑层。

      '希望这会有所帮助。

      【讨论】:

        【解决方案3】:

        XMPP 和 AMQP 之间的主要区别在于二进制内容。 AMQP 可以很好地处理二进制数据,而 XMPP 似乎更适合 XML。对于在线游戏,我个人使用 Google Protocol Buffers 进行消息格式化和解析,由于它们的二进制占用空间非常小,我更倾向于使用 AMQP 来传递这些消息。

        但请考虑您要使用的 AMQP 服务器。过去,我一直在为我的 AMQP 服务器使用 RabbitMQ。 RabbitMQ 根本没有任何流控制设施。因此,如果您的客户端发送消息的速度比您的服务器消耗它们的速度快,则服务器上的缓冲区可能会填满并炸毁服务器。较新版本的 RabbitMQ 以极其粗略的方式实现流控制:它们暂停系统中的所有消费者,直到内存被清除。

        我从未尝试过 zeromq;也许对于我一直在使用 RabbitMQ 的东西来说会更好......

        【讨论】:

          【解决方案4】:

          Linden Labs (Second Life) 的人对许多你应该阅读的消息系统进行了彻底的比较:

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

          值得一提的是,我在一个项目中使用 zeromq,这真的很有趣,因为根据用例,您不需要代理节点。

          【讨论】:

          • 它包含对 AMQP 的详细分析,但几乎没有关于 XMPP 的任何内容。
          猜你喜欢
          • 2011-02-25
          • 2011-03-17
          • 2012-12-28
          • 2017-12-09
          • 1970-01-01
          • 2010-12-10
          • 1970-01-01
          • 1970-01-01
          • 2020-08-09
          相关资源
          最近更新 更多