用于实时在线游戏的amqp或xmpp

用于实时在线游戏的amqp或xmpp,xmpp,rabbitmq,openfire,ejabberd,Xmpp,Rabbitmq,Openfire,Ejabberd,以下哪项技术套件适用于多用户在线游戏项目。。 项目要求: 1.能够在任何给定时间处理2k-5k用户。 2.用于iphone和android的客户端库(本机,无javascript)。 3.适用于Microsoft Windows(最重要)的客户端库,也适用于mac os x和linux。 4.良好的文档,特别是用于mod开发的文档 5.项目不是开源的。因此,只能使用具有适当许可证的库 我也可以用erlang和java编程,编程语言不是问题 我正在研究以下服务器技术,如Openfire、Tigas

以下哪项技术套件适用于多用户在线游戏项目。。 项目要求: 1.能够在任何给定时间处理2k-5k用户。 2.用于iphone和android的客户端库(本机,无javascript)。 3.适用于Microsoft Windows(最重要)的客户端库,也适用于mac os x和linux。 4.良好的文档,特别是用于mod开发的文档 5.项目不是开源的。因此,只能使用具有适当许可证的库

我也可以用erlang和java编程,编程语言不是问题

我正在研究以下服务器技术,如Openfire、Tigase、ejabberd和RabbitMQ。 所有这些都对我的项目有好处,但我想知道更多关于我需要什么套件,AMQP或XMPP

AMQP专门为实时在线游戏提供什么。它比xmpp更好吗?

林登实验室(Second Life)的人员对许多消息传递系统进行了彻底的比较,您应该阅读:


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

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

请考虑使用AMQP服务器。过去,我在AMQP服务器上使用RabbitMQ时被咬了一口。RabbitMQ根本没有任何流控制设施。因此,如果您的客户机发送消息的速度快于服务器使用它们的速度,那么服务器上的缓冲区可能会填满并使服务器崩溃。RabbitMQ的最新版本以极其粗糙的方式实现流控制:它们停止系统中的所有使用者,直到内存清空


我从未尝试过zeromq;也许这对我一直使用RabbitMQ的东西更好…

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

我已经在我相对低功耗的笔记本电脑上运行了Active/MQ,每秒可以轻松处理300个请求,所以我很乐意在这里推荐它。您还可以设置代理集群并实现横向可伸缩性。您可以使用http协议(STOMP)或其本机二进制协议。许多客户端API库也适用于C/C++、Java、JavaScript和其他。有一些首字母

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

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


'希望这有帮助。

XMPP可以用于文本游戏

它包含对AMQP的详细分析,但几乎没有任何关于XMPP的内容。