京东资深架构师张成远:京东分布式数据库是如何炼成的?

原创
移动开发 分布式
2016年4月14-15日,由51CTO传媒主办的WOT2016互联网运维与开发者大会在北京珠三角JW万豪酒店召开。秉承专注技术、服务技术 人员的理念,自2012年以来,WOT品牌大会已经成功举办了八届,积累了大量的技术专家资源,获得了广大IT从业者和技术爱好者的一致认可,成为了业界重要的技术分享交流平台以及人脉拓展平台。

作为国内***梯队的电商企业,京东拥有亿万用户,每天要应对数以千百万计的访问需求,在其架构和管理方面有何妙招来对数据加以支撑呢?在会上,51TO记者采访了京东资深架构师张成远。

[[165464]]

张成远,《Mariadb原理与实现》作者,开源项目speedy作者。目前就职于京东数据库系统研发团队,负责京东分布式数据库系统架构与研发工作,主导了京东分布式数据库系统在公司的落地及大规模推广。擅长高性能服务器开发,擅长分布式数据库/存储/缓存等大规模分布式系统架构。

分布式数据库的技术核心

京东每天面对海量的数据处理采用的是分布式数据库的系统,其核心技术及思路又是怎样的呢?

张成远表示,京东分布式数据库的关键是引入中间件的方式来提供对数据的拆分,解决了业务上单机扛不住数据量的问题。对于业务来说,在单机扛不住的情况下还要自己去关注数据,这样它的负担会非常重,所以京东采用了分布式数据库的方案,让业务可以比较方便的使用。京东会进入MySQL的协议,提供代理的方式,把整个集群管理好,业务接入时只需要用原生的MySQL客户端来使用就可以,所以对于业务的使用负担会非常的轻。同时京东也有非常完善的监控,所以能够保证业务接入以后系统的稳定和可靠。

数据库的设计架构

京东对容量非常的重视。在前期设计过程中,需要针对业务进行未来一到两年甚至两到三年的容量预估,来进行合理的资源配置。以及考虑到未来扩容的需求,京东可以实现在业务增长的情况下自动化扩容。

京东在发展过程中,早期的一些业务可能放在Oracle里面,也有一些数据量较小的业务是放在MySQL里面。简单说,因为单机的数据量放不下,如果采用分布式数据库我们能够把它的数据进行拆分,相当于可以获取到一个容量比原来大很多的数据库。

分布式数据库可以存放所有的关系型存储数据,并且还可以支撑京东非常多的核心系统。例如订单、商品、物流还有财务等等。

数据的可靠性

但是在这个过程中,数据的可靠性又是如何保障的呢?

张成远表示数据的可靠性有两点,一是服务本身是高可用的,二是数据本身是高可靠的。

比如说MySQL层面,我们通过主层,分布式数据库中间件层面,因为我们本身是无状态的,所以可以部署多份,来解决高可用的问题。关于数据本身高可靠的问题,我们会对数据库里面的数据定期进行备份,所以哪怕有误操作或者其他任何问题,都可以完整的恢复回来。

分布式事物的难点

在实现整个分布式数据库的系统的过程中也不可避免面临一些困难,比如分布式节点相关,京东团队又是如何解决的呢?分布式事物相关最难的问题在于事物的原子性很难保证,一个访问可能涉及多个节点,并且每个节点可能都有问题。尤其是基于MySQL层面做分布式数据库,因为每个节点事物的ID不一样,但如果基于存储的不是MySQL而是其他层面,相对来说会有类似两阶段提交的协议可以参考,从而解决问题。

很多人会关心到分布式数据库能否保证数据的一致性,张成远认为这不是一致性的问题,而是关系到的分布式事物的原子性的问题。从本质上说如果事物涉及到多个节点,并且节点异常,为满足业务的需求会引入相关系统,可以把丢失的东西补回来。还有一种方法,就是在使用上和业务沟通,将相关的事务进行拆解。拆分后,每次的访问之落在一个分部或者节点上,如此一来可以保证每次的访问要么成功要么失败,可以很巧妙的从另一个方式绕过这个问题,用来保证原子性。

采访***

国内不乏综合型电商平台,而京东却是中国***的自营式电商企业,是中国***个成功赴美上市的大型综合性电商平台,同时与腾讯、百度等中国互联网巨头共同跻身全球前十大互联网公司排行榜,京东的成功与其有着优秀的数据库管理是密不可分的。

 

责任编辑:陈琳 来源: 51CTO
相关推荐

2017-09-16 18:29:00

代码数据库线程

2023-07-31 08:27:55

分布式数据库架构

2023-03-07 09:49:04

分布式数据库

2018-09-29 09:47:41

开源分布式数据库

2023-04-26 06:56:31

分布式数据库伪需求

2023-12-11 09:11:14

TDSQL技术架构

2021-12-20 15:44:28

ShardingSph分布式数据库开源

2023-12-05 07:30:40

KlustronBa数据库

2023-07-28 07:56:45

分布式数据库SQL

2016-08-30 18:01:12

raftSQLNewSQL

2022-12-08 08:13:11

分布式数据库CAP

2023-11-14 08:24:59

性能Scylla系统架构

2017-01-10 16:18:26

分布式存储建设

2020-04-14 11:14:02

PostgreSQL分布式数据库

2015-10-16 18:03:25

Docker分布式CoreOS

2022-03-10 06:36:59

分布式数据库排序

2022-06-09 10:19:10

分布式数据库

2022-08-01 18:33:45

关系型数据库大数据

2020-06-23 09:35:13

分布式数据库网络

2024-09-09 09:19:57

点赞
收藏

51CTO技术栈公众号