一种自平衡解决数据倾斜的分表方法
💡
原文中文,约4400字,阅读约需11分钟。
📝
内容提要
本文介绍了B端令牌系统应用数据分表解决业务数据量增大和数据倾斜问题。作者调研了垂直分表和水平分表两种方式,并选择了水平分表作为解决方案。作者详细介绍了水平分表的路由算法和一致性hash环的优点。在此基础上,作者提出了自己的方案,包括使用令牌ID作为分表字段、引入分表水位概念、定期数据归档等。作者还提到了方案的不足之处,包括水位阈值和扩容监控的问题。最后,作者强调解决问题需要根据具体业务和场景选择适合的技术手段和工具。
🎯
关键要点
- B端令牌系统用于营销场景,存在数据量增大和数据倾斜问题。
- 早期使用jed分库,数据行数达到1.2亿,导致数据库读写性能下降。
- 面对数据增长,当前设计架构无法满足需求,需要解决单表数据行数过多和数据倾斜问题。
- 分表方案调研中,选择水平分表而非垂直分表,因数据结构简单且行数多。
- 水平分表使用路由算法,推荐一致性hash和一致性hash环以解决数据分布问题。
- 一致性hash环通过虚拟节点减少rehash过程,降低数据迁移成本。
- 方案中使用令牌ID作为分表字段,引入分表水位概念和定期数据归档。
- 水位阈值和扩容监控存在不足,需人工设置,建议引入智能阈值监控。
- 解决问题需根据具体业务和场景选择适合的技术手段和工具。
➡️