zoukankan      html  css  js  c++  java
  • 看到一个伙计遇到的服务端编程遇到的问题 赶紧复制过来

    游戏类型: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

  • 相关阅读:
    CF 142B Tprimes
    CF 231A Team
    poj 2001 Shortest Prefixes ——字典树入门
    hdu 1039 Easier Done Than Said?
    poj 2528 Mayor's posters
    hdu 1061 Rightmost Digit
    poj 2503 Babelfish
    CF271 A. Beautiful Year
    poj 2752
    CF271 B. Prime Matrix
  • 原文地址:https://www.cnblogs.com/cfas/p/5823460.html
Copyright © 2011-2022 走看看