注册 / 登录

当当网在数据快速增长时如何进行横向扩展

分会场:  数据科学/人工智能/数据驱动

 

案例来源 :

案例讲师

高洪涛

当当架构部 系统架构师

当当系统架构师,技术委员会成员,分布式存储技术专家,Oracle DBA OCP。有丰富的数据存储,管理经验。从2013年开始从事大规模分布式存储系统的设计与研发工作,参与大型云平台数据中间层建设工作,2015年加入当当,目前负责当当数据中间件Sharding-JDBC的设计与研发工作,并参与当当内部多条产品线融合Sharding-JDBC的改造上线工作,有丰富的数据切分,数据一致性保证,扩缩容的相关经验。参与Sharding-JDBC的开源进程,有开源产品管理相关经验。

扫描二维码分享案例

 

案例简述

 

Sharding-JDBC作为当当开源的数据库中间件,解决企业在数据快速增长时对数据库进行横向扩展的问题。
本案例重点关注在将Sharding-JDBC应用在已经运行的系统中时所面临的一系列问题。这些问题集中在架构重构,发布上线,运维监控和扩容缩容等方面。针对这些问题,Sharding-JDBC进行了相应功能提升和产品细节优化,并结合相关辅助方案共同达到系统无痛平稳上线的目的。

 

案例目标

 

随着双十一等促销活动的常态化,各个系统对于数据分库分表的需求越来越强烈。Sharding-JDBC提供统一的分库分表支持。虽然有了这件趁手的工具,想要应用在已经存在的系统中会面临比更多复杂问题的挑战。本案例重点解决将Sharding-JDBC应用在生产系统之中,达到无痛快速上线的目的。

 

成功(或教训)要点

 

28法则,梯度化适配保证了系统可以快速上线。合适的分库分表规则保证了无痛改造。原生的监控和度量支持,保证了运维过程问题的快速分析与定位。单元测试与压力测试的充分实施,为功能与性能问题的即时解决提供保障。

 

案例ROI分析

 

在Sharding-JDBC之前各个团队自行研发分库分表组件,重复投入,代码质量参差,维护没有延续性,会产生重复投入的问题。经过统一后,一次投入,经过持续改进和维护,大大提高的产出效率。

 

案例启示

 

Sharding-JDBC应用在生产环境,可以比喻为开着飞机换引擎。我认为成功的关键是系统需要有“反馈”能力,系统要能即时反馈使用新组建后的反应,工程人员才能根据这些数据来对症下药。任何系统无法反应自身的状态,完全是一个黑盒,那么将会付出非常惨痛的代价。
同时要找到研发团队之间的利益交汇点,这样有利于推动产品顺利落地。