mina万人同时在线问题
我公司现在在做款小游戏,现在同时在线人数只有几百人,运行起来没什么问题,但现在数据量增长很大,性能有点下降,急需优化框架,准备缓存用redis,但如何架构才能支持万人同时在线呢?现在是只有一台服务器,什么东西都在上面,登录、游戏都在一起。我要如何架构呢?
------解决方案--------------------有点扯淡,你让你们公司的领导醒醒吧,万人使用一台服务器,这纯粹是幻想。
即使做到了,付出的成本,也要比多买几台服务器凑个集群,要大许多倍。
技术这东西,不是你有多大胆,就能多高产的。
计算机是一门实践科学,和实际紧密联系在一起的,架构设计也是由充分的理论和实践作为依据和基础的。
------解决方案--------------------最好部署服务器集群。从根本上解决问题。
------解决方案--------------------我没有这方面的经验。倒是可以和楼主讨论讨论。
最简单的方案是,游戏分区。每个大区,同时在线人数在三千人左右,多余这个数的,拒绝访问。
以为,一台服务器,一般也就能抗得住三千人左右的同时在线,要是能上七千,那就已经算是奇迹了。
你玩玩其他网游,也都几乎差不多的样子,分线路、分大区。
牛B一点的,每个大区后面是一个集群;或者,多个大区之间用分布式数据库连接起来。
每个大区一个集群的方案,关键是要负载均衡。如果是HTTP协议的,就好办多了,和网站的应该差不多。如果是TCP协议的,就不知道怎么搞了。数据库一般也要分开部署,底下盘阵要挂个牛B点的。
这个方案中的用户,在这个大区注册之后,只能在这个大区登录。
多个大区分布式数据库的方案,是说用户可以登录这个线路下的任意大区进行游戏,用户信息会在各大区之间相互穿梭(通过分布式数据库),但是,在线人数等游戏信息,还是在本地服务器(所属的数据库)进行处理。这样,虽然能够肆意登录,但是,要组队、组团,必须是同时登录同一大区的人,才能进行。
具体怎么弄,还是需要请教一下系统架构师,他们有具体的理论和经验。
------解决方案--------------------
集群的话我很想知道怎么去处理负载那些东西,你们打算软还是硬解决?硬件负载我们出现了严重丢包的情况。最简单的买贵点的小型机把。
------解决方案--------------------问了一个在腾讯做游戏的同学,他们的一台server一般处理3-4000同时在线的人,这个可能要看具体业务需求,一台机器上支持1万个人同时在线理论上应该不是什么问题(逻辑没问题的话,就考虑内存CPU的消耗了)。7楼说的东西基本都比较有道理吧
------解决方案--------------------登录验证,逻辑处理,数据存储等等服务器都分开,而且这些服务器可能都需要做集群,万人在线一台机器搞定,擦...绝对不可能
------解决方案--------------------感觉应该根据具体情况分析。硬性集群不是什么好想法。
服务器的瓶颈在哪,是不是可以进行优化。是代码问题还是硬件问题。
不过一台服务器听起来确实有点寒碜。
------解决方案--------------------我看,还是先找目前的性能瓶颈吧,几百人在线,性能有点下降,要看慢在何处啊。
排除逻辑问题,再谈万人在线不迟。