不做工程等于纸上谈兵——对话OceanBase创始人阳振坤

导语:谁能想到,一个本科和硕士都在钻研数学的人,会在后来做出世界上第一款原生分布式数据库?在2010年以前,阳振坤自己也想不到会有一天和数据库建立如此密切的关系,更想不到,往后十年是他职业生涯中非常艰难的十年。

采访者/作者:田玮靖
受访者:阳振坤,OceanBase分布式关系数据库创始人
不做工程等于纸上谈兵——对话OceanBase创始人阳振坤_第1张图片
“如果进不去,我们就错过了支付宝“去O”的机会,那么OceanBase再也没有机会了。”

面对采访镜头,阳振坤淡然地诉说着那场生死之战。而他口中的OceanBase数据库,是从出生就不被看好的“孩子”,曾几度站在生死边缘。

不做工程,纸上谈兵

生于1965年的阳振坤,不能完全说他和大多数人一样。一样的是小升初、初升高的学习轨迹,不一样的是,他在1984年考上了北京大学。20世纪80年代,大学有多难考?据历年高考数据统计显示,1984年参加高考的人数为164万,录取人数为48万人,录取率29%。表面看,录取率不低,实则仅约占同龄人的0.0179(据历年出生人口数据,1965年出生人口为2679万人)。相当于100个人里,只有1个人能考上大学,在那个大多数人只能维持温饱的年代,又有很多人因为交不起学费而放弃学业。因此,能够上高中已是“百里挑一”,考上大学更是被称为“天之骄子”。在本科和硕士研究生期间,阳振坤不仅钻研数学,也学习了很多计算机的基础课程,研二参与了北大计算机研究所的项目研发。兴趣使然,他在博士研究生期间,选择了计算机方向。毕业后留校任教,并被破格提升为副教授、教授,时年32岁。

事业顺风顺水之际,阳振坤选择离开学术界,进入产业界。或许是受其博士导师王选院士(中国科学院院士,中国工程院院士,计算机汉字激光照排技术创始人)的影响,阳振坤觉得“不做工程,等于纸上谈兵”。其先后任职于联想研究院 、微软亚洲研究院、百度等。

到此为止,阳振坤的前45年,都跟数据库搭不上边。

做一个“大飞机”

彼时的百度、阿里巴巴、腾讯(俗称“BAT”)这三大互联网巨头,只有阿里巴巴(以下简称阿里)看好云计算。阳振坤作为云计算方面的专家,是阿里急需的高端人才。在阿里合伙人刘振飞的邀请下,阳振坤于2010年 5月12日加盟淘宝网。从淘宝网的内部任命邮件中,足以见得其对阳振坤的爱重:“阳博士是我们期待已久的人才,在系统设计和实现、海量信息处理、算法设计等诸多方面都有着非常丰富的经验。深信阳博士和团队通力合作,一定能为淘宝网打造一个高性能、高可靠、低成本、面向大流量大规模电子商务的专用计算平台,为支撑‘十亿消费者,十万亿交易额’提供所需要的基础技术。”

可他偏偏放着似锦前程,选择了一条最艰难的路——自研分布式数据库。

其实,早在微软亚洲研究院工作时,阳振坤结识了如今的阿里云创始人王坚,并接触了分布式系统,二人都非常看好分布式系统。进入淘宝之前,阳振坤在家待了一个月,期间就在思考下一步要做事情。用他的话说,“当时有一个大致的思考,到淘宝也不确定能不能做这件事,但是有机会。”

彼时,集中式数据库独霸天下,代表产品如美国甲骨文公司的Oracle数据库,更是独领国际市场,阿里便是其在中国最大的客户。而互联网的广泛商用、云计算、大数据、物联网、区块链、人工智能等技术的兴起,加速了移动互联网的到来。在人与人更便捷的互联互通、社会更加智能化的背后,是对业务系统越来越频繁的并发访问、越来越庞大的数据处理量。集中式数据库昂贵的成本及其存储和计算极为有限的扩展能力都显得捉襟见肘。

集中式数据库的本质是单机数据库,在互联网日均流量上百亿破千亿的环境下,单机数据库的存储能力都极其有限,更谈不上如何分析、处理数据。受限于分布式数据库更加复杂、故障定位更加困难、分布式事务性能有所降低、系统成熟度有所不足等因素,传统数据库厂商选择了“分库分表+中间件”的解决方案,即基于集中式数据库,对业务进行较大幅度地改造和拆解、拆分,使每个拆解、拆分后的部分适合于单个集中式数据库,这就是分库分表数据库。这种方式其实是把原来在一个数据库中的大业务拆分为多份小业务,阳振坤称之为“没有大飞机,就分成多份,用小飞机来运”,但如果是重装备、重武器如坦克大炮,小飞机装都装不下。因此,这终究不是彻底解决问题的办法,而且面临高额的成本和繁杂的运维。

阳振坤意识到“机会来了!”于是立项,“方向和目标是明确的”。尽管分布式联机事务处理的开发非常复杂和困难;尽管分布式数据库在SQL优化器、存储架构等方面门槛极高;尽管这个分布式数据库需要长时间的、大量的实际场景打磨;尽管分布式架构与关系型数据库结合,没有任何可参考的先人经验,

“我们要做一个大飞机,不管你有多大的业务量,都能用分布式数据库这个大飞机给你运走”。当系统容量不受限制的时候,一定能做更多的事情。这是阳振坤当时唯一确定的事——价值。

阳振坤的做事方式是“把事情想清楚再做,做到哪算哪就麻烦大了”,只确定目标,如何行动依然是问题。好在做分布式数据库需要哪些功能,其实不用发愁,有现成的如MySQL、Oracle等成熟的开源和商业数据库,功能早就定义好了。也就是说,创建分布式的环境,用多台机器,参考成熟数据库已有的功能列表,实现分布式数据库。

但对于数据库这种基础软件而言,尤其是与传统集中式数据库架构完全不同的、新型的分布式数据库,绝不是把架构搭建好、代码写出来就能应用在业务中的。而是得从一个个具体的业务开始,针对它做基础功能,满足其基本业务需求,然后一步一步将数据库做大、做强。因此,只有找到业务需求带来的机会,切入进去,并且落地,就有机会活下来。

一定要“活下来”

说起来容易,做起来难,阳振坤要做的分布式数据库,是个“难产儿”,根本找不到业务。

好在当时出任OceanBase项目负责人的楚材是淘宝老人,他带着阳振坤走遍了淘宝各个业务技术团队,几天后,终于在淘宝收藏夹这个业务团队找到一丝的机会。

为什么淘宝收藏夹愿意试水?“收藏夹是一个比较特殊的需求,到现在为止,我们也不知道有什么更好的方案能解决它的问题。”收藏夹给淘宝用户提供的服务是,一个人可以收藏上百条、上千条自己感兴趣的商品,商品的信息变化如降价、下架等都需要及时更新,以便用户掌握商品动态。每次用户打开收藏夹,后台系统都要查询数据库成百上千次,获取每个商品的最新信息,这对于数据库来说,相当于几百万、几千万的人在读取数据,再乘百千次的读次数。如此高频的数据处理量,几乎没有什么数据库能够扛得住,经常被用户投诉“没反应”“打不开”。

“我们做了一个比较特殊的架构,后来发现这个架构有非常大的价值”,阳振坤欣喜地说道。简单来讲,商品信息修改不会直接写进硬盘,而是暂存在内存中,每次用户收藏夹展示的时候,只需要从内存中获得修改后的商品信息。相当于将收藏夹原来的成百上千次I/O(输入/输出)变成了一次I/O,原计划需要扩容至数百台机器,现在也只需20多台机器就能解决问题。这极大地减少了机器数量,降低了成本,增强了业务稳定性,初步证明了OceanBase的生存价值。然而,好景不长,在2011年收藏夹上线之后,整个2012年OceanBase都没有找到第二个价值如此显著的业务。阳振坤直言“2012年真有点做不下去了。”

因此,2012年的唯一目标就是,活下来。

顶着团队随时可能解散的压力,阳振坤找到时任阿里巴巴首席架构师的王坚,吐露难处。而后经王坚推荐,在2012年11月15日,OceanBase团队从淘宝调到支付宝。因为支付宝业务是跟钱打交道,对数据的一致性要求更高,所以希望在支付宝业务找到机会。阳振坤知道“如果在支付宝再找不到机会,就完蛋了。” 在“人生地不熟”的新团队,他们一边熟悉人,一边摸索生的机会。

幸运的是,OceanBase团队遇到了一位开明的领导人,时任支付宝技术负责人的程立(花名鲁肃,现任阿里集团CTO),他对新技术持鼓励、支持的态度。恰逢七、八月份的时候,支付宝开始讨论怎样“去O”,即替换Oracle数据库(早在2009年,阿里巴巴就提出了“去O”)。但面临的极大难点在于,如果不用Oracle数据库,不用共享存储,选择类似MySQL这样单机数据库,数据丢了怎么办?在金融领域,这是无法接受的后果。而继续使用Oracle数据库,对于业务数据量、数据并发量都巨大的阿里业务,所要付出的软、硬件成本是无法估量的高昂。

阳振坤胸有成竹地说“我们有办法解决这个事”。这个办法就是如今被广泛应用的三副本,每一笔事务在3个节点或者5个节点上同时做,超过半数成功即认为成功。举个例子,三台机器中坏掉一台机器,剩下两台机器至少有一台机器的数据是正确的,以此方法解决替换Oracle的核心问题,即放弃共享存储之后数据损坏、丢失的问题。

OceanBase 0.5版本由此诞生,也为OceanBase开辟了一条生路。

但阳振坤明白,这只是给了OceanBase一个证明自己的机会。从提出解决方案,到0.5版本正式发布,用了7个月左右的时间。另一边,业务团队却很难一下子接受OceanBase数据库。首先,这个版本没有经过其它业务的验证就应用到核心业务,是否可行?让OceanBase数据库支撑支付宝的交易库,处理交易流水数据,业务团队很难放心。其次,OceanBase技术方案要求三个机房,需要在原有的主、备机房的基础上,再增加一个机房,而当时除了杭州,阿里和支付宝在其他城市都没有三个或以上的机房。

为此,双方几次三番激烈地争论。对于OceanBase数据库来讲,这是一个生死之战,如果不抓住这次落地机会,不仅是错过支付宝“去O”的历史性机会这么简单,而是OceanBase数据库再也没有机会了。所以OceanBase团队当然是极力争取,另一边,业务团队也保持非常谨慎的态度,双方僵持不下。

最后还是鲁肃出面说服业务团队,便有了OceanBase数据库分流1%的机会,如果出问题,1%的流量会被随时切走。回想此事,阳振坤的态度是“我们的运气不错”。2014年“双11”前,大抵是9月底或10月初,业务团队开始为“双11”的支撑做压测,由于流量非常大,已经超出Oracle数据库的预定容量,超出系统的I/O能力,系统大量报错。

由于时间紧张,临时买设备,手提肩扛服务器再次扩容已经来不及。业务团队想起压测时支撑1%流量的OceanBase数据库,找到阳振坤说“给你们10%的流量能不能撑得住?”OceanBase团队当然高兴了:“别说10%,就是100%都可以支撑得下来”。甚至在“双11”当晚的作战室,面对时任蚂蚁金服CEO彭蕾(现任蚂蚁集团董事长)的担忧,阳振坤说出了不成功就跳窗的玩笑话。

结果很顺利,这一战也基本确定了OceanBase数据库在支付宝的地位。用OceanBase数据库替代Oracle数据库之后,单副本数据可以做到原来的1/7,其计算资源投入也降低为原来的1/12,仅存储一项,就比Oracle数据库节省了约20亿元,相当于每账户成本节省了90%。

此后的路便顺风顺水,2015年替换Oracle数据库支撑支付宝的支付系统;2016年OceanBase 1.0版本发布,由原来的半分布式数据库升级为真正的分布式数据库,并于同年替换Oracle数据库支撑支付宝的账务系统,实现了蚂蚁集团的“去O”目标;2017年走出蚂蚁集团,对外商用。

而在对外商用之前,阳振坤要回答一个很关键的问题,别人为什么一定要用OceanBase数据库?

正如前文所述,大飞机比小飞机有价值,但如果别人有小飞机就够用了,凭什么花费工夫替换一个大飞机?

利益是永恒不变的,对于一个初出茅庐的新事物,只有提供足够的价值,才能生存。目前绝大部分的数据库产品分为交易系统和分析系统,两套系统的体量和成本都是巨大的。在业务场景中,两套系统往往也会有延迟。如果用一套数据库,既做交易处理,又做分析处理,就能解决成本和实时同步的问题。阳振坤非常确定,“如果这件事情做成了,极有可能是对整个行业的颠覆,而且这件事情肯定可以做成。”这便是后来引发行业热议的HTAP(Hybrid Transactional and Analytical Process,一体化事务和分析处理)。

未来取决于此

都说不被看好的孩子反而更有出息,2019年,OceanBase数据库打破Oracle数据库保持了9年的TPC-C(在线事务处理基准测试)世界纪录,成为中国首个登顶该榜单的中国数据库产品;2020年,OceanBase数据库再次创下7.07亿TPC-C的性能记录,牢牢占据了榜首位置;2021年以1526万QphH的性能打破TPC-H(数据分析型基准测试)世界纪录(目前排名第二);同年OceanBase数据库在蚂蚁集团的支持下,宣布成立北京奥星贝斯科技有限公司,并再次开源。

为什么是“再次开源”?早在2011年,OceanBase 0.2版本就已开源,但在0.4版本后,OceanBase数据库开源中断了更新。这是因为从当时蚂蚁集团的视角看,OceanBase数据库主要是支撑蚂蚁集团内部的业务,为淘宝、天猫、支付宝等业务服务,OceanBase团队忙于“活下来”而无暇开源事务,所以2013年后, OceanBase数据库开源停止了更新。直到2021年,摆脱所有顾虑的OceanBase更加坚定地拥抱开源,将存储引擎、SQL引擎、分布式引擎、分布式事务、多副本、高性能、扩展能力、优化器、故障恢复、多活容灾等核心技术及代码对外开源分享。

面对业界对其开源动机的声声质疑,阳振坤在《曾被“霸凌”的两个孩子:电动汽车与分布式数据库》一文中,引用《硅谷钢铁侠》这本书中对马斯克开放特斯拉专利的描述,借喻OceanBase开源系统核心的原因。“当马斯克在2014年宣布特斯拉将公开其所有专利时,分析师们试图确定他是不是在作秀或者其中是否隐藏了不明动机或者圈套。但马斯克的决定就是这么坦率,他希望人们制造并购买电动车。马斯克认为,人类的未来取决于此。如果公开特斯拉的专利意味着其他公司能够更容易地制造出电动车,那么这对人类来说是有利的,这些理念应该是免费的。愤世嫉俗的人一定会嘲笑他的观点,但马斯克已经计划好这么做,他在解释自己的想法时是真诚的,而且极为真诚。”

显然,阳振坤认为,原生分布式数据库是数据库发展的必然选择,数据实时处理的未来取决于此。阳振坤也希望出现更多真正的分布式数据库产品,这从国产数据库的角度,有望实现“去IOE”,让更多中国数据库走向国际市场,站在更高的角度,这对数据库生态的发展和科技的进步是有利的。

尾声

如今,OceanBase数据库已积累400多个外部企业客户,涵盖银行、证券、能源、电力、社保等众多重要行业,且没有一家企业后悔使用OceanBase,想换掉它,即便OceanBase用一套系统进行交易和分析处理的功能还在走向成熟。

阳振坤实现了他多年的目标——做一款真正的分布式数据库。

当被问到职业生涯中,做OceanBase数据库是不是最难熬的,以及团队面临解散是否想过放弃时,阳振坤的回答让我们看到了他的坚韧。“是比较难熬,很多时候,你不能把握自己的命运,你知道一件事情是对的,但你想让其他人相信它,是很难的。所以做OceanBase数据库的过程中,我认准一点,只要这个项目没有被‘枪毙’,咱就做,放弃也没好处对吧?如果有一天被‘枪毙’了,咱也没招对吧?反正只要能做下去,我们就做下去。”

本文为《新程序员004》内容,与OceanBase创始人阳振坤畅谈他的程序人生。《新程序员004》即将上市,敬请期待。从MySQL之父、MariaDB创始人 Michael “Monty” Widenius,到PostgreSQL全球开发组联合创始人Bruce Momjian、阿里巴巴副总裁贾扬清、指令集创始人兼 CEO潘爱民、著名科技作者吴军,再到 Vue.js 作者尤雨溪……《新程序员004》以「我们的技术时代,我的程序人生」为主题,与多位国内外知名的技术先锋和新生代程序员代表进行了深度对话,希望行业优秀人物的技术之路与人生感悟给大家带来启发。

你可能感兴趣的:(新程序员,数据库开发,程序人生)