专访架构师杨传辉:双11支付宝核心数据库OceanBase今世前生
大家知道,每年的双11,都是购物狂欢节。今年的淘宝双11交易额达到的惊人的571亿,在这些光鲜数据的背后,其实也是对淘宝数据库的极大考验。更值得一提的是,今年双11支付宝的支付峰值突破了每分钟285万笔,创下了新的纪录。如此高并发负载的交易量,让我们对幕后支撑的数据库技术OceanBase心生好奇。究竟OceanBase有哪些强大之处呢?
毫无疑问,技术是打赢双十一“战争”的关键,而人又是成就技术创奇的力量。第102期名人堂我们重邀OceanBase的系统架构师杨传辉(社区ID:Alisunshine),为我们揭晓高性能分布式数据库系统的演变之路。
皮皮(Q1): 您好!很高兴有机会采访到您,能否简单介绍下自己?
杨传辉(A1):我叫杨传辉,来自阿里巴巴蚂蚁金服基础数据部,花名日照,目前是OceanBase的系统架构师。我是个技术宅,研究领域主要是云计算和大数据,平常喜欢写写技术文章,和微博上的技术同行互动,维护了个人博客:http://nosqlnotes.net,出版过一本分布式书籍《大规模分布式存储系统:原理解析与架构实战》。做技术的,保持谦逊,主动找事情做,追求,才能不断进步。
皮皮(Q2): 我了解到您在阿里一直从事OceanBase的研究,有四年之余了,伴随着这款数据库新贵的一路成长,您见证了它的演变历程,能否和我们分享下这些年来的苦与乐?
杨传辉(A2):分布式系统的成熟至少需要三年时间,数据库系统更是五年以上,OceanBase这样的分布式数据库系统研发是需要经历“八年抗战”的。到目前为止,做了四年半,取得了一些小成绩,但未来的路还很长。
首先,我觉得自己比较幸运,毕业以后首先在百度,后来转战到阿里,一直从事大规模分布式系统的研发工作,也一直能够有幸得到高人指点。BAT的好处在于能够提供海量应用场景,尤其是阿里,能够把核心的业务,包括交易系统放到OceanBase这样的新系统上。这样的挑战、这样的信任,不是能够用金钱或者其它东西衡量的。系统研发一直都是“美帝”的天下,中国几乎没有能够拿得出手的系统,根本原因在于缺少应用场景。以BAT为代表的中国互联网的崛起给我们提供了逆袭的机会。
分布式数据库研发短时间是出不了成绩的,两年左右时间大概也只能够入门。这个领域并不需要一个人有多聪明,关键在于这个人是否踏实,真正享受这个过程并且不断地坚持。研发过程中会遇到很多的困难,比如没人敢用你的系统,又比如答应过的需求无法按时完成,辜负了用户的信任,或者技术决策失误,兄弟们也有可能因为你而坚持加班等等,各种情况始料未及。当然,更多的时候是痛并快乐着。记忆中,我感触快乐的瞬间刻骨铭心:重要的系统上线,通过我们的系统解决了用户的疑难问题,看着双十一零点系统压力不断冲高而安然无恙。
为难忘的是2011年双十一,当时,个项目收藏夹上线,双十一前两个礼拜发现重大Bug,系统在晚高峰会触发一个Linux内核问题,程序异常退出。记得当时是周五晚上,我们北京的同学立刻订了第二天的机票出差到杭州,后来临时修改代码,线上测试,折腾了几次,终于在双十一前一个礼拜搞定。等到我们的系统顺利挺过2011年双十一时,所有的同学都长长地舒了一口气。有点运气,那时我真正领悟到了什么叫做“痛并快乐着!”。
皮皮(Q3): 那为什么阿里要自主研发支持海量数据的高性能分布式数据库系统OceanBase,而不是用商业的Oracle或者开源的MySQL?
杨传辉(A3):从经济学的角度看,这是一个边际成本的问题。自主研发前期投入是巨大的,不过以后边际成本会逐步降低。Oracle和MySQL都是单机数据库系统,每次扩容都是一个比较大的项目,迫切需要一套可自动扩展的系统,另外,Oracle license贵,MySQL在阿里的应用场景下有这样那样的问题,比如主备延迟很大,有丢数据风险,各种场景下的性能也存在很大的提升空间。当一个公司的规模比较小的时候,自主研发是不划算的,即使做成了也没法收回成本;然而,到了阿里这样的规模,自主研发,掌握核心技术决定自己的命运已经成了不得不做的事情。就是在这样的背景下,OceanBase应运而生。
皮皮(Q4): OceanBase个应用是收藏夹。近,听说支付宝交易也用到了OceanBase。能否结合阿里的应用谈谈OceanBase的优势。
杨传辉(A4):相比传统的关系数据库,谈及OceanBase的大亮点,当属可自动扩展的特点,它不仅仅可以扩展到一个数据中心,乃至同城,在未来,OceanBase能成为跨地域多数据中心的全球数据库。当然,OceanBase还有一些特性,比如强一致性,能够自动容忍一台服务器甚至是整个数据中心故障,而不会丢失一条记录。值得强调的是,支付宝交易之所以会选择OceanBase而不是开源的MySQL,正是因为只有OceanBase能够做到完全不丢数据。
另外,随着OceanBase不断优化,OceanBase用武之地将会越来越多,比如支付宝交易的性能已经超越了所有的开源数据库,以后还会超越商业数据库。这就是自主研发的优势,等到渡过了积累期,相信OceanBase的后劲会很足。
皮皮(Q5): 我们知道,很多电商面对双十一带来的压力,都会在双11前对数据库集群进行扩容,相信阿里也不例外。我们常见的扩容有两种,一种是读写分离,通过增加备库提供读服务来提升集群的能力;另一种是水平扩容,将数据重新分布,拆分到更多台服务器上,达到扩容数据库集群的目的。能否谈谈OceanBase是如何扩容的?
杨传辉(A5):双十一大促这样的应用场景很有中国特色,技术人员都知道,整个后台系统只有数据库容量难提升。传统数据库的运维人员需要花费大量的时间来做数据库扩容,包括读写分离、垂直拆分、水平拆分等等。不过,对于OceanBase运维人员来说,扩容是一件非常淡定的事情,我们要做的事情就是加入更多的服务器。加入服务器,容量就提升了,OceanBase系统内部可以实现自动扩容,解决了我们的燃眉之急。
皮皮(Q6):在分布式系统中存在着的“短板理论”,一个集群如果出现了负载不均衡问题,那么负载大的机器往往将成为影响系统整体表现的瓶颈和短板。那么OceanBase在阿里双十一的大战中是如何做到负载均衡的呢?
杨传辉(A6):OceanBase内部会自动把数据切分为一个个比较小的分片,每台机器服务若干个分片,当某台服务器的分片成为热点时,会自动触发迁移操作,将分片从负载较高的服务器迁移出去,这样,就避免了“木桶效应”。这也是OceanBase的一个优势,无论双十一之前热点怎么变,OceanBase都可以很快把热点数据均衡到整个集群,而不是因为一两台服务器把整个集群压垮了。
皮皮(Q7):在分布式系统中存在着的“CAP理论”,很多NOSQL系统都会为了提升性能而牺牲一致性。OceanBase是如何做的呢?
杨传辉(A7):确实是这样,很多NOSQL系统为了实现简便,牺牲了一致性来提升性能。然而,对于电商、支付这样的业务,根本没法使用弱一致系统。OceanBase是真正的分布式关系数据库,不仅仅支持分布式,还支持SQL、事务、并发控制这样的关系数据库特性,用户使用起来和MySQL没有任何差别。
和MySQL的不同点在于,MySQL主备同步是有丢数据风险的,而OceanBase通过Paxos选举协议实现强一致性。无论是一台服务器,还是数据中心整体故障,OceanBase都能够自动恢复,而且做到完全不丢数据。OceanBase的这种做法和Google、Microsoft以及Amazon云存储系统的底层原理都是共通的。
皮皮(Q8):在双十一中,我们经常会遇到比如热点商品更新库存,秒杀,红包等场景。当同时大量更新数据库中的同一行时,就会产生大量的锁等待,数据库的性能就会急剧下降。那OceanBase是如何做到并发控制的呢?
杨传辉(A8):热点行是数据库里面的一个经典难题。热点应用的场景很多,比如双十一抢购小米手机。首先,OceanBase的事务引擎面向内存设计的,它的特点就是快,而且避免了传统数据库的写入放大问题,这样,OceanBase的锁等待天生就要更少。另外,OceanBase还提出并个实现了提前解锁、排队等待等优化思想,这些思想后来也应用到集团MySQL数据库的patch中,成为阿里双十一应对热点问题的标配。
皮皮(Q9):刚才说到,OceanBase要“八年抗战”。那么,OceanBase未来准备做哪些事情。我们的读者也会有一些对OceanBase研发工作感兴趣,你们需要什么样的人?
杨传辉(A9):OceanBase未来要做的事情很多,大目标只有一个:做全球好的分布式数据库。我们的数据库可以跨地域部署,性能超越Oracle,使用起来和MySQL一样,并且应用到阿里,应用到中国,应用到全世界。
前面已经提到,我们需要的人首先要踏实,享受技术并且能够耐得住寂寞。另外,不断挑战自己,追求。当然,具备数据库开发、分布式系统开发、系统优化等相关经验会更好。
相关文章