我公司现在在做款小游戏,现在同时在线人数只有几百人,运行起来没什么问题,但现在数据量增长很大,性能有点下降,急需优化框架,准备缓存用redis,但如何架构才能支持万人同时在线呢?现在是只有一台服务器,什么东西都在上面,登录、游戏都在一起。我要如何架构呢?游戏架构性能优化
解决方案 »
- 求一个正则表达式
- JFreeChart设置背景色时遇到的怪问题
- 数据库菜鸟问题:Object has been closed
- 关于背景色的设置 this.setBackground(Color.black); 这样似乎没效果
- 救命呀!!!Java中是否可以用索引?在线等哈
- javadoc如何生成说明文档的问题
- 请教:tomcat与ssl的问题?(windows2000系统)
- 十万火急在线等!
- 谁有JDK1.1.12的下载?
- 先懂了c++再学java,容易,先懂了java再学c++又怎样?
- Mina问题:为什么org.apache.mina.filter.codec.demux.MessageDecoder 不需要 dispose() 方法
- 新手求教,十分感谢
最简单的方案是,游戏分区。每个大区,同时在线人数在三千人左右,多余这个数的,拒绝访问。
以为,一台服务器,一般也就能抗得住三千人左右的同时在线,要是能上七千,那就已经算是奇迹了。
你玩玩其他网游,也都几乎差不多的样子,分线路、分大区。
牛B一点的,每个大区后面是一个集群;或者,多个大区之间用分布式数据库连接起来。每个大区一个集群的方案,关键是要负载均衡。如果是HTTP协议的,就好办多了,和网站的应该差不多。如果是TCP协议的,就不知道怎么搞了。数据库一般也要分开部署,底下盘阵要挂个牛B点的。
这个方案中的用户,在这个大区注册之后,只能在这个大区登录。多个大区分布式数据库的方案,是说用户可以登录这个线路下的任意大区进行游戏,用户信息会在各大区之间相互穿梭(通过分布式数据库),但是,在线人数等游戏信息,还是在本地服务器(所属的数据库)进行处理。这样,虽然能够肆意登录,但是,要组队、组团,必须是同时登录同一大区的人,才能进行。具体怎么弄,还是需要请教一下系统架构师,他们有具体的理论和经验。