厉害了,蚂蚁金服!创造了中国自己的蚂蚁金服数据库OceanBase。
2008年,王坚从微软亚洲研究院执行副总裁的位置上离职后,于当年9月加入阿里巴巴集团,担任首席架构师,负责集团技术架构和基础技术平台的建设。阿里加盟没多久,王坚就提出了“去IOE”的想法,即摆脱过去IT系统对IBM小型机、Oracle数据库、EMC存储的过度依赖。
从2009年开始,阿里将公司的全部精力投入到云计算的研发和使用上,这也算是取代IOE的一步棋。2010年,杨振坤加入阿里,1999年成为北京大学首批长江学者,获得国家科技进步一等奖,先后担任北京大学计算机科学技术研究所副所长、联想研究院首席研究员、微软亚洲研究院首席研究员、百度高级科学家等。,并带领团队在阿里做了蚂蚁金服数据库OceanBase代替商业数据库。
2013年5月,阿里集团最后一台IBM小机在支付宝下线。2013年7月,淘宝广告系统使用的Oracle数据库下线,也是淘宝最后一个Oracle数据库。2014年,OceanBase更换了支付宝交易系统中的Oracle数据库。2015年,OceanBase更换了支付宝支付系统中的Oracle数据库。2016年,OceanBase取代了支付宝核心记账系统中的Oracle数据库。2017年,蚂蚁金服全面去IOE。
2011-2016年双十一支付宝支付世界纪录峰值为12万笔/秒,随后2017年双十一支付峰值为25.6万笔/秒,创下2016年新纪录。这背后是由OceanBase R&D和运维组成的几十人的团队。2016年世界互联网大会,OceanBase入选全球领先的互联网科技成果。其他获奖公司包括特斯拉、IBM、微软和卡巴斯基。
在6000多名蚂蚁员工中,这几十个人的辨识度很高,因为只有他们的徽章腰带是“土豪金”,其他人的徽章腰带都是蚂蚁蓝。“土豪金”徽章是蚂蚁金服-CEO奖的最高荣誉。2016年5月,蚂蚁金服董事长彭蕾亲自为这几十位科技明星戴上“土豪金”徽章,理由是这个小团队自主研发的蚂蚁金服数据库OceanBase,以远低于传统数据库的成本和更高的可用性,守住了支付宝一次又一次自我刷新的峰值支付世界纪录,打破了IT核心技术长期被西方垄断的格局。
从2017年开始,OceanBase跟随蚂蚁金服的金融科技开放,开始了赋能传统金融的实践过程。2017年底,OceanBase在南京银行正式上线,OceanBase 蚂蚁金服数据库为南京银行“云信+”互金开放平台提供金融级分布式关系数据库服务。OceanBase还出口到印度和美国,为当地支付服务提供数据库服务。作为蚂蚁金服开发的蚂蚁金服数据库
经历了七年的风风雨雨,成立后前三年一直被边缘化的OceanBase团队已经解散多次。现在,虽然他们集体戴上了“土豪金”,但他们都知道,像OceanBase这样的中国科技奇迹,是阿里巴巴/蚂蚁金服通过整个集团的努力创造的结果,而这个过程本身也可以称之为“奇迹”。2018年2月初,OceanBase团队的骨干成员杨振坤、冯轲、陈萌萌、江志勇、阳传会等与笔者进行了深入交流,介绍了OceanBase的来龙去脉。
OceanBase为什么能入选世界互联网领先科技成果,进入IBM、微软等世界科技巨头行列?首先简单回顾一下基础软件的历史。自1975年微软公司和1977年甲骨文公司成立以来,商业操作系统和商业关系数据库产品逐渐出现。再加上1995年创立的BEA公司及其代表的商用中间件产品,诞生了传统基础软件的核心技术:操作系统、中间件、数据库。
除了BEA公司在2008年被甲骨文公司收购,为什么世界上没有一家公司在操作系统、数据库、中间件产品上超过微软和甲骨文?这有很多原因。除了最早投入和培养最相关的技术R&D人才和技术积累外,更重要的原因是作为一个全球化的商业软件产品,无论是微软的操作系统还是甲骨文的数据库,都是随着全球用户对技术进步的集体使用、集体反馈和集体推动而打磨的。
实际上,无论是操作系统、数据库还是中间件,本质上都是融合了软硬件的优化技术,其目的都是通过软硬件的整合优化,实现最大的计算效率、最佳的成本、最佳的用户体验、最广泛的兼容性、最高的安全性和稳定性。以甲骨文公司的甲骨文数据库为例。它广泛支持并行计算机、大型计算机、小型机、工作站、个人计算机和其他计算设备,允许用户在不同的计算设备上使用和迁移Oracle数据库。1994年,Oracle关系数据库支持100多种硬件和操作系统环境,并兼容许多国际和国家数据库相关标准。
使Oracle数据库出名的是OLTP在线事务处理,也称为面向事务的处理。其基本特点是前台接收到的用户数据可以立即传送到计算中心进行处理并在短时间内给出处理结果,针对的是需要实时响应的关键业务系统,如银行、证券、民航订票系统等。Oracle数据库已经广泛应用于世界各地的金融、电信、民航等各种系统和业务场景中。在应用的过程中,技术不断完善,最终出现了一个“强者恒强”的结果。
由于Oracle数据库在关键的OLTP事务处理中占据了牢不可破的市场地位,使得后来的数据库厂商很难重复Oracle数据库所走过的反复实践、反复打磨、反复修正的过程。原因很简单。没有一个企业愿意把自己的核心业务拿出来,作为新技术厂商的试验田。因此,在以IOE为代表的传统IT环境中,除了已经确立市场地位的主流技术厂商,其他后起之秀的技术厂商,包括开源技术开发者,只能在企业的边缘业务或地方政府支持的业务场景中有少量机会。
这种情况一直持续到最近十年的云计算革命。云计算实际上是大型互联网公司发起并主导的技术变革。近年来逐渐从互联网公司蔓延到传统企业。云计算的初衷是大型互联网公司为了减少IT支出,从IOE架构发展到基于廉价PC服务器的IT架构。云计算起源于亚马逊在2006年推出的Amazon Web Service网络服务,简称AWS。2008年,王坚成为阿里首席架构师,负责集团年度IT规划和预算。此时,王坚意识到IOE架构对阿里长期运营成本的影响,以及对未来业务发展的制约。
2008年,阿里的数据库已经是亚洲最大的数据库,也是Oracle最大的用户之一。那一年,阿里还没开始双十一。从2009年开始,生成和处理的数据量每年都在爆炸式增长。如果一直使用Oracle数据库,运营成本将是天价。另一方面,为传统IT环境设计的Oracle数据库没有考虑到互联网的大规模、高并发、实时在线和大规模网络优化等新兴需求。2008年,Oracle数据库很难处理阿里的大规模数据。
本质上,OceanBase是类似Oracle数据库的关系数据库,但不同的是,OceanBase是针对超大规模互联网公司的分布式计算环境重新开发的关系数据库,Oracle数据库可以理解为针对传统企业计算环境的“单机”数据库。
所谓“单机”数据库首先是指Oracle数据库所基于的硬件环境是由IBM小型机和EMC企业级存储组成的高度稳定的共享存储环境,IBM和EMC的企业级硬件本质上提供了一个高度稳定的共享硬件环境。其次,Oracle数据库以共享存储为理念,所有数据库看到同一个数据盘,共享数据访问,从而保证所有数据都可以访问,底层硬件本身稳定可靠,所以是“单机”的角度。
目前,陈萌萌在蚂蚁金服基础数据部(OceanBase团队)负责SQL相关方向的开发。2006年毕业于清华大学,2006-2008年在CERN负责网格计算调度器的开发,2009年5月获得威斯康星大学麦迪逊分校计算机硕士学位。陈萌萌先后在甲骨文公司和华为美国研究院从事数据库开发和研究工作。他于2014年6月加入OceanBase团队。
陈萌萌的“单机”视角有一个形象的比喻:就像今天使用PC服务器一样,你要担心如果一台PC服务器突然挂机,甚至机房本身遭遇地震、火灾等极端情况,如何保证数据访问的稳定性。由于完全基于PC服务器架构,OceanBase在处理数据访问时,相当于将一台原有的小型机或存储设备垂直“切片”成许多机器,然后将数据分布到这些分散的机器上,使得数据只能通过网络访问。“以前是一个磁盘,现在看到几十个甚至上百个磁盘分布在不同的地方。查询优化怎么做?这种接入方式会很不一样。”
过去,传统的IT环境是高稳定性、高可靠性、高可用性的高端企业级设备集中在一个地方。现在,云计算环境是分散在不同地方甚至跨国家和地区的廉价PC服务器集群。OceanBase和Oracle数据库基于相同的数据库原理,但是底层的基础计算环境发生了根本性的变化。对于亚马逊、阿里巴巴/蚂蚁金服、谷歌这样的互联网公司来说,有三条出路:一是与甲骨文合作,全面开放自己的业务和数据;二是采用MySQL等开源数据库技术进行改进;三是从零开始重新设计一个完全自主知识产权的数据库产品。显然,亚马逊、阿里巴巴/蚂蚁金服、谷歌都走上了自研之路。
原因其实很简单。如果和甲骨文合作,需要全面开放自己的业务和数据。更重要的是,互联网公司的快节奏、快反应、快R&D、与业务运维并肩发展等特点,已经超越了甲骨文等上一代IT公司的企业文化和企业机制。至于开源技术,不同的开源数据库只适合特定的业务场景,不同的开源社区“各行其是”,主导着各自的技术方向。互联网公司需要针对不同的业务场景,将不同的开源数据库拼接成一个大系统,这无疑不利于长远发展。走综合自研方向,是长期投资最难,看似不可能,却最有价值的选择。
马云曾对新一代IT技术如阿里自研的云计算说:“网上很多人批评我被王坚忽悠了。这个云计算不可能把5000台电脑组合起来...腾讯和百度没有做。重要原因是他们的领导知道这是不行的。”相反,不懂技术的马云是自研云计算等新技术最坚定的支持者。“我没想过。从预算、人头、资金,一路投票,最后我们出来了。”
王坚2009年开始在阿里从事云计算,杨振坤2010年加入阿里后开始从事OceanBase。这两条线几乎是并行的。杨振坤回忆,整个OceanBase其实没有一个产品经理。根本原因是OceanBase作为商业关系型数据库的升级产品,在OceanBase项目之初就参考商业关系型数据库列出了一份长达千页的产品功能清单。随后的OceanBase开发过程就是基于这个列表,但是每个功能都是从分布式计算的角度重新实现的。“直到2018年初,OceanBase只实现了这份榜单中的部分核心功能,但足以支撑蚂蚁金服的全部业务”,杨振坤说。从2017年开始,三年内,OceanBase将实现商用关系数据库的大部分功能。
目前只有Google在2017年2月发布的Spanner数据库云服务是可以和OceanBase相提并论,可以称之为分布式数据库的产品。陈萌萌认为,Spanner是Google从无到有开发的分布式数据库,也是Google的交易业务场景,但整体上没有阿里巴巴和蚂蚁金服的交易业务大,而AWS推出的Aurora数据库更接近Oracle数据库的共享磁盘设计。“目前,我们只将OceanBase视为一个分布式数据库,它真正使用分布式架构来解决蚂蚁金服这样的大规模交易需求”,陈萌萌说。
从第一行代码到今天的百万行代码级产品,支持双十一的每秒10万笔的峰值支付和蚂蚁金服的全面业务,OceanBase可以说是创造了一个划时代的数据库产品。OceanBase是中国第一个具有自主知识产权的分布式关系数据库,也是世界上第一个应用于金融核心业务的分布式关系数据库。业内人士认为,OceanBase的出现打破了传统商业数据库在高端金融领域的垄断,为金融科技的本地化迈出了重要一步。
冯轲,现任蚂蚁金服基础数据部(OceanBase团队)架构师,于2014年加入蚂蚁金服。他目前的技术领域是分布式关系数据库、数据存储、性能诊断和优化。在加入蚂蚁金服之前,冯轲曾在国内数据库厂商天津神州通用数据技术有限公司(以下简称神州通用)担任CTO。浙江大学计算机应用博士,有15年数据库研发和产业化经验。
作为中国第一批国产数据库开发者之一,冯轲说,中国早期从事国产数据库开发的人,基本上都成了开拓者。以前做国产数据库更多体现的是国家科研的意志,而不是企业的市场化行为。更重要的是,自主研发数据库需要行业背景和企业实践。“数据库产品是用出来的,不仅仅是开发出来的。”冯轲强调说。国内的数据库专业公司,以国产数据库为主,往往未来发展不好,因为没有行业属性,找不到真正成熟的应用市场。
“我当时加入蚂蚁金服的时候,觉得蚂蚁金服独立研发OceanBase其实很不一样,很不可思议。而且阿里巴巴本来就是开源文化。为什么它完全从零开始做了一个数据库?直到今天,它仍然是一件非常奇妙和神奇的事情。”冯轲回忆说,许多人会问为什么他们不从MySQL开源数据库开始。“无论是自主研发还是基于开源产品,从技术角度来说,都没有绝对的对错,这往往是理想主义造成的。”
正如马云所说,阿里巴巴/蚂蚁金服投资蚂蚁金服数据库自研技术是理想主义的结果。2017年9月阿里巴巴第18届年会上,马云说:“让阿里巴巴坚持18年的是我们有理想主义,坚持理想主义成就了阿里巴巴的今天。”“大多数人因为看见而相信,很少人因为相信而看见”,马云在阿里巴巴第18届年会上引用。“18年,阿里有今天,是因为他相信。”
江志勇现为蚂蚁金服基础数据部SQL组(OceanBase team)负责人,致力于高可用性、高性能、高可扩展性和成本优势的分布式关系数据库系统。江志勇于2014年加入蚂蚁金服,在神州通用负责数据库开发长达十年。江志勇在浙江大学完成计算机专业的本科和研究生学业后,加入了中国航天科技集团公司下属的一个研究所,从事国内自研数据库的开发,当时主要用于科研和存储系统。江志勇在研究生期间一直参与这一研究项目,后来加入了航天科技集团成立的专注于国产数据库开发的神舟通用公司。
作为国内早期从事国产数据库开发的专业人士,江志勇认为,蚂蚁金服开发自研数据库与其他专业数据库公司最大的区别在于自身的业务场景。“蚂蚁金服不是数据库公司,而是金融科技公司。OceanBase在蚂蚁金服内部发展的一个基本前提是能够持续为业务创造价值,这是与传统数据库公司最大的区别。”
“以前的困境是开发了很多技术,但是很难找到真正大规模的场景来使用这些技术。但是,在蚂蚁金服这里就不一样了。我们做的技术是业务部门急需的,能真正解决业务痛点的。另外,蚂蚁金服的业务发展很快,也倒逼技术部门把产品做得更好。这是一个正向循环:不断推动技术发展,同时对真实商业场景中的开发结果提供及时反馈。”江志勇说。
作为整个海洋基地的发起人,杨振坤感受最深。“做自研数据库,这真的是头号工程,只有真正得到企业最高层的决策支持才能做。对于业务部门来说,哪个数据库最稳定,最好用,就会选择哪个数据库,因为业务部门的首要目标是发展业务。”为了尝试自研数据库技术,蚂蚁金服的业务部门需要付出代价:修改业务系统,同时支持两个数据库,双方要能随时切换,保证自研数据库出现问题时能切换回原来的Oracle数据库。“所以一开始,业务团队其实对这件事没有正面的理由。”
为什么说OceanBase是阿里巴巴/蚂蚁金服通过整个集团的努力创造的成果?杨振坤一直是分布式技术的专家。2006年从微软到百度,从事分布式系统的研发。对于百度的万亿网页来说,意味着越来越大的数据量,云计算系统有非常好的发展机会。杨振坤在百度做了两年多的自研分布式系统,但是因为百度不想投入更多的资源,最后采用了现成的开源系统,杨振坤的团队解散了。
来到阿里后,杨振坤和其他阿里技术人员一样,需要找到合适的业务场景,带着业务团队负责技术,为自己的技术方向寻求“活路”,同时随着业务的发展壮大自己的技术。淘宝的技术“大牛”大多就是通过这条路成长起来的。在加入淘宝之前,杨振坤对数据库并不是很了解。他本科和硕士都是数学专业,拿到博士才转到计算机专业。所以杨振坤的强项在于基础计算科学。
杨振坤加入淘宝,开始选择自己的技术方向的时候,正好赶上了一个千载难逢的“天时”“地利”。“石天”意味着当时互联网上对数据库的需求激增。以往金融企业使用的Oracle数据库都是提前设计好业务场景的。比如固定给银行柜台和ATM机,服务固定人群,数据库的并发性也很小。原来的数据库有几十到几百人,最多几千人的并发,所以不可能。阿里巴巴双十一和支付宝业务来的时候,突然激增到几十万、几百万甚至上千万人的并发访问量。导致原来的IOE投入不得不放大几百倍甚至几千倍。
而“地缘优势”是指阿里巴巴/蚂蚁金服拥有自己庞大的业务和数据库。“当时我来阿里的时候,‘单机’在阿里体系内已经走到了尽头。IOE等‘单机’性能再好,也有尽头;‘单机’的结束是分布式系统的开始。”杨振坤和他的团队恰好是分布式系统出身,阿里巴巴/蚂蚁金服有上万个数据库。数据库虽然是IT系统的底层,但一旦出现故障,将严重影响整个业务系统,尤其是支付等关键业务系统。但是,阿里内部总有一些业务。因为数据量和自身业务需求等因素,可以先试用自研技术,从而打磨自研技术。
淘宝就是这样一个业务,数据量大,传统数据库很难满足其业务需求。2011年淘宝用户已经达到几千万,就算每个人集齐十个,也要达到上亿。此外,淘宝收藏夹还有一个特点,就是数据库访问的逻辑不会太复杂,这使得OceanBase团队可以在短时间内开发代码并投入生产。如果选择一个非常复杂的业务作为目标,技术团队可能需要几年的时间才能开发出可用的版本,但是业务不可能等这么长时间。
这个项目被命名为海洋基地。相对于数据库,意味着要做一个海洋般的海量蚂蚁金服数据库系统。完成淘宝收藏夹的挑战后,很快就很难在淘宝内部找到类似的商业场景,让OceanBase技术团队继续生存下去。淘宝的核心业务已经应用了MySQL开源数据库,相对稳定。MySQL已经能够满足淘宝的大部分业务需求。到了2012年,OceanBase团队面临解散的危机。这时,王坚联系了当时蚂蚁金服CEO彭蕾,向支付宝推荐了OceanBase团队。蚂蚁金服CTO李成大力支持OceanBase的发展。2014年双十一,李成出面,给OceanBase砍了1%的交易流量,但实际结果是砍了10%,因为当时的Oracle数据库系统实在支撑不了汹涌而来的巨大流量。
由此,OceanBase成功支撑了2014年双十一10%的交易流量。然而,2014年6月,OceanBase技术准备就绪,需要转做交易业务时,OceanBase因为业务系统改造工作量大,两个月无法上线。“8月份,当我很忙的时候,我给鲁肃(李成)和露西(彭蕾)写了一封电子邮件。这件事是后来推动的。”
今天回过头来看,OceanBase是阿里巴巴/蚂蚁金服在整个集团的努力下开发的自主知识产权蚂蚁金服数据库。如果没有阿里巴巴/蚂蚁金服众多高层的全力支持,OceanBase团队可能早就解散了。