💡
原文中文,约2400字,阅读约需6分钟。
📝
内容提要
在阅读《数据密集型应用系统设计》时,回忆起在蚂蚁工作时遇到的两个故障:第一个因RPC反序列化错误导致支付失败,因新枚举未识别;第二个因数据库bug导致支付请求失败,因代码强依赖数据库时间。通过改进代码和理解数据库机制,成功解决了这些问题。
🎯
关键要点
- 在阅读《数据密集型应用系统设计》时,回忆起在蚂蚁工作时遇到的两个故障。
- 故障1:因RPC反序列化错误导致支付失败,因新枚举未识别。
- 故障1的原因是应用B新增枚举,导致应用A反序列化失败。
- 解决方案包括:1)遇到未知枚举值时fallback到UNKNOWN;2)避免使用枚举,通过字符串交互。
- 故障2:因数据库bug导致支付请求失败,因代码强依赖数据库时间。
- 故障2的根因是get_or_create_user服务在准备时请求数据库获取当前时间。
- 通过修改代码为懒加载模式解决了故障。
- 书中介绍了分布式数据库的三类:Single leader、Multi leader和Leaderless。
- OceanBase采用基于Paxos协议的多副本同步机制,确保数据一致性。
➡️