
1) 【一句话结论】针对百万级用户游戏数据存储,采用“MySQL分库分表+读写分离”保障核心业务一致性,“Redis Cluster+读写分离”提升高频读写性能,“腾讯云COS”处理非结构化数据,全程数据加密(TLS、AES、加盐哈希),满足高并发与安全需求。
2) 【原理/概念讲解】老师会解释:
3) 【对比与适用场景】
| 类别 | 关系型数据库(MySQL) | NoSQL(Redis/对象存储) |
|---|---|---|
| 定义 | 基于关系模型,结构化数据,强一致性(ACID) | Redis(缓存型):内存数据库,读写快;COS(对象存储):大文件存储 |
| 扩展性 | 分库分表+读写分离实现水平扩展 | Redis Cluster水平扩展,COS按需扩容 |
| 一致性 | ACID事务,强一致性(事务保障) | Redis最终一致性(缓存更新延迟);COS无一致性要求 |
| 使用场景 | 核心业务(账号、等级、装备交易),需严格一致性 | 高频读/写(装备状态缓存);非结构化数据(装备图片) |
| 注意点 | 分库分表需考虑数据分布均匀性,事务开销大 | Redis缓存需双写一致性,COS需考虑文件访问延迟 |
4) 【示例】
用户A(ID=1001)交易装备“神剑”给用户B(ID=1002):
START TRANSACTION;
-- 检查装备版本号(乐观锁)
SELECT version FROM equipment WHERE id=1 AND user_id=1001 AND version=1 FOR UPDATE;
-- 更新装备归属
UPDATE equipment SET owner_id=1002, version=version+1 WHERE id=1 AND user_id=1001;
-- 更新金币
UPDATE user_account SET gold = gold - 100 WHERE user_id=1001;
UPDATE user_account SET gold = gold + 100 WHERE user_id=1002;
COMMIT;
user_equip_cache:{1001}(装备列表)和user_achievements:{1001}(成就),延迟处理(超时5秒重试),若失败则回滚数据库事务(ROLLBACK)。5) 【面试口播版答案】
面试官您好,我设计的用户数据存储方案是混合架构。核心业务(账号、等级、装备交易)用MySQL,通过分库分表(按用户ID哈希分库,装备表按类型分片)和读写分离(主从复制)保障百万级并发下的数据一致性;高频读/写(装备状态、成就)用Redis Cluster缓存,减少数据库压力;装备图片等非结构化数据存到腾讯云COS。安全方面,密码用bcrypt哈希+随机盐值,传输用TLS 1.3加密,数据库字段用AES-256加密。装备交易时,通过MySQL事务+乐观锁(版本号检查),若版本号匹配则更新,否则回滚,确保原子性,避免并发冲突。
6) 【追问清单】
7) 【常见坑/雷区】