游戏服务端优化

完成《王途霸业》后,慢慢地开始整理客户端,服务端的架构思路和优化思路。虽然1年来项目工作非常累,但我还是不想放弃这个整理资料,梳理知识的绝佳机会。废话不多说,直接开始游戏服务端优化思路。

1.整体架构决定承载量。想要完全突破游戏用户承载量,你必须尽快即使调整自己服务器的架构,这个非常不容易,特别是在项目开发后期,在过多的代码积累的情况下,你很难对当前的架构进行调整。基本上,当时的情况都是,不动则已,一动一发不可收拾。架构调整主要是为了分担服务器的 游戏逻辑处理,数据存储,第三方接口处理。

2.用户集中短时间使用的优化。比如帐号登录,帐号修改,角色获取,角色选择,角色创建等,在一个相对比较短的时间里完成的东西,又有可能会借助第三放接口的,需要进行统一管理和拆分,在用户量扩大时可以使用扩充服务器来对承载量扩充。一句话来表明:对于这种时间较短,用户会集中冲击承载量的,把它做成能扩充服务器就可以达到效果的架构,这种架构只要花钱就能解决。但凡能走上只要花钱就能解决承载量的架构,一定没有问题。

3.大量用户集中使用同一功能的优化。《王途霸业》的挂机系统就遇到这样的情况,大部分玩家都会使用这个功能,而且这是机器与机器的交互,大部分玩家都会在长时间里使用这个功能。当大量用户时,这个挂机战斗功能,对数据存储服务器的SQL语句执行冲击很大,类似的情况还有很多。像这样的功能呢,就需要我们进一步优化,不但是优化逻辑处理,还要优化数据存储方式,不可以加大了逻辑服务器的承载,却忽视了数据服务器的承载。优化方法很多,比如当前功能不存储数据,只在玩家下线时操作数据存储更新,还有数据差异化存储,当数据有变化才进行储存更新,去除了很多不必要的存储SQL执行时间。

4.HTTP与TCP结合的优化。《王途霸业》一开始尝试过只使用TCP长连接的架构方式,但最终以不方便,不好用的试用结果落败。TCP与WEB的HTTP结合的方式优化架构是个非常好的方式。首先WEB的HTTP本身就是个大众化稳定的架构体系,它在帐号管理,数据记录,需求变化的适应力等方面都有非常好的表现。其实就是人们口中所有的短连接和长连接的结合。《王途霸业》使用HTTP方式做了帐号认证系统是为了所有服务器的帐号获取方式,又用HTTP方式做了服务器列表,全服公告,网关轮询等做为中心服务器,这个中心服务器还配备了后台管理界面,让运营人员非常舒服,最后还用HTTP方式为《王途霸业》的数据统计做了一个统计管理的WEB后台管理,让市场人员能清晰得看到整个游戏数据的起伏变化情况。

5.循环驱动更改为事件驱动。很多时候我们服务器里会有一些需要用逻辑帧循环来做的事情,《王途霸业》中就有很多,比如建筑时间完成判断,常胜峰战斗奖励判断,玩家当前资源量计算,盘丝洞挂机计算,这些程序逻辑倘若都用服务器的主逻辑帧来做,那将是个非常损耗CPU的事情,并且它还会影响到DB存储服务器的效率。这时候我们就要好好利用事件驱动,在玩家下线时,上线时,玩家获取信息时,更或者在玩家退出某个场景时,进行操作。这样不仅省去了主逻辑帧的循环CPU损耗,更让DB服务器有了更多的力量去处理更重要的事,大大提高了整个游戏服务器的承载量。

PS:一点点小分享,大神切莫嘲笑。