最近一段时间工作内容不是很多但比较充实,每周周报都会写上本周的总结和遇到的问题及思考方向。因为新项目还在立项中,前期的工作还是主要把上一个项目中存在的问题梳理和解决,最近还是解决掉四五个关于因并发引起的时序问题,导致登陆失败及可能存在的数据不一致问题,和优化两处关于并发的问题,之前这里串行化,是没有必要的而且会增大延迟,因为很早前压力测试时发现上机器人登陆偶现失败和事务延迟很大问题,改完后本地上机器人时,都顺利通过。然后又对底层框架实现和登陆后台实现及场景间的跳转,有了更加深入的理解。
上周花了五个工作日写了1500多行代码并测试该测试的点,跟跨服有关的,因为分区分服,所以有些实现需要考虑的东西比较多,比如数据的同步,存储,更新和淘汰,合服及一致性等,因为虽然是一个活动,但要考虑的方面较多。如果设计过于复杂的数据结构和冗余数据到数据库中,那可能会麻烦,然后进程启动时因早期跟db相关的操作中可能会存在同步,如果数据过多会启动延迟增大,而不是设计良好的如冷热数据的加载。可能对于同一个需求文档,实现出来的可能都不一样。
因为从事游戏开发多年,其实业务需求基本不是很复杂,但是如何在满足正确性和稳定性的基础上,在性能和可维护性等各方面再考虑的多。在接到一个需求时,过一篇文档,把有问题的地方理出来,可以在白纸上画一画该如何设计数据结构,而不是一上来就写,虽然功能写的对,但是明明可以用很少的代码实现。上面那个跨服相关的需求,当时拿到文档,一共四页,发现有些小需求是现有的代码,直接调用下接口,但涉及到数据的同步和存储有些麻烦,一开始设计了四个数据结构,且数据要存到db中,各有各的用处。后来发现其实只要弄成两个即可,由其中两个预处理另外两个,所以一下子简化了一些。而且随着数据的越来越多,肯定要考虑冗余的工作,因为没必要弄这么多数据,影响加载和存储带来的消耗,在满足需求的基础上优化掉一些。
个人认为,能经历过顺利上线的项目和处理线上的问题,对成长还是挺大的,项目是18年11月上的线,然后在19年2月接手线上所有问题的处理,有四个版本负责一直到现在,遇到各种大大小小的问题,压力测试时可能没测试充分,包括上线前,感觉以后再遇到啥问题应该都知道怎么解决和定性为什么问题。
后面这一段时间是想多学些(复习)关于linux一些命令的使用,偶尔用用可能会忘,网上看下再实践下效果可能会更好。然后再学些关于mongodb的一些设计。再看下底层代码,和技能,移动和同步相关的实现,以及持续性的性能优化。还有几个月就要满入职三年了,怎么说呢,做游戏,其实还是热情,和对技术的追求,非常想把一个项目做好,但是否能顺利上线,和有不错的流水,还是要看运气和团队及被认可程度,涉及因素太多,还是加油吧,不管在哪里。
网友评论