看到一个伙计遇到的服务端编程遇到的问题 赶紧复制过来
游戏类型: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
转载于:https://www.cnblogs.com/cfas/p/5823460.html
看到一个伙计遇到的服务端编程遇到的问题 赶紧复制过来相关推荐
- 急速rust服务器管理_Rust 与服务端编程的碎碎念
Rust 是 Mozilla 推出的一门系统编程语言,非常看重内存安全,是一门非常优秀的语言.Mozilla 用它构建了其下一代的浏览器内核 servo,其工程能力毋庸置疑. 那么,Rust在服务端编 ...
- 新书预告:《Linux 多线程服务端编程——使用 muduo C++ 网络库》
看完了 W. Richard Stevens 的传世经典<UNIX 网络编程>, 能照着例子用 Sockets API 编写 echo 服务, 却仍然对稍微复杂一点的网络编程任务感到无从下 ...
- Qt中TCP服务端编程
文章目录 1 Qt中的TCP服务端编程 1.1 TCP服务端编程介绍 1.2 Qt中的TCP服务端编程 1 Qt中的TCP服务端编程 1.1 TCP服务端编程介绍 网络中的服务端: 服务端是为客户端服 ...
- 《Linux多线程服务端编程:使用muduo C++网络库》书摘6.6.2节
6.6.2 常见的并发网络服务程序设计方案 W. Richard Stevens 的<UNIX 网络编程(第2 版)>第27 章"Client-ServerDesign Alte ...
- Rust 与服务端编程的碎碎念
Rust 与服务端编程的碎碎念 https://zhuanlan.zhihu.com/p/30028047 Rust 是 Mozilla 推出的一门系统编程语言,非常看重内存安全,是一门非常优秀的语言 ...
- Linux多线程服务端编程学习(四)finger服务的实现
源码下载以及安装点击链接https://blog.csdn.net/YoungSusie/article/details/90021742 分类 Muduo网络库编程 学习笔记 例 七步实现finge ...
- PostgreSQL 30天 培训视频(SQL基础,备份恢复,HA,服务端编程,大数据,内核,应用案例)
Postgres2015全国用户大会将于11月20至21日在北京丽亭华苑酒店召开.本次大会嘉宾阵容强大,国内顶级PostgreSQL数据库专家将悉数到场,并特邀欧洲.俄罗斯.日本.美国等国家和地区的数 ...
- 《Linux多线程服务端编程:使用muduoC++网络库》学习笔记
文章目录 第1章 线程安全的对象生命期管理 1.1 当析构函数遇到多线程 1.1.1 线程安全的定义 1.1.3 线程安全实例 1.2 对象的创建很简单 1.3 销毁很难 1.4 线程安全的Obser ...
- postgresql最全整理资料,PostgreSQL 30天 培训视频(SQL基础,备份恢复,HA,服务端编程,大数据,内核,应用案例)
转载自:http://blog.163.com/digoal@126/blog/static/16387704020141229159715/ 希望通过这些视频帮到一些朋友, 同时对视频中的错误点烦请 ...
最新文章
- nagios部署安装中篇
- android 保存数据到setting中_文章如何保存在数据库中
- Copy修饰的NSArray
- JavaScript入门(part1)--初识JavaScript
- MPAndroidChart LineChart 折线图 你要的都在这里了
- 如何添加数据到session中
- [Javascript_库编写]创建自己的“JavaScript库”
- 【C#2.0】发挥匿名委托的威力!
- 18.外部相机校准——旋转(Rotation),R是什么样子的,绕Z轴旋转的例子,齐次坐标旋转_2
- 【Excel从头开始】-3 从网页导出数据到Excel
- 微信小程序自定义拍照和H5调用摄像头拍照
- imdisk虚拟光驱安装linux,imdisk使用教程_Imdisk工具使用方法介绍_imdisk_imdisk虚拟光驱...
- RGB格式图片转YUV图片
- [软件发布]2007考研倒计时软件(完整版+绿色版)
- docker 常用命令
- Python多线程爬虫获取电影下载链接
- SparkSteaming整合Kafka的方式
- 浅浅讲解下Linux内存管理之CMA
- 2022-2028全球2-氨基-5-甲基吡啶行业调研及趋势分析报告
- tomcat和servlet的关系及区别
热门文章
- PingPing隐私政策
- 华为防火墙配置目的nat
- 宏替换、条件编译、头文件展开
- 2021年R2移动式压力容器充装考试总结及R2移动式压力容器充装模拟考试
- [Minecraft]基于Forge的1.8.9MOD开发教程——第一讲:搭建开发环境
- 成功解决FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\niu\\AppData\\Local\\Temp\\p
- HP ELITEDESK 880 G2 HACKINTOSH
- Linux下视频服务器的实现(流媒体Helix Server)
- IFS发布新版本9 让敏捷性成为企业的标配
- lisp实战文库_autolisp教程pdf