游戏的服务器端技术
我们正在创建一款大型多人社交游戏。我们预计并发用户数可达 100 万。该游戏不是实时的,而是回合制的。我们需要客户端和服务器之间可靠的消息传递,最好是通过 HTTP 协议。
除了多人游戏功能之外,我们还需要内容交付服务。
您能否为我们推荐一种服务器端技术,以便我们开始寻找合适的人才?
没有任何一台服务器能够承受如此多的负载,因此它必须水平扩展,这是正确的假设吗?
Windows Azure 能胜任这项工作吗?
提前致谢。
We’re creating a massively-multiplayer social game. We expect up to 1 million concurrent users. The game is not real-time, instead it’s turn-based. We need reliable messaging between our clients and the server, preferably over HTTP protocol.
Besides the multiplayer functionality, we’ll also need a content delivery service.
Could you please recommend a server-side technology for us, so we’ll start searching for the right people to hire?
Is it correct assumption that no single server will hold that amount of load so it must scale horizontally?
Will Windows Azure do the job?
Thanks in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
嗯...游戏、并发、服务器?
G-WAN(200 KB,包含完整的 ANSI C 脚本)。
这是迄今为止最好的候选人。随着时间的推移,它可以让您通过负载平衡实现横向增长(在游戏发布之日您不会拥有 100 万用户)。
我知道他们正在开发小程序(客户端),所以你可能会受益于问他们这个问题。
Hmmm... gaming, concurrency, server?
G-WAN (200 KB, full-ANSI C scripts included).
This is the best candidate -by far. And it lets you grow horizontally with load-balancing as time goes (you will not have 1 million users the day you ship the game).
I know they are workng on applets (client-side) so you might benefit asking them the question.
[quote]一百万并发用户无论如何都不是一个真实的数字[/quote]
有些游戏具有这种并发性,甚至更多。大多数流行的 Facebook 游戏都会这样做,尽管它们还有 15 天的阳光。话虽这么说,必须解决这个问题是一个很好的问题:-)
可能可以在 Azure 上编写这样的系统,但您可能会在未知的领域进行试点,并且您还必须向 Microsoft 付费托管。例如,与 Amazon ECC 的定价相比,也许另一种方法会更好。
需要考虑的其他技术,取决于您真正想要做什么:
- J2EE
- Erlang/OTP
- 蟒蛇/扭曲
另外,gamedev.net 上的网络和多人游戏常见问题解答:http:// www.gamedev.net/community/forums/showfaq.asp?forum_id=15
[quote]a million concurrent users IS NOT a real number by any means[/quote]
There are games that have this concurrency, and more. Most of the popular Facebook games do, while they have their 15 days in the sun. That being said, having to solve that problem is a nice problem to have :-)
It's probably possible to write such a system on Azure, but you'd probably be piloting in uncharted waters, and you'd also have to pay Microsoft for the hosting. Compare to Amazon ECC for pricing, for example, and perhaps another approach would be better.
Other technologies to consider, depending on what it is you're really trying to do:
- J2EE
- Erlang/OTP
- Python/Twisted
Also, the networking and multiplayer game FAQ on gamedev.net: http://www.gamedev.net/community/forums/showfaq.asp?forum_id=15
是的。这取决于服务器每人需要完成多少工作,但我认为 100 万个并发用户将需要不止一台服务器。
Windows Azure 将提供有偿计算机和存储。你必须提供软件并确保软件可以水平扩展。
Yes. It depends on how much work the server has to do per person, but I'd say 1 million concurrent users would require more than one server.
Windows Azure will provide the computers and the storage for a fee. You have to provide the software and make sure the software can scale horizontally.
不,那是不合理的假设。有些服务器有 1000 多个处理器(不在集群上)。此外,一百万并发用户无论如何都不是一个真实的数字——这在 Facebook 并发用户中所占的比例太大了。这完全取决于你在游戏中做了什么。基于 TUrn 的游戏可以是国际象棋,并且在具有 256GB 内存的高端服务器上托管 1.000.000 个并发棋盘不会有问题。
但实际上,您可能会水平扩展。首先,在一个游戏/世界中拥有 100 万人是没有意义的(即使《Eve Online》也按太阳系横向扩展),其次它可能比购买一台超级电脑便宜。
哈哈哈。严重地。水平缩放 - 是的。
看看价格,计算一个月的租金,与专用服务器进行比较,然后在去商店的路上笑。对于非常大的负载来说很好,对于基本负载来说很糟糕。
Comapre 中端服务器(8-12 核、64GB RAM)到 azure 实例,显然 ONE azure 实例无法与之相比。
No, that is nao avalid assumption. There are servers that are HUGH - 1000+ processors (not on a cluster). Also, a million concurrent users IS NOT a real number by any means - that would be way too much a slice of the concurrent facebook users. And it totally depends no what you do in your game. TUrn based could be chess, and I would not have a problem hostin 1.000.000 concurrent chess boards on a high end server with let's say 256gb memory.
Realistically, though, you possibly will scale horizontaly. First, it makes no sense to ahve a million people in one game / world (even eve online scales horizontally by solar system), second it is likely cheaper than buying a super big computer.
Hahaha. Seriously. Scaling horizontally - yes.
Look at the price, calcualte up an nistance for a month, compare to dedicated server and laugh on the way to the shop. Nice for very varsying load, bad for base load.
Comapre mid range server (8-12cores, 64gb RAM) to an azure instance and iti s clear ONE azure instance is not going to compare.