**已关闭。**此问题不符合Stack Overflow guidelines。当前不接受答案。
我们不允许问题寻求书籍、工具、软件库等的建议。您可以编辑问题,以便使用事实和引文来回答。
上个月关门了。
机构群体已于上月审核了是否重新讨论此问题,并将其关闭:
原始关闭原因未解决
Improve this question
以下哪些技术套件适用于多用户在线游戏项目?
项目要求:
1.能够在任何给定时间处理2k-5 k用户。
- iPhone和android的客户端库(本机,没有javascript)。
1.适用于Microsoft Windows(最重要)的客户端库,也适用于Mac OS x和Linux。
1.特别适合mod开发的好文档
1.项目不是开源的。因此,只能使用具有适当许可证的库。
我可以用erlang和java编程,编程语言不是问题。
我正在寻找以下服务器技术,如Openfire,Tigase,ejabberd和RabbitMQ。所有这些都对我的项目很好,但我想知道更多关于什么适合我的需要,AMQP或XMPP。
什么AMQP提供特别为实时在线游戏。它是更好的选择然后xmpp?
2条答案
按热度按时间kuarbcqp1#
XMPP和AMQP之间的一个关键区别是二进制内容。AMQP可以很好地处理二进制数据,而XMPP似乎更适合XML。就我个人而言,对于在线游戏,我使用Google Protocol Buffers进行消息格式化和解析,由于它们的二进制占用空间非常小,我更倾向于使用AMQP来传递这些消息。
但是一定要考虑一下你想使用什么AMQP服务器。我在过去的AMQP服务器上使用RabbitMQ的时候,我被它咬了一口。RabbitMQ根本没有任何流量控制功能。所以,如果你的客户端发送消息的速度超过了你的服务器可以使用它们的速度,那么服务器上的缓冲区可能会被填满,并使服务器崩溃。RabbitMQ的最新版本以一种非常粗糙的方式实现了流量控制:它们会暂停系统中的“所有”消费者,直到内存被清空。
我从来没有试过zeromq;也许它对我一直在使用RabbitMQ的事情更好...
htzpubme2#
5000个用户并没有告诉我他们的行为,但如果他们都在同一个10秒的窗口内提交了一个请求,那么假设你会在每秒500-1000个请求中寻找。
我已经在我的相对低功率的笔记本电脑上运行了Active/MQ,每秒可以轻松处理300个请求,所以我很高兴在这里推荐它。你也可以设置代理集群,实现水平可伸缩性。你可以使用http协议(STOMP)或其本地二进制协议。许多客户端API库也适用于C/C++、Java、JavaScript和其他。有一些初始的AMQP support。
您没有提到任何持久性要求,但我还是认为大多数RDBMS就足够了。也就是说,从横向扩展的Angular 来看,一些面向文档和大表类型的数据库看起来很有趣。
我还发现Apache Camel的性能非常高,我强烈推荐它。Camel用于实现逻辑层。