作为中国第一的电子商务公司,京东拥有数亿用户,每天要处理数千万的访问请求。在支持数据的结构和管理方面有哪些妙招?会上,51TO记者采访了京东高级架构师张成元。ZhangChengyuan,《Mariadb原理与实现》的作者,开源项目speedy的作者。目前就职于京东数据库系统研发团队,负责京东分布式数据库系统的架构和研发,主导京东分布式数据库系统在公司的落地和大规模推广。擅长高性能服务器开发,擅长分布式数据库/存储/缓存等大规模分布式系统架构。分布式数据库技术核心京东每天都使用分布式数据库系统进行海量数据处理。它的核心技术和思想是什么?张成元表示,京东分布式数据库的关键是引入了中间件来提供数据拆分,解决了业务中单机无法处理数据量大的问题。对于业务来说,在单机支持不了的情况下,需要关注数据,那么它的负担会很重,所以京东采用了分布式数据库的方案,让业务使用起来更方便。京东会进入MySQL协议,提供代理方式,把整个集群管理好。接入业务时,只需要使用原生的MySQL客户端即可使用,业务使用负担会很轻。同时,京东也有非常完善的监控,可以保证业务接入后系统的稳定性和可靠性。数据库设计架构京东非常重视容量。在前期的设计过程中,需要预估业务未来一到两年甚至两到三年的能力,做出合理的资源配置。并且考虑到未来扩张的需要,京东可以在业务增长的情况下实现自动扩张。京东在发展过程中,早期的一些业务可能会放在Oracle中,一些数据量小的业务可能会放在MySQL中。简单的说,因为单机的数据量是放不下的,如果我们使用分布式数据库,我们可以拆分它的数据,相当于得到了一个比原来容量大很多的数据库。分布式数据库可以存储所有的关系存储数据,也可以支持京东的很多核心系统。比如订单、商品、物流金融等。数据可靠性但是在这个过程中,如何保证数据的可靠性呢?张成元说,数据的可靠性有两个方面。一是服务本身高可用,二是数据本身高可靠。比如在MySQL层面,我们使用主层和分布式数据库中间件层面。因为我们是无状态的,所以可以部署多副本来解决高可用的问题。关于数据本身的高可靠性,我们会定期对数据库中的数据进行备份,所以即使出现误操作或其他问题,也可以完整恢复。分布式事物的难点在整个分布式数据库系统的实现过程中,难免会遇到一些困难,比如分布式节点。京东团队是如何解决的?分布式事物最难解决的问题就是事物的原子性很难保证。一次访问可能涉及多个节点,每个节点都可能出现问题。尤其是基于MySQL层面的分布式数据库,因为每个节点的事务ID不同,但是如果不是基于MySQL而是在其他层面存储的话,相对来说会有类似两阶段提交的协议可以作为解决问题的参考。很多人关心分布式数据库能否保证数据的一致性。张成元认为,这不是一致性的问题,而是分布式事物的原子性问题。本质上,如果事物涉及多个节点,节点出现异常,引入相关系统满足业务需求,丢失的事物可以补上。另一种方法是与使用中的业务进行沟通,拆解关联交易。拆分后,每次访问都落在一个分支或节点上,这样就可以保证每次访问要么成功,要么失败,可以通过另一种方式绕过这个问题,保证原子性。专访***中国综合电商平台众多,但京东是中国最大的自营电商,也是中国第一家成功上市的大型综合电商平台。我们。百度等中国互联网巨头跻身世界互联网公司前十。京东的成功离不开其出色的数据库管理。
