阿里王晶昱谈淘宝双11分布式数据库实战

11月19-21日,SDCC2015中国软件开发者大会在北京顺利召开。大会包含10个主题演讲,9大技术专场论坛及5场特色活动,吸引了1067名参会者现场听讲交流。没有参会的你,通过图文直播专题:2015中国软件开发者大会或点击关键字SDCC,也可一览该技术盛会所带来的技术干货。

本文是在大会SDCC专访间,采访了阿里巴巴资深技术专家,DRDS负责人王晶昱,请他谈谈淘宝双11分布式数据库实战。

 

阿里巴巴资深技术专家、DRDS负责人 王晶昱

CSDN:你好,请您首先自我介绍一下。

王晶昱:大家好,我叫王晶昱,花名沈询,花名是淘宝文化体系里面的一部分,用的时间久了大部分人可能都只知道沈询这个名字了。不过没关系,我也挺喜欢用沈询这个名字的。

这个名字其实是以前我在一本武侠小说里面找到的名字,这个武侠小说里的这个人是一个已近而立的白衣少侠,三十岁左右,所以正好跟我一样。现在正是我正当时的时候,在那个小说里面,武侠的男主人是一个苦情男子,跟那位女主有一段美好的爱情故事~因此这还是一个挺有诗意的名字。

在阿里,我以前一直做分布式数据库DRDS这块,现在也在做一些分布式消息aliMQ(原ONS),目前也在负责整个阿里企业级应用架构的技术架构工作,所以在这块积累的比较多。

因为是在做阿里分布式数据库相关工作,所以以前的经历里面也就跟阿里的去IOE有很多交集,基本上参与过阿里大部分的去IOE项目,帮他们做一些业务架构的设计,包括整个系统迁移过程中的流程设计等等,这个是我主要在公司之前的一些工作。

CSDN:来阿里多少年了,在工作这段时间,有没有留下印象深刻的人或事跟我们分享一下。

王晶昱:一说到这个就觉得挺有意思的一件事。我差不多2008年到的阿里,令我印象特别深的一件事是在2008年8月8日的前两天,我离着两公里远看了一下鸟巢,向它挥挥手,然后就坐着火车就到了杭州。当时其实是因为阿里在北京没有分公司,只在杭州这个地方有。

为什么去那里?原因也是因为当时公司团队的名字特别吸引我——阿里平台架构组。

我当时其实也跟很多人一样的想做个所谓的“架构师”。差不多经过七轮的面试,成为这个团队的第九人。一开始所有人看着都像大哥哥一样,我仰视着他们,一个个都是大牛,然而过了这么几年,我突然发现周围好多人岁数都比我小了,不得不感叹一声岁月蹉跎啊。

在阿里这么多年过程中,我觉得经历的事情挺多的,比如说以前我们也做过整个阿里的去IOE,持续了很多年,里面有很多有意思的事情,我之前也做过一些这方面的分享。在最近这几年,我主要负责企业用户量架构这块,有非常多的经验值得去分享。

还有一块就是双十一,在往年的双十一,我基本都在核心作战室,但是这次没有,不过我认为这是一件值得高兴的事儿,因为他证明了我们公司在这个地方的自信。很多人逐渐就会从核心作战室里面出来,新的人会加入到里面去,让新鲜的血液可以不断地受到历练。今年双十一也是我们第一次能达到九百多亿的交易额,在此之前我们也做了非常多的努力,包括在数据库和整个系统架构上面。

CSDN:刚才提到淘宝双十一,阿里收获了九百多亿,在此之前,你们有这个期望值吗?

王晶昱:九百多亿的时候,这个交易额其实在公司内大家都有猜测,但是具体能猜到多少,这个是没有人能知道的。公司内其实一直有一个传统,在双十一这一天,内部会有个活动来预测今年的交易额是多少。我今年猜的是一千亿,可惜没有猜中。

CSDN:我之前好像有看到,你们有猜中的可能会有一些奖品的激励,是吗?

王晶昱:其实是这样的,所有人都把自己的固定要求说你要打多少钱到一个账户里,然后最后由统一的一个人把所有人打出来的钱给到一个人,这个人再请客,让大家吃一顿饭把这个钱花掉。这个也是挺有意思的一件事。

CSDN:你们是如何保障系统的运营?

王晶昱:双十一,说实话这么多年下来了,就整个系统基本上来说都是非常稳定的,不太会出现像一开始第一年、第二年的时候手忙脚乱的情况,大家基本上都是按部就班地完成自己的一些事情。

这个除了我们系统架构上面一些准备以外,最重要的一件事就是我们在系统架构上面已经做好了充分的准备。比如说我们整个服务框架EDAS、消息aliMQ(ONS)和分布式数据库DRDS这些系统,差不多在五六年前已经全部使用到了我们线上系统上面,以确保线上系统全部可以做到自由水平伸缩。

这两年重要做的事并不是把系统架构再做什么特别大的调整,而是要去判断今年大概有多少交易额,应该对我们的系统,哪些地方应该多加一些机器,哪些地方加一些机器以及业务怎么去做,以保证双十一的时候做到最好。

CSDN:可否给我们谈谈阿里云企业级互联网级架构。

王晶昱:这也是我现在目前正在做的一块,可以稍微说一下,其实阿里整个企业级互联网架构核心要做的事情是将阿里过去近10年在互联网技术上面的积累通过阿里云这个平台进行对外输出,提供给包括阿里云内的所有团队,以及阿里外的所有团队去使用,包括比如高德、众安保险,也包括公司内的,比如淘宝、天猫等等,很多业务应用的都跑到这套平台上。

CSDN:刚刚有谈到企业级架构这块,我对这块比较感兴趣,能否给我们谈谈这块是怎样的一个流程和特征?

王晶昱:其实是这样的,阿里一开始也是在使用很多的外部的这些商业软件。但用到最后我们发现,这些原来传统企业里面在使用的这些所谓的企业级的架构,并不能够完美地符合我们现在互联网的需求。因为互联网架构和传统的企业级架构最明显的差别,就在于说我们面向的用户是不一样的。以前,我们面向的用户是柜台柜员,或者面对销售的销售人员,可能只有几百人、几千人,最多一万人到头了。可到了互联网时代,像12306这样的网站,直接面对的全中国十三亿人,甚至可能面对全世界将近六十亿人的时候,他们会同时登陆到这些网站上,所以我们就要想办法让他们第一个能够感受到我们网站效率很好,速度很快。

另外,还有一点,他们每次操作一定要以非常低的延时来完成。这些东西都是我们非常关注的事情。传统企业架构里面,这方面关注并不是很多。因为他们更多强调的是,如何能够减轻开发的流程,让不同的异构的系统进行整合,然后对于最终的用户的关注可能没有那么多。互联网企业,直接面对的就是最终用户,所以在这里面,最重要做的事情,就是要让最终用户感受到系统网站的快捷。

就整个系统来说,主要的系统特征包括:

第一,完全去中心化。以前我们也用过类似ESB这样的组件,对于整个系统的性能,可扩展性的影响都非常大,最后通过自己的自主研发,实现了企业级互联网的架构,EDAS这一套平台。这个平台主要做的事情,就是将我们原来基于ESB的服务框架和SOA的理念替换成新一代的全部去中心化的EDAS技术体系。

机器和机器之间直接链接的网状结构方案。去掉了ESB以后的系统架构,性能好,延时低,同时也不会出现因为一个点的问题而导致系统雪崩的情况。比如一个核心故障点出现了问题,系统就死机了,不会出现这些问题。

刚才说的都是去中心化带来的好处,然而整个去中心化的架构也会有代价,最明显的代价就是我们的系统可能会随着机器数的增加,管理机器的难度会呈现指数级增加的问题。

所以,我们在开始做完去中心化这件事后,差不多花了四到五年时间,把这套网状的结构梳理清楚,利用后台比较强大的基于数据化运营的管控渠道将我们整套服务体系管理起来,这样才能在双十一之前能够有这么大的量的情况下保证整个系统的稳定。

第二,确保整个系统做到全部的完全可自动化扩展。任何一个节点,比如应用集群、数据库、消息服务所有地方都必须要能够做到自动伸缩。

以前,我们也运用过传统的数据库,比如说Oracle。那个时候我们会认为Oracle能够解决所有问题,但用了它以后发现原来Oracle只能解决一小部分问题。在用户数量飞速增长的过程中的时候,这种传统的商业数据库一台机器能够承载的用户量一定是有限的。所以我们不得不进行一种基于切分的大规模分布式集群数据库方案,用了这种方案以后,又会发现另外一个问题,管理非常难。我们开始有三台机器,后来变成五六台,最后变成了几百台,怎么管理变成特别大的难题,所以我们又进行了很多的研发,最后才产生了DRDS这个产品,DRDS这个产品能保证系统在可管可控的前提下,实现自动伸缩,提升访问能力。

第三,强调异步化。原来我们会被各种数据库的教科书灌输系统要强一致,否则会出现资金损失等无法预知的情况。比如我们支付宝就是一个强交易的流程,在类似这样支付宝的强交易流程里面,我们一定要使用到传统数据库的ACID才能保证系统的准确性,不会丢失资金等。

然而经过我们自己的实践以后发现,原来这个系统真正的场景下并不是这样的。我们需要在理解原理的前提下,将强一致和最终一致进行非常好的结合,找到最合适的边界点。

我们的实践表明大部分情况下,尽可能用到最终一致的方案,能够降低系统延迟,提高用户体验的。

第四,是强调系统数据化和自动化,我们最近这几年最重要做的事其实就是自动化,因为业务不断快速扩展,机器会越来越多。从开始的几十台到后面的几百台,再变成几千台、几万台,这么多台机器全部放在一起以后,再用传统的运维管控模型管理它是非常困难的一件事。我们在最后特别提出了自动化运维这套体系,

积累了这么多年,就是为了想办法在机器扩展过程中应用,运维人员不会有水平向上扩展这种情况。最后用一两个运维的人员就可以把整个系统运营好,这是我们最终想要达到的目的。

CSDN:除了数据库这块,阿里还会采用哪些平台支撑?

王晶昱:其实除了数据库以外,还会采用更多的现在在外面已经有的,大家可以看一下,第一个是EDAS,是一个企业级的分布式应用服务。我们在传统的应用容器的基础上,提供一个基于分布式系统的分布式服务调优框架,来帮助大家实现一种分布式的去中心化的系统调优和系统运维管控。

这样,就可以让我们的应用在享受到去中心化带来的好处的同时,又不会让自己的业务系统开发失去控制。 整套平台也是整个阿里内积累了非常多年的一套平台。

另外,针对刚才所说的最终一致性这件事,我们也提供了一个非常重要的组件,分布式消息服务aliMQ(原ONS),它要做的事情就是通过一种编程模型,引导用户将系统进行异步化改造,完成了异步化改造后的系统,性能会有非常巨大的提升,而延迟则会明显下降,这样就可以让我们的系统给我们系统的用户一个最好的用户体验。 

最后,就是分布式数据库DRDS ,基本上来说分布式数据库要做的事,就是在原来传统单一数据库之上,想办法再去实现可平滑自由伸缩。所以用了这三套组件以后,你的应用系统就可以实现完全意义上的水平扩展。你只需要关注业务应用本身的业务系统的逻辑。

而整套企业级互联网架构则会帮助你去解决整个系统的扩展性问题和系统运维上的问题。从而实现从原来的基础设施云化,走向更为关键和有价值的业务应用云化阶段。让企事业单位的IT更好的适应互联网+的实际需要。

CSDN:在数据库实战论坛你分享了哪些话题?

王晶昱:我主要讲的东西就是阿里的双十一数据库的实战。其实大家可以理解,阿里双十一数据库实战这个题目定出来的时候,我们还没有进入双十一。所以其实讲这个题目,压力很大。如果真的不太行,系统挂了的话,我就没脸上这个台了,很有幸的一点,我们这次还是非常稳定地满足了整个系统的运维过程,运维的时候也没有太多的问题,系统运行特别平稳。所以我才能非常轻松地到这里来讲讲我们今年做了什么事情,但是其实光讲这个我其实也没什么,毕竟这么多年下来,我们核心要做的事情是分布式,包括比如说复杂系统支持、事务等等这些以前都讲过。

这次主要从全局来看一下数据库从上世纪七八十年代到现在2015年,这么多年来下来,数据库主要发展脉络是什么样的。

然后我再尝试能够从历史走到现在,对我们就能对未来分布式数据库的发展做个管中窥豹,畅想一下我们未来的分布式数据库将会是个什么样子。

随后再来看一下整个DRDS团队是怎么思考未来的分布式数据库应该是个什么样子的,他提供了哪些特性才让我们的应用开发能够非常方便的完成他们的业务应用,从而成为了阿里内被使用最为广泛的一套分布式数据库产品。

最后我也会分享一下,DRDS团队在今年双十一的时候主要做了哪些事情,将我们今年双十一的实践进行小结。

CSDN:给从事数据库开发者分享一些经验。

王晶昱:其实选择数据库开发这个领域我还是蛮幸运的。整个业务系统就分两块:一块是业务应用;一块就是数据库。所有的应用就这两块,一块是怎么能把业务逻辑写对,一块是怎么去存取数据和读取数据。所以你会发现整个数据库就占据了业务应用的半壁江山。

另外一个很幸运的是,在整个数据库领域里面,有非常多难以解决的问题,我相信今天在我们这个SDCC数据库论坛上大家也能听到很多。现在目前数据库的问题有哪些,我们针对这个产品的选择是什么等等。

现在的数据库已经从原来的一个数据库可以打天下,逐渐变成一个百花齐放的状态。为什么会这样?也是因为我们面向的用户的需求变得越来越多,而且面临这种用户需求,背后对应的核心技术要求也变得不一样了。我觉得这个其实就是一个很好的机会。

正是因为它在战国时代,百花齐放,所以才有可能在未来会产生一个统一的新型数据库模型。虽然现在还没有找到它,但是,懒惰的程序员们对于一个能以低成本,低延迟,高性能运行任意维度各类型组合SQL的数据库的追求一定会指引我们寻找到那神圣的数据库圣杯的。我相信未来会有这么一天,我们一起来走到那一步。

你可能感兴趣的:(平台架构)