厉害了,蚂蚁金服!创造了中国自己的数据库OceanBase(上)
摘要: 两万字长文带你了解关于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研发和运维组成的几十人的团队。2016年的世界互联网大会,OceanBase入选世界互联网领先科技成果,其它获奖公司还包括特斯拉、IBM、微软、卡巴斯基等。
在6000多名蚂蚁员工中,这几十个人辨识度很高,因为只有他们的工牌带是“土豪金”,而其他所有人的工牌带都是清一色蚂蚁蓝。“土豪金”工牌带是蚂蚁金服内部最高荣誉——CEO大奖。2016年5月,蚂蚁金服董事长彭蕾亲自为这几十位技术明星戴上了“土豪金” 工牌带,理由是这个小团队自主研发的OceanBase数据库,以远低于传统数据库的成本,更高的可用性,扛住了支付宝一次又一次自我刷新的支付峰值世界纪录,打破了IT核心技术长期被西方垄断的格局。
从2017年开始,OceanBase跟随整个蚂蚁金服的金融科技开放,开始了向传统金融赋能的实践过程。2017年年底,OceanBase在南京银行正式上线,OceanBase数据库为南京银行“鑫云+”互金开放平台提供金融级分布式关系数据库服务。OceanBase还出口到了印度和美国等地,为当地的支付业务提供数据库服务。作为蚂蚁金服自研的分布式关系型数据库,OceanBase从一开始的目标就是传统商业数据库的升级换代产品,并坚持走通用关系数据库产品之路。
经历了7年坎坷、成立的头三年一直被边缘化、多次面临解散的OceanBase团队,如今虽然集体戴上了“土豪金”,可是他们都知道OceanBase这样的中国技术奇迹,是阿里巴巴/蚂蚁金服举全集团之力所创造出来的成果,这个过程本身也堪称“奇迹”。2018年2月初,OceanBase团队的主干成员阳振坤、冯柯、陈萌萌、蒋志勇、杨传辉等与笔者展开了深入的交流,介绍了OceanBase的来龙去脉。
OceanBase:划时代的数据库
▲OceanBase 团队SQL开发方向负责人 陈萌萌
为什么OceanBase能够入选世界互联网领先科技成果,能够进入IBM、微软等世界科技巨头行列?
首先,简要回顾一下基础软件历史。自1975年微软公司创立、1977年甲骨文公司创立后,逐渐出现了商用操作系统和商用关系型数据库产品。再加上1995年创立的BEA公司及其代表的商用中间件产品,传统基础软件的核心技术:操作系统、中间件和数据库,就此诞生。
除了BEA公司于2008年被甲骨文公司收购外,为什么后来全球再也没有企业能够超越微软和甲骨文公司的操作系统与数据库及中间件产品呢?
这其中的原因很多,除了最早投入、培养了最多的相关技术研发人才和技术积累外,更重要的原因在于作为全球化的商用软件产品,无论是微软的操作系统还是甲骨文的数据库,都是伴随着全球用户集体使用、集体反馈、集体推动技术进步而打磨出来的。
实际上,无论是操作系统、数据库还是中间件,本质上都是软件和硬件集成在一起的优化技术,其目的就是通过软硬件集成调优来达到计算效率最大化、成本最优、用户体验最佳、兼容性最广、安全与稳定性最高等结果。以甲骨文公司的Oracle数据库为例,其广泛支持并行机、大型主机、小型计算机、工作站、个人电脑等多种计算设备,允许用户在不同计算设备上使用并迁移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月在美国威斯康辛大学麦迪逊分校获得计算机硕士学位,陈萌萌先后在Oracle、华为美国研究所从事数据库的开发和研究,他于2014年6月加入OceanBase团队。
陈萌萌对于“单机”的视角有一个形象的比喻:就像今天使用PC服务器,要担心如果突然某台PC服务器挂掉了、甚至机房本身遭遇地震、火灾等极端情况,如何保障数据访问的稳定性。由于是完全基于PC服务器架构,OceanBase在处理数据访问的时候,相当于把一台原来的小型机或存储设备从纵向“切片”成很多机器,再把数据分布到这些分散在不同的机器上,数据需要通过网络才能够被访问到。“以前是一个磁盘,现在看到的是几十个甚至几百个分布在不同地方的磁盘,怎么做查询优化?这个访问模式会非常不一样。”
过去的传统IT环境是集中在一个地点的高稳定、高可靠、高可用高端企业级设备,现在的云计算环境是分散在不同地点甚至跨国家区域地理位置的廉价PC服务器机群。OceanBase与Oracle数据库是基于同样的数据库原理,但底层的基础计算环境发生了根本性的变化,这对于像亚马逊、阿里巴巴/蚂蚁金服和谷歌这样的互联网公司来说,有三条出路:一是与甲骨文公司合作,全面开放自己的业务和数据;二是采用MySQL等开源数据库技术进行改良;三是从头开始重新设计一个完全自主知识产权的数据库产品。显然,亚马逊、阿里巴巴/蚂蚁金服、谷歌都不约而同地走上了自研的道路。
这个原因其实很简单,如果与甲骨文公司合作,需要全面开放自己的业务和数据不说,更重要的是互联网公司的快节奏、快响应、快研发、与业务运维并肩开发等特点,已经超越了甲骨文公司等上一代IT公司的企业文化和公司机制。而对于开源技术来说,不同的开源数据库只适用于特定的业务场景,由不同的开源社区“各自为战”式主导各自的技术方向,互联网公司需要针对不同的业务场景拼接不同的开源数据库到一个大系统中,这无疑也不利于长期发展。而走全面自研的方向,是一种最辛苦、看似最不可能却最具长期投资价值的选择。
马云曾经针对阿里自研云计算等新一代IT技术说:“网上很多人批评说我被王坚忽悠了,这个云计算要把5000台计算机合在一起,是根本不可能实现的……腾讯、百度没搞下去,重要的原因是他们的领导知道这个搞不下去。”相反,不懂技术的马云,却最坚定地支持自研云计算等新技术。“想也没想,从预算、人头、资金,我们一路投,最后我们走了出来。”
王坚从2009年开始在阿里搞云计算,阳振坤从2010年加入阿里后开始搞OceanBase,两条线几乎是同时并进。阳振坤回忆,整个OceanBase其实并没有一个产品经理,根本的原因是OceanBase作为商用关系型数据库的升级换代产品,在OceanBase立项伊始就参照商用关系数据库列了一个长达千页的产品功能列表,随后的OceanBase开发过程就是根据这个列表,但却从分布式计算的角度重新实现每一个功能。“直到2018年初,OceanBase还只是实现了这个列表中的部分核心功能,但足以支撑整个蚂蚁金服的业务”,阳振坤表示。从2017年开始,三年之内,OceanBase要实现商用关系数据库的绝大部分功能。
能够与OceanBase类比、可以称为分布式数据库的产品,目前只有谷歌于2017年2月发布的Spanner数据库云服务。陈萌萌认为,Spanner是谷歌从头开始全部自研的分布式数据库,也是针对谷歌的交易业务场景,但总体来说并没有阿里巴巴及蚂蚁金服的交易业务规模大,而AWS推出的Aurora数据库则更接近于Oracle数据库的共享磁盘设计。“真正用分布式架构解决像蚂蚁金服这么大规模事务性需求的分布式数据库,目前我们只看到OceanBase这一家”, 陈萌萌表示。
从第一行代码起步到今天的百万行代码级产品、支撑双十一的十万笔级每秒支付峰值以及蚂蚁金服的全面业务,OceanBase可以说创造了一个划时代的数据库产品。OceanBase是中国第一个具有自主知识产权的分布式关系数据库,也是全球首个应用在金融核心业务的分布式关系数据库。业内人士认为,OceanBase的出现,在高端金融领域打破了传统商业数据库的垄断,为金融科技的国产化进程迈出了重要一步。
OceanBase:划时代的中国技术
▲OceanBase 团队架构师 冯柯
现任蚂蚁金服基础数据部(OceanBase团队)架构师的冯柯,于2014年加入蚂蚁金服,目前的技术领域为分布式关系数据库、数据存储、性能诊断和优化。冯柯在入职蚂蚁金服前,曾在国内数据库厂商天津神舟通用数据技术有限公司(以下简称:神舟通用)任CTO,是浙江大学计算机应用专业博士,具有15年的数据库研发和产业化经验。
作为国内最早一批从事国产数据库开发者之一,冯柯表示国内早期从事国产数据库开发的人们,基本都成为先驱了。以前做国产数据库,更多体现的是国家科研的意志,而不是企业的市场化行为。更为重要的是,自主研发数据库需要的是行业背景和企业实践。“数据库产品是用出来的,不只是被研制出来的。”冯柯强调。专注于国产数据库的国内的数据库专业公司,到后来往往发展的不好,就是因为没有行业属性、没有真正能够找到成熟应用的市场。
“我当时加入蚂蚁金服的时候,觉得蚂蚁金服自主研发OceanBase这件事其实很另类,觉得非常不可思议。而且阿里巴巴原来是开源文化,为什么会完全从头开始做一个数据库,这直到今天还是一个非常奇妙和神奇的事情。”冯柯回忆说,很多人都会问为什么不从MySQL开源数据库入手,“不管是自主研发,还是基于开源产品来做,从技术上面来看,没有绝对的对和错,很多时候是理想主义使然。”
正如马云所说,阿里巴巴/蚂蚁金服对于云计算和通用数据库等自研技术的投入,正是理想主义的结果。在2017年9月的阿里巴巴18周年年会上,马云说:“让阿里巴巴坚持18年的是因为我们有理想主义,坚持理想主义使阿里巴巴走到了今天。”“绝大部分人是因为看见而相信,很少部分人是因为相信而看见,”这是马云在阿里巴巴18周年年会上引用的话,“过去的18年,阿里是因为相信才有今天。”
蒋志勇现在是蚂蚁金服基础数据部(OceanBase团队)SQL组负责人,致力于高可用、高性能、高可扩展性并兼具成本优势的分布式关系数据库系统。蒋志勇于2014年加入蚂蚁金服,之前在神舟通用负责数据库开发长达十年之久。蒋志勇在浙江大学完成了计算机专业的本科和研究生学业后,即加入了中国航天科技集团下面的一家研究所,从事国产自研数据库开发,当时主要为了科研服务的数据库及存储系统。蒋志勇在研究生期间就已经参与到该科研项目中,后来就加入了航天科技集团组建的专注于国产数据库开发的神舟通用公司。
作为国内早期从事国产数据库开发工作的专业人员,蒋志勇认为蚂蚁金服开发自研数据库与其它专业数据库公司开发自研数据库的最大区别在于蚂蚁金服自有业务场景。“蚂蚁金服不是一家数据库公司,而是一家金融科技公司。OceanBase在蚂蚁金服内部发展的一个基本前提,是能够为业务不断创造价值,这是跟传统数据库公司的最大差别。”
“之前的困境是开发了很多技术,但是很难找到一个真实的大规模场景去使用这些技术。但在蚂蚁金服这边就不一样,我们做的技术都是业务部门迫切需要的、确实能解决业务痛点问题的技术,加上蚂蚁金服的业务发展非常快,也逼着技术部门把产品做的更好,这是一个正向循环:不断促进技术开发,同时又能对开发成果提供真实业务场景下的及时反馈。” 蒋志勇介绍说。
作为整个OceanBase的始作俑者,阳振坤的感受最深。“做自研数据库,这真的是一把手工程,只有真的获得企业最高层的决策支持才能做成。对于业务部门来说,哪个数据库最稳定、最好用,就会选用哪个数据库,因为业务部门的首要目标是发展业务。”为了尝试自研数据库技术,蚂蚁金服的业务部门需要付出的代价是:修改业务系统,同时支持两种数据库,两边要能够随时切换,以便保证在自研数据库出问题的情况下,还能够切换回原有的Oracle数据库。“所以一开始业务团队在这件事情上其实并没有积极的理由。”
为什么说OceanBase是阿里巴巴/蚂蚁金服举全集团之力所创造的成果呢?阳振坤一直是从事分布式技术的专家,2006年他从微软到百度,从事分布式系统研发。对于百度数以万亿计的网页来说,意味着与日俱增的天量数据,云计算系统有非常好的发展机会。阳振坤在百度做了两年多的自研分布式系统,但由于百度不愿意再投入更多资源而最终采用了一套现成的开源系统,阳振坤的团队也被解散了。
来到阿里之后,阳振坤与其它阿里技术人员一样,需要找到一个合适的业务场景,跟一个业务团队并负责技术,为自己的技术方向谋一条“生路”,同时随着业务的发展而壮大自己的技术。淘宝的技术“大牛”,大都是通过这条路径成长起来的。在加入淘宝之前,阳振坤其实并不懂数据库,他的本科与硕士都是数学专业,到了博士才转到了计算机专业,因此阳振坤的长项在于基础计算科学。
当阳振坤加入淘宝后,最开始选择自己技术方向的时候,恰好赶上了一个千载难逢的“天时”与“地利”。“天时”就是当时互联网对数据库的需求激增。以前金融企业等用的Oracle数据库,都是事先设计好业务场景,比如固定用于银行柜台和ATM机器、服务于固定的人群,数据库的并发量也很小,原来数据库有几十到几百个人、最多几千人的并发量就不得了,到了阿里巴巴双十一以及支付宝业务的时候,一下就激增到几十万、上百万人甚至是上千万人的并发访问,结果就是要原来的IOE投资要放大几百倍甚至几千倍,“谁都买不起了”。
而“地利”就是阿里巴巴/蚂蚁金服自有庞大的业务和数据库。“当时来阿里的时候,‘单机’在阿里系统内部就已经走到尽头了。IOE等‘单机’的性能再好,也有个尽头;‘单机’的尽头,就是分布式系统的开始。” 阳振坤及其团队恰好是做分布式系统出身的,而阿里巴巴/蚂蚁金服内部有数以万计的数据库。虽然数据库作为IT系统的底层,一旦出现故障就会严重影响整个业务系统,特别是支付等关键业务系统。但阿里内部总有一些业务,因为数据量和自身业务需求等因素,可以先试用自研技术,从而打磨自研技术。
淘宝收藏夹就是这样一个业务,有大规模的数据量,其业务需求传统数据库又难以满足。2011年的时候,淘宝用户已达数千万级,就算每人收藏十条即达几亿条的数量级。另外,淘宝收藏夹业务还有一个特点,就是数据库访问逻辑不太复杂,可以让OceanBase团队在短时间内开发出代码并投产使用。如果选择非常复杂业务作为目标,那么可能需要耗费技术团队几年的时间才能开发出一个可用的版本,而业务却不可能等这么长的时间。
这个项目取名OceanBase,相对于Database而言,寓意要做一个海洋一样的海量数据库系统。完成了淘宝收藏夹的挑战后,很快就难以在淘宝内部找到类似的业务场景,可以让OceanBase技术团队继续生存下去。淘宝的核心业务已经应用了MySQL开源数据库并且比较稳定,MySQL已经能满足淘宝的大部分业务需求。到了2012年的时候,OceanBase团队面临要解散的危机。这个时候,王坚联系了当时的蚂蚁金服CEO彭蕾,把OceanBase团队推荐到了支付宝。而蚂蚁金服的CTO程立,又极大地支持了OceanBase的发展。2014年双十一,程立出面,把交易流量的1%切给OceanBase,但实际的结果却是切了10%,因为当时的Oracle数据库系统确实支撑不了汹涌而来的巨大流量。
后来的结果是OceanBase成功支撑了2014年双十一10%的交易流量。但就在2014年6月份,当OceanBase已经从技术上准备好,需要切到交易业务时,因为业务系统改造的工作量大,导致OceanBase两个月都无法上线。“到了8月份,我急了,就给鲁肃(程立)和Lucy(彭蕾)写邮件,这个事情后来就推动了。”
除了王坚、彭蕾、程立等阿里巴巴/蚂蚁金服等“一把手”对于OceanBase的大力支持外,当时负责阿里巴巴整个后台系统的刘振飞从第一天起就一直是OceanBase的坚定支持者。刘振飞于2006年加入阿里,曾任淘宝技术保障部总监,后来升至阿里巴巴副总裁负责技术保障部、是阿里巴巴合伙人之一,现任阿里集团首席风险官兼任高德总裁。正是刘振飞的支持,才让淘宝收藏夹用上了OceanBase。“当时振飞负责整个阿里巴巴的后台系统,包括数据库,没有他的鼎力支持,OceanBase无法在任何业务上线。”阳振坤回忆。
“甲骨文公司有十几万人,从事数据库核心研发的就有2千多人,而OceanBase一开始只有几个人,到后来也才20多个人,凭什么让别人相信我们能做出比Oracle数据库更好的技术与产品?这个确实听起来就不靠谱。”阳振坤说,这就是鸡生蛋、蛋生鸡的问题,好的产品必须要有好的口碑才会有人用,但好的口碑和好的产品却要在使用中才能打磨出来。数据库是做出来、更是用出来的,中国有那么多企业、高校和科研机构做数据库,真正能够在生产环境中大批量使用的少之又少。
今天回头来看,OceanBase是阿里巴巴/蚂蚁金服举全集团之力而开发出来的自有知识产权数据库,如果没有阿里巴巴/蚂蚁金服内部众多“一把手”高管的鼎力支持,OceanBase团队也许早就解散了。
本文作者:安和林
完整文章敬请期待后续介绍