本文来自于csdn,文章详细介绍唯品会订单库重构——采用分库分表策略对原订单库表进行拆分的总结。随着唯品会业务的快速发展,订单量的不断增长,原有的订单存储架构已经不能满足公司的发展了,特别是在大促高峰期,原订单库已经成为抢购瓶颈,已经严重制约公司的发展。 唯品会旧订单库包含几十张订单相关表,旧订单库是典型的一主多从架构;主库容量已接近服务器物理空间上限,同时也已经达到 MySQL的处理上限,很快将无法再处理新增订单。 【唯品会架构重构的关键知识点】 1. **背景与挑战**: - 随着唯品会业务的迅速扩张,订单量激增,原有的单体数据库架构难以应对高并发和大数据量的需求。 - 在大促期间,订单库成为性能瓶颈,限制了公司的成长潜力。 - 旧订单库采用一主多从架构,主库接近存储空间和处理能力的上限。 2. **问题分析**: - **超大容量问题**:表数据量过大,达到几十亿条,单库空间接近饱和。 - **性能问题**:单服务器处理能力有限,TPS(每秒事务处理量)有上限,影响大促期间的订单处理速度。 - **扩展性问题**:主库无法灵活升级扩展,存在单点故障风险。 3. **解决思路**: - **容量问题解决方案**:增加硬盘容量或采用SSD硬盘,但无法解决单表数据量问题。数据归档虽能缓解空间,但频繁操作且不解决性能问题。 - **性能问题解决方案**:提升服务器配置,但无法解决单点故障和连接数、IO限制。 4. **数据库拆分策略**: - **垂直拆分**:根据数据表的相关性拆分为不同数据库,如用户数据和订单数据分离,降低耦合度。 - **水平拆分**:按特定规则将数据分散到多个表,降低单表数据量,提升读写性能,但需处理跨表事务。 - **垂直水平拆分**:结合垂直和水平拆分,兼顾数据类型区分和单表性能优化。 5. **唯品会的具体实施**: - **垂直拆分**:将订单售后、订单销售和其他数据分开,适应不同业务场景的性能需求。 - **水平拆分**:对订单销售数据进一步拆分,通过用户编号哈希取模实现分库,保证每个表在1000~5000万数据量范围内,同时进行分库以提高TPS,支持水平扩展。 6. **扩展性设计**: - 通过增加服务器集群,每组服务器容纳多个库,当单服务器达到瓶颈时可轻松扩展,确保未来3~5年的业务增长需求。 7. **用户编号HASH切分的好处**: - 分散订单创建的处理,减少单点压力,提高并行处理能力。 - 支持灵活的扩展策略,适应订单量的增长。 唯品会的架构重构是针对容量、性能和扩展性的系统性优化,通过垂直和水平拆分策略实现了数据库的解耦和负载均衡,增强了系统的稳定性和扩展性,为公司未来的快速发展提供了坚实的技术基础。
- 粉丝: 4
- 资源: 958
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助