看到一个伙计遇到的服务端编程遇到的问题 赶紧复制过来
游戏类型:ARPG横板格斗过关手机网游,类似王者之剑,DNF。
客户端unity,碰撞判定在客户端,AI和伤害运算在服务端。峰值单服在线2800。
netty,protobuf,mysql。
- 指令设计不合理,粘包时出现异常
原始设计过于简单,没有指令队列和分类的概念。当粘包指令同时执行时,发生串行指令被并行执行的情况。
解决:增加每个角色的指令队列,指令按照队列执行。增加指令的分类:比如序列指令,覆盖指令(后一个可覆盖前一个,比如位置同步指令),用户同步序列指令(比如登录选择角色相关的指令)。
- 变速齿轮和内存修改工具导致的指令异常。
可以通过指令队列和指令的有效性检查来解决一部分修改问题,但是由于碰撞判定是客户端的物理引擎,这个坑没有彻底解决。
- 开新服的时候,流量脉冲耗尽数据库连接。
登录模块可以考虑通过增加排队机制来解决。
- 登录踢人或者断线后登录出现cache-DB不同步
离线处理没有同步处理好,完善logout和login的处理逻辑。
- 拍卖功能出现卖两次,服务器重启之后,第二个购买的装备丢失。
在统计数据中观察到了该异常,但是没有及时重视和解决,累计后坏影响累计越来越多。上线前最好能准备关键数据的一致性检查工具,也许会好些。
- 多语言文件最好能对客户端进行更新
- protobuf
手游为了节省带宽,所以很多指令中,都是只发部分字段的变化值。当要发0的时候,用-1来替代。在指令和协议设计的时候,预先考虑进来会比较好。
- 对象设计粗糙
随着策划的需求膨胀,对象膨胀之后没有进行有效的重构和重新设计,导致后期影响开发效率。
- boneCP死锁
原因不明,并发200个左右数据库连接的时候随机出现,最后没有研究,通过更换连接池解决。
原文
http://www.cnblogs.com/fumingX/p/3567167.html
Rust编程语言群 1036955113
java新手自学群 626070845
java/springboot/hadoop/JVM 群 4915800
Hadoop/mongodb(搭建/开发/运维)Q群481975850
GOLang Q1群:6848027
GOLang Q2群:450509103
GOLang Q3群:436173132
GOLang Q4群:141984758
GOLang Q5群:215535604
C/C++/QT群 1414577
单片机嵌入式/电子电路入门群群 306312845
MUD/LIB/交流群 391486684
Electron/koa/Nodejs/express 214737701
大前端群vue/js/ts 165150391
操作系统研发群:15375777
汇编/辅助/破解新手群:755783453
大数据 elasticsearch 群 481975850
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
java新手自学群 626070845
java/springboot/hadoop/JVM 群 4915800
Hadoop/mongodb(搭建/开发/运维)Q群481975850
GOLang Q1群:6848027
GOLang Q2群:450509103
GOLang Q3群:436173132
GOLang Q4群:141984758
GOLang Q5群:215535604
C/C++/QT群 1414577
单片机嵌入式/电子电路入门群群 306312845
MUD/LIB/交流群 391486684
Electron/koa/Nodejs/express 214737701
大前端群vue/js/ts 165150391
操作系统研发群:15375777
汇编/辅助/破解新手群:755783453
大数据 elasticsearch 群 481975850
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。