码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 修改系统时间导致mysql数据写入失败


    描述:新创建一个玩家账号时,GM给金币或者完成每日任务。调系统时间使得服务器超时,重新登录后发现玩家数据未被正常记录。
    排查
    (1)反序列化部分,重新登陆后反序列化数据就不正确。
    (2)序列化部分,序列化内存数据正确
    (3)查看mysql数据日志,写入失败
    分析
    (1)mysql写入步骤:mysql写入分俩个步骤,save和update. 数据对象被创建时,使用save; 之后数据变化将脏数据写入时,使用update. 同时还有个version参数,用来验证版本是否可写入,写入则自加操作。
    (2)查看失败原因:可视化mysql数据,版本号与最终写入的不一致。日志表现上,存在数据对象的mysql update语句在save之前操作,导致数据库中还没有这个对象,则写入失败,后续的逻辑中,版本号增加后与数据库中的版本不一致,后续一致无法正常写入,则玩家数据异常。
    定位问题原因:由于数据库中没有将对象创建出来,而出现了update操作。
    难点
    如果先创建对象,可能是个空的数据对象,后续如果业务逻辑中某些数据列初始化后没被写进去可能出现反序列化问题。设计希望能在数据库中创建一个完整的对象而仅仅一个对象。如果将这一步挪到各个业务模块中,将会出现大量同样功能的函数写俩遍。
    方案
    其实我们需要的是知道状态,是否需要立即update的状态。
    (1)加参数。告知相关的func
    (2)依赖各自模块的func 进行update数据,需要自行保证不会出现在数据库中没有对象的情况下update
    (3)区分对象创建和反序列化俩种状态,依据该状态决定是否需要立即update.
    方案(1)(2)将难点交给了业务层,强迫思考这个点,但是工作量大.
    选择方案(3)
    总结:本质问题是对象创建与初始化需要分步骤进行,但由于各业务层繁多,很难完全实现,导致数据库中对象的创建与更新时序错乱而使得数据失效。

  • 相关阅读:
    VK1088B 22*4点 LCD液晶显示屏驱动IC,4*4MM超小体积,具省电模式,多用于超小型LCD段码屏显示驱动,FAE技术支持
    codeforces 726 E2
    三步学会使用WebSocekt
    zabbix6.4告警配置(短信告警和邮件告警),脚本触发
    CNN卷积神经网络
    网络安全“三保一评”深度解析
    芋道商城,基于 Vue + Uniapp 实现,支持分销、拼团、砍价、秒杀、优惠券、积分、会员等级、小程序直播、页面 DIY 等功能
    【自动化测试】基于Selenium + Python的web自动化框架
    实战 | 如何用 Python 自动化监控文件夹完成服务部署!
    .NET C#基础(6):命名空间 - 有名字的作用域
  • 原文地址:https://blog.csdn.net/qq_34732050/article/details/127433602
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号