3

游戏服务端优化

 3 years ago
source link: http://www.luzexi.com/2013/10/22/%E6%B8%B8%E6%88%8F%E6%9C%8D%E5%8A%A1%E7%AB%AF%E4%BC%98%E5%8C%96
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

游戏服务端优化

完成《王途霸业》后,慢慢地开始整理客户端,服务端的架构思路和优化思路。虽然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:一点点小分享,大神切莫嘲笑。

October 22, 2013 · 游戏服务端, 游戏架构, 后端技术

感谢您的耐心阅读

Thanks for your reading

版权申明

本文为博主原创文章,未经允许不得转载:

游戏服务端优化

Copyright attention

Please don't reprint without authorize.

qrcode_for_gzh.jpg

微信公众号,文章同步推送,致力于分享一个资深程序员在北上广深拼搏中对世界的理解

QQ交流群: 777859752 (高级程序书友会)


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK