🎮 数据一致性·实战
30章
🧑🎓 风格 · 清新易懂
01
数据一致性的重要性
为什么游戏服务器需要数据一致性、常见不一致场景、CAP理论在游戏中的应用
⚡ 并发扣款 · 排行榜
02
事务的ACID特性
原子性、一致性、隔离性、持久性 · MySQL事务隔离级别与游戏选型
🔒 读已提交 · 串行化
03
乐观锁与悲观锁
版本号/CAS · 行锁/表锁 · 背包、拍卖行场景选型对比
🔧 并发控制
04
Redis事务与Lua脚本
MULTI/EXEC · Lua原子性 · 玩家金币增减原子操作
📜 原子脚本
05
分布式锁
Redis SETNX · ZooKeeper临时顺序节点 · 世界BOSS跨服活动
🔐 跨服互斥
06
消息队列与最终一致性
RabbitMQ/Kafka异步解耦 · 本地消息表 · 邮件发送/跨服同步
📨 异步可靠
07
数据库主从复制与读写分离
MySQL主从原理 · 主从延迟问题 · 排行榜/日志查询实践
🗄️ 读写分离
08
分库分表策略
水平分表(玩家ID哈希) · 垂直分库 · 跨库查询与一致性挑战
🧩 数据分片
09
TCC分布式事务
Try-Confirm-Cancel · 跨服转盘/交易 · 空回滚与悬挂
🔄 补偿事务
10
Saga分布式事务
编排/协同模式 · 玩家转服长事务 · 补偿设计
⏳ 长事务
11
本地事务与全局事务
Spring @Transactional · JTA/XA全局事务适用性
📦 事务边界
12
数据版本控制
版本号解决并发冲突 · 增量/全量更新 · 玩家属性版本管理
📌 版本戳
13
缓存与数据库一致性
Cache-Aside · 延迟双删 · 玩家信息/道具缓存实践
⚡ 缓存一致
14
最终一致性方案
事件驱动 · 本地事件表+定时补偿 · 玩家改名/公会改名
🕊️ 异步最终
15
幂等性设计
接口幂等 · 唯一请求ID去重 · 支付回调/任务奖励领取
🔁 防重复
16
数据校验与修复
定期对账 · 自动修复脚本 · 背包数据丢失应急处理
🛠️ 校验修复
17
并发控制模型
单线程(Redis) · 多线程(NIO) · Actor模型(Akka) 游戏应用
🧵 并发模型
18
无锁数据结构
AtomicInteger · Disruptor无锁队列 · 排行榜/战斗统计
⚙️ 无锁并发
19
数据备份与恢复
全量/增量备份 · 冷备热备 · 误删玩家数据恢复流程
💾 备份恢复
20
数据迁移与扩容
在线迁移 · 不停服扩容 · 玩家数据旧服→新服
📤 平滑迁移
21
游戏存档与回档
手动存档 · 自动存档 · 回档数据一致性保障
⏮️ 存档回档
22
跨服数据同步
跨服战场/公会战 · 消息队列最终一致性
🌐 跨服同步
23
实时数据一致性
帧同步 vs 状态同步 · MOBA/FPS选型
🎮 实时同步
24
数据一致性测试
JMeter/Locust · 一致性断言 · 自动化测试用例
🧪 测试验证
25
监控与告警
主从延迟/事务失败率 · Prometheus+Grafana · 告警规则
📊 监控告警
26
案例分析
MMO背包不一致 · SLG跨服战数据丢失 · 事故复盘
🔍 真实复盘
27
数据一致性设计原则
KISS · 防御性编程 · 冗余校验 · 灰度发布与回滚
📐 设计原则
28
未来趋势
NewSQL(TiDB) · Serverless挑战 · AI辅助一致性检测
🚀 前沿趋势
29
综合实战一:金币系统
高并发、数据强一致 · 含代码示例
💰 强一致
30
综合实战二:跨服拍卖行
最终一致性 · 架构图+代码示例
🏷️ 跨服拍卖