“一个24岁的数学学子决定去写代码,一写就写了三十多年。”
作者丨赵之齐
编辑丨胡敏
十一年前,阿里“双十一”的备战室里,国产自研分布式数据库OceanBase的创始人阳振坤站在推开的窗边,向时任蚂蚁CEO的彭蕾“承诺”道:
“(OceanBase)出了问题,我们就准备从这跳下去。”
把自身与OceanBase成败绑在一起的阳振坤,就是用这样的决心,让OceanBase从一个简单的存储系统,成长为国产数据库的一大领头产品,且通过TPC-C基准测试、击败连续九年位居榜首的Oracle。
一个多月前,2025年5月12日,OceanBase公司发送全员内部信,宣布阳振坤荣誉退休。
退休那天,这位60岁的程序员,依然没有自己的独立办公室,也没有助理。在日常工作中,他和年轻同事们一起在工位上看代码,也自己贴发票报销。
而此前一天,5月11日,正是他入职阿里的第十五周年,也是OceanBase诞生的第十五年。在向雷峰网回顾OceanBase的经历时,起初短短五六分钟陈述里,阳振坤提了不下十次“困难”,但好在,团队最终还是证明了自身价值。
最初的困难是,怎么在集中式数据库盛行的时代里,说服阿里高管投入大量财力与人力,做一款分布式数据库。
而在获得吴泳铭“给你两年时间,证明OceanBase的可行性”的批准后,接踵而来的第二个困难是,怎么赢得各业务线的信任、用业务打磨OceanBase的能力,并在阿里内部证明其价值。
随后,当OceanBase在阿里广泛使用后,如何对外服务、创造更大的商业价值,又成了阳振坤的心头重要事项。
重重挑战过后,后来的故事人尽皆知:OceanBase成功了,不仅在技术上登顶世界,商业化的齿轮也运转起来,2020年独立为公司,2023年在金融行业营收规模2.7亿人民币,在金融行业本地部署市场中,份额第一。
OceanBase在技术与商业领域的双线并进,是阳振坤带领团队在一个个考验前做出的重要决策,也源自他铭记于心的恩师王选的教导:技术顶天、市场立地。
从国产数据库不被看好的当年,到国产自研雨后春笋般爆发的如今,阳振坤带领OceanBase的成长史,也是国产云数据库发展15年的重要缩影。深耕计算机领域三十年的他,如何带领OceanBase度过一个个难关?他和OceanBase互相成就的这一路,又有怎样的故事?
阳振坤
01
坚持分布式的“梦想家”
Oracle九年来第一次痛失TPC-C基准测试榜首之位,就是败给当时在公众视野里还初出茅庐的OceanBase。
这个看似半路杀出的“程咬金”,从2010年起锤炼自身,已蛰伏等候此刻多时。其强大的产品实力背后,是阳振坤正确的判断和团队共同的坚持。
故事的开始,阳振坤做对的第一个决策是,在集中式数据库盛行的年代,坚持分布式数据库的道路。
这一切,可以从2010年说起。
2010年,阳振坤难得地给自己的人生放了一个月的假,陪陪家人,捋捋未来的计划。就在当时,阿里的刘振飞向他递出了橄榄枝。两人此前在微软一起共事,彼时刘振飞正负责淘宝的后台系统运营管理。
阳振坤去了阿里面试,面试官是吴泳铭,他后来第一个直属上司。2010年5月11日,阳振坤入职阿里,在基础架构部门,职级是P11。有说法称,阳振坤加入淘宝后,本可以加入快速发展的淘宝业务团队,主管技术,但纠结再三,他还是选择并不那么好走的自研路子。
入职后大约一周,开发一款分布式数据库的创想便逐渐成型。阳振坤向当时淘宝技术负责人吴泳铭提出这个想法。
深知数据库成长需要周期的他,已感时不我待。但在集中式数据库为主流的年代里,如何说服别人,给他这个没有数据库背景的人,一个尝试做分布式数据库的机会?
阳振坤给出的论点之一是,数据库在集中式这条路上已经走到尽头,接下来一定会往分布式走;且传统单机数据库缺乏扩展能力和高并发能力,对于离不开关系数据库的互联网来说,分布式数据库“怎么看都是一件需要做的事”。
并且,当时阿里内部数据库的数量高达6500个,大量的业务场景和数据需求令他心向往之,相信其中蕴含打磨出分布式数据库产品的可能。
但,同样不可或缺的,是身处“去IOE”(IBM小型机、Oracle数据库和EMC存储)节点上的阿里,提供的“地利”。
早期,阿里是Oracle在亚洲最大的客户之一,Oracle会在官网上长期展示阿里的logo,阿里内部也有许多获得Oracle认证的顶级工程师。
然而,2009年开始做“双十一”的淘宝,数据量激增,让Oracle已有些捉襟见肘:Oracle数据库最多支持20个节点的共享模型,但阿里的数据量需要几十万台服务器。阿里需要能力更强的数据库。
后来阿里的成长速度,也证明这步预判是正确的:2009年成交金额只有大概5000多万的“双十一”业务,在2010年已达到9亿多,到2019年有2600多亿,呈几千倍增长。2010年淘宝第二届“双十一”的平台交易笔数每秒峰值就已经达到2500笔,但当时系统的极限容量是每秒3000笔订单。有阿里内部人士透露,2022年前后,在阿里内部使用的OceanBase、PolarDB和ADB数据库系统共使用了约5万台服务器,已远超Oracle的处理能力。
此外,从经济利益上说,Oracle的授权费也过于昂贵,且运行时要依赖高端硬件设备。当时,阿里高层发现公司每年在IOE上的支出,呈现惊人的增长——小型机、高端存储加上Oracle的各项费用,一套可能要两千多万,阿里每年要给IOE三家美国公司几乎200亿元采购费,这样下去,阿里可能变成“给IOE打工”。
而立志要成为一家科技公司的阿里,也需要建立自身技术根基。确定“去IOE”的战略后的初期,阿里还想从已有的MySQL开源数据库发力。但公司随后意识到自研的重要性,在飞天系统、OceanBase数据库等一系列技术根基建立过程中,也锻炼了许多数据库、中间件等相关研发人才,让阿里云得以在2015年之前就打下技术和产品优势,对其后来席卷云计算市场至关重要。
当时和阳振坤一样相信分布式的,还有王坚——他是阳振坤在微软的老板。阳振坤在2010年加入阿里后,有一段时间也向王坚汇报,在微软时,两人便已看好分布式的未来。而此前阳振坤在百度工作时,也深入学习了Google的分布式存储和数据库模型。在分布式的坚持上,他有底气敢为人先。
想法有了雏形后,阳振坤随后又花了两周时间找客户、再花了两周在代码上做简单的原型论证。种种“天时地利人和”,加上早期阿里内部创新氛围浓厚,吴泳铭也乐意授权各团队自下而上搞创新,他提出的唯一要求是:两年内证明这个项目的可行性。
至此,立项已成。那之后花了十多年长出累累硕果的OceanBase,起初的立项只花了六个星期。
02
与业务磨合:如履薄冰六七年
数据库产品能力的提升,常面临“先有鸡还是先有蛋”的尴尬:没有业务的磨炼,数据库难以成长;但不够成熟的数据库,又难获业务信任。
尤其在阿里内部,业务线领导要自己背负业务指标,冒险把业务交给一个从0开始的自研项目,相当于自愿站到了悬崖边上。
这一点,阿里云飞天系统的第一个客户阿里金融已深有体会:当时深受折磨的阿里金融掌舵者胡晓明,便带队高管们,在2011年12月31日晚上来到阿里云,向阿里云高层们鞠下无言的一躬,以求过一个不被飞天报警铃声打扰的安稳的春节。(无言鞠躬背后如何风云暗涌?欢迎添加作者微信Ericazhao23了解)
有了这一“前车之鉴”,各业务线对新技术的加倍谨慎自不必说。攻略业务线的老大,是从淘宝内部成长起来的OceanBase,避无可避的难关。
阳振坤自然担起这一重任。回顾当时,他笑说自己“好像个大龄推销员”,对淘宝内部的业务技术团队逐个登门拜访,“推销”到口都干了之后,终于遇到一个愿意尝试的项目:淘宝收藏夹。
之所以有机会,是因为当时淘宝收藏夹面对的性能瓶颈,内部还没有别的办法解决——
用户每次打开收藏夹时,系统都要检查商品价格、在线情况等状态变化,因此,数据库就要频繁访问硬盘数据。如果很多用户同时访问收藏夹,数据库的计算量和I/O需求就会大幅增长。要是访问硬盘上100个不同的位置,就要读取100个不同的“块”(Block),每读一个块可能需要1毫秒,用户打开读取淘宝收藏夹的速度就会变得非常慢。
然而,如何让业务团队相信,初生的OceanBase能解决这个问题?
“数据库只要出一次问题,就永远没有信用,哪怕会给业务带来好处,也没有人敢用了”,阳振坤向雷峰网说道。在他眼中,业务团队给出的每一次磨合机会,都是不可失手的关键战役。
深谙此理,阳振坤带着满满诚意和一套切实的解决方案,拜访了淘宝收藏夹的主管魏虎。
他首先向魏虎阐述了自己的观察:淘宝收藏夹大部分数据的特点是,数据总量大,但每天的修改量很小。因此,可以尝试把每天业务低谷期(如凌晨两点之后)修改的数据,先放在内存里,到下一个低谷期(例如两点)时,再把当日修改跟原来的数据做大合并写回去。
但这一切变化只发生在后台,作为用户,在前端依然可以实时看到更新。
要了解这个做法的创新,就要先了解硬盘和内存的区别:硬盘中的数据需要基于“块”的方式读取、顺序访问,即便只需要读取其中一条记录,也要把整个块读取出来后再找到需要的记录,早期硬盘中,一个块的大小通常为512字节。而内存则能随机访问设备,可以直接访问任意一个字节的数据,速度更快。
假设用户收藏的100件商品存在多个不同的定常块里,原来的方法,只要用户有修改,就得把硬盘里这个块读出来,在内存改好后写回去,下个客户来读,又得从硬盘上检查每个块的修改情况。而新的方法中,修改都存在内存里,当用户访问时,只需快速访问内存了解数据修改的情况,并和原来的数据合并,给用户展示。
两种操作的核心区别是:减少大量重复的动作,大力提升收藏夹运行的效率。
这个方案俘获了淘宝收藏夹团队们的心。在他们的催促下,阳振坤团队开始了验证测试。
团队在两个月左右进行简单版本的测试,验证可行;再花六个月完成第一个正式版本,在生产环境中试运行。试运行四个月后,方案正式投产。前前后后,花了将近一年时间。
而运行OceanBase之后的淘宝收藏夹,从原需32台服务器,减到了14台,其中,12台处理静态数据,2台负责动态数据。
淘宝收藏夹和OceanBase的这场相遇,可以说是一场双向救赎。从此,OceanBase站上了数据库产品的起跑线,而直到今天,淘宝收藏夹仍是OceanBase的用户。
然而,OceanBase确实也只是刚刚站上了起跑线,阳振坤直言,当时数据库的功能“连1%都没做好”。
他开始在内部寻找第二个大型业务。
阳振坤曾将目光投向淘宝购物车,但购物车对淘宝而言是几乎不可容错的核心部分,谨慎定夺后,他还是没有迈出这一步。
那一年里,他依然跑遍了业务部门,但没能幸运地获得第二个像淘宝收藏夹一样具有代表性的业务。永远卡住的一个环节是:如何向业务部门展示OceanBase的价值。
他们在忙忙碌碌中度过了第二年,2012年秋天,本该是收获的季节,但OceanBase再也找不到新的业务,项目面临关闭风险。即便是CTO吴泳铭,也难以直接干涉业务部门的产品使用抉择,对此爱莫能助。
就在此时,王坚牵线,建议他们去到如火如荼开展“去IOE”的支付宝。
两年期限临近的关头,阳振坤果断抓住这次“复活”机会,带着OceanBase团队,在2012年11月15日来到支付宝。
彼时,冯春培(花名孔丘)和程立(花名鲁肃)等人已经解决了稳定性的问题,让支付宝实现100%的运维可用率。需要解决的新问题是:大量使用Oracle数据库的支付宝,如何降低软硬件的成本?
当时,支付宝尝试给出的打法是用MySQL+普通PC机替代。然而,普通PC机的故障率远高于IBM小型机和EMC存储,会让系统的可用性显著下降。
这个扔到阳振坤面前的难题,并非一块好啃的骨头:淘宝的数据库出问题,最多只是用户暂时无法购物,可以通过工作人员的及时修复和诚恳道歉重获用户支持;但在支付宝的“钱”上出问题,失去的用户信任将无可挽回。
就连当时非常看好原生分布式数据库前景的支付宝CTO鲁肃,也问过阳振坤:“你如何保证OceanBase不弄丢支付宝用户的一分钱?”
阳振坤被这个问题问懵了。但他接下挑战,带着团队探索新的方法。
鲁肃这个问题背后的逻辑是:如何在降低硬件成本的同时保持系统稳定性?几经摸索后,阳振坤团队引入了Paxos协议技术:让一笔交易用三台机器做,只要有两台机器成功完成,这件事就做成了。这笔账可以这样算:一台PC机出故障的概率如果是千分之一,两台同时坏的概率可能就是百万分之一,三台则是十亿分之一。
这一技术的变革,也是对员工的解放:以前只要主库坏了,不管几点,大家就要几分钟内起来做人工对账,但现在,只要有一两台机器继续工作,系统就能继续运行。能睡上安稳觉,这也一定程度“收买”了业务团队的心。
后来,腾讯、华为等公司在基于MySQL的系统中,也都采用了类似技术。
2014年,OceanBase 0.5版本已经做到“半分布式”系统:所有数据修改都在同一台机器上进行,但读取数据时使用多台机器。并且,其在关系数据库系统上做到单机/单机房故障不丢数据、不停服务,也已经超过了国家标准。
但,三年没有新标杆业务的OceanBase,还是难以避免地开始受到质疑。
要么成功,要么沉寂。种种压力下,阳振坤把赌注,押在了阿里技术人每年的“大考”上:“双十一”。
他向鲁肃自荐用OceanBase替代Oracle,但业务团队并不接招,于是,鲁肃出面,把相关负责人叫过来一起谈:
“OceanBase有什么问题,大家具体指出来,不要说‘感觉不稳定、害怕出问题’这些虚的。”
阳振坤还给时任蚂蚁集团的CEO彭蕾写了封邮件,大力推荐团队产品:“咱们的同学非常优秀:给他们一个信任,他们会给我们惊喜甚至奇迹,我们认为技术上做不到的,他们也能做到……”
经历长达半年的切磋谈判,最终,OceanBase争取到了1%的流量测试机会。
命运眷顾有心人,就在那年,Oracle无意中也给OceanBase的成长“推波助澜”:在“双十一”前夕的压力测试中,数据量一上到90%,Oracle就报错崩溃。情急之下,业务团队只好找到阳振坤:“给你们10%行不行?”
团队喜出望外,临危受命。
“双十一”流量的10%,基本就是淘宝平时100%的流量。OceanBase能否承住这份压力?众人瞩目下,就有了2014年OceanBase“双十一”作战室里的名场面:
当晚,时任蚂蚁集团CEO的彭蕾鼓励团队之际,也询问紧张备战的团队们:“有没有信心?”
恰好站在窗边的阳振坤,推开了窗,摸不出几分玩笑几分真,只是说道:
“出了问题,我们准备从这跳下去。”
所幸,OceanBase顺利地度过了双十一,在全场的掌声中,阳振坤心知这背水一战终是成了。一战成名,OceanBase逐渐接下了大淘宝100%的流量。
在这之后,团队继续实现起初打造分布式数据库的承诺。
如前所说,当时的OceanBase还是“半分布式”系统:只是写入一个单点,让所有数据的修改在同一个点上,避免复杂性。在阳振坤看来,这种做法短时间内能支撑支付宝的交易需求,长远来看不可持续。
2014年9月之后,团队开始将其升级为完全的分布式数据库系统——每个节点都可以再做修改,节点与节点之间平等,没有什么特殊。
这步升级,花了整整两年时间。
直到2016年初,OceanBase系统开始替换支付宝最核心的账目系统中的Oracle数据库。这之后,完成所有项目的替换只是时间问题,“最困难的部分已经完成了”,阳振坤感慨。
产品能力逐渐成型后,他开始把眼光放到外部商业化上。
03
内外“交困”:费口舌不如跑分
“在公司里做一件事,你终究得证明自己有价值”,阳振坤向雷峰网说道。
在大厂中成长起来的数据库,一个天然的可得优势是,能用公司内部成熟的业务磨练产品。然而,这块硬币的另一面是,需要把握“满足业务团队高定制化需求”与“打磨自身数据库产品通用能力”之间的平衡。技术团队与业务团队的期望,常常出现巨大鸿沟。
并且,2016年前后,OceanBase还受到过阿里内部其他数据库的挑战,经历了一场“华山论剑”:嬴者才有继续做数据库的权利。(更多幕后故事,欢迎添加作者微信Ericazhao23交流)
鏖战过后,各方打平。尽管如此,OceanBase这个数据库老大哥或许也进一步意识到,是时候走出阿里这个“舒适区”了。
为了更好提升数据库功能,为了一定程度上保持OceanBase的自主性,也为了证明数据库产品的价值,2016年底,阳振坤开始带队做外部业务。
2017年,OceanBase获得了第一个外部客户,南京银行,也是互联网金融相关业务。
但早期获客举步维艰,2020年前后国产数据库赛道在卷的“自研”,此前在用户眼中是“不靠谱”的代名词。彼时OceanBase名气不足,质疑声多得团队成员的耳朵都快被磨出茧子:
中国的数据库领域已经发展了几十年,但还没有哪个数据库真正做得成功,你们怎么就成功了?Oracle这么多年都没做出分布式数据库,你们怎么可能做出来?
当时团队规模也就百十来人,“百”口莫辩之时,阳振坤做了一个决定:跑分。
数据库也有自己的全球性能排行榜,若能登榜,OceanBase的能力不证自明。但这并不容易,至少在当时,中国还没有数据库能通过TPC-C基准测试,而Oracle已经稳坐第一名的位置,九年。
初生牛犊不怕虎的OceanBase,在2018年报名参加了这项测试,开始打榜。经历长达一年审核后,2019年10月2日,结果公布:OceanBase通过了测试,击败Oracle登顶。
至此,OceanBase这个既能做交易、也能做分析的HTAP数据库新星,在公众视野中冉冉升起。蚂蚁高层也正式决定,OceanBase作为一个单独的公司独立运营。
下一个重要的决策,是开源。2020年6月正式成立的OceanBase公司,9月开始进行文档代码整理,在第二年6月正式开源。开源尚未成为主流的当时,把数据库开成“白盒子”,也是阳振坤团队为消除客户不信任感和陌生感的努力。
但OceanBase的成长并未就此停下。
生长于阿里的OceanBase,为大客户量身定制,起初开拓的外部客户,如南京银行,业务量也很大。但随着接触企业范围扩大,阳振坤观察到,中小型用户的五十个业务里,可能只有两三个业务单机系统做不了、需要分布式,若一概使用分布式系统,对他们来说成本过高。因此,OceanBase也开始针对中小客户的需求优化,提出“单机分布式一体化”概念。
通俗点讲,就是让分布式和单机系统同时存在,企业可以把规模小的业务用单机系统跑,业务量扩大时再叠加更多机器。这种系统在高配置和低配置下都保持不错性能的打法,避免“用高射炮打蚊子”,但要求团队付出更多精力技术调优。
阳振坤常挂在嘴边的一句话,是他的恩师王选的重要教导:“顶天立地”。拆开来讲是,技术顶天、市场立地。
也因此,他对OceanBase的发展规划,并不局限在技术层面的提升,而是积极走进市场、在市场的检测下调整优化。这也是OceanBase突破重重难关,获得今日成功背后的逻辑。
2006年在百度就开始追随阳振坤脚步的杨传辉,现在是OceanBase的CTO,他感慨:“如果一个问题,阳老师想了好多天还是无解,那这个问题肯定无解,因为有解的话,他一定能想到解决办法。”
04
职业生涯中,三次“重启人生”
时间来到2025年5月12日,阳振坤荣誉退休。回头看,30多年前,站在王选办公室外忐忑的那个24岁年轻人,或许也难以想象,自己那天敲开的通往计算机研究所的大门,会指向一个如此瑰丽又广阔的未来。
1989年春天,在北京大学计算机研究所实验室隔断出来的一个小隔间里,阳振坤第一次见到了王选。在这个简朴的办公室里,修完大学课程只用了三年、硕士只用了一年多的阳振坤,向王选表达说,希望能成为他的学生。
王选的一个允诺,让阳振坤跟着他做了13年的激光照排。那是他人生第一次转变赛道、重启。1995年,阳振坤所在的团队获得国家科技进步一等奖,1997年,32岁的他被破格晋升为教授。
2002年,互联网发展迅速,抱着对社会第一线工作的好奇,阳振坤离开了大学,在36岁闯入工业界,开始第二场新的尝试。他去到联想研究院担任首席研究员,负责无线通信领域的研究;后来又接触分布式系统,在微软亚研、百度从事相关工作。
阳振坤来到百度是在2006年。他最先学习了Google开发的两种分布式存储和数据库模型,Bigtable和Spnaner,并用C和C++写了一套凤巢系统,基本类似于2009年阿里做的ODPS系统。当时国内几乎还没有人做类似项目,团队对这个方向都信心满满。
在团队成员的记忆中,那时出去讲分布式系统的概念,就像现在和别人讲量子计算,听者都一头雾水。
然而,两年一过,这个项目就被放弃了——因其两年内还不能在核心业务应用,被认为不能主力投入。
后来在阿里的经历则比较幸运。两年的时间窗口里,阳振坤不需要背负KPI,得以专心研发,锻造出职业生涯中最恢弘也是最辛苦的项目,OceanBase。能把这个项目做成,绕不开的,是阳振坤奠定下的极客基因。
在面试新人的过程中,阳振坤常常会拿出一张纸,给面试者画OceanBase的框架图,像布道者。也有OceanBase内部人员评价,阳振坤追求做出“面向未来的东西”,要更强壮、更有扩展性。因此,只要精力足够,做得不够好的部分,团队总会不断推掉、重来。
互联网大部分项目周期是两周,但数据库的发展没有三五年,往往也难以真正落地。内部业务催得紧,有时连团队内部成员也颇有微词。与时间进行毫无悬念的赛跑时,阳振坤也常需要安抚人心。曾有新加入团队的年轻人向阳振坤抱怨说,合租的室友在天猫工作,做网页熬一两周就看到成果了,但自己的付出却好像离收获遥遥无期。
对此,阳振坤给出的回答是:“再过三年,你做的数据库天猫还在用,但他改的网页早就看不到了”。
做学问出身的阳振坤,对产品本身之专一,令他对这之外的一切,包括管理,都不买账。种种光环下,他依然维持最简单的一面示人。有客户对他印象最深刻的,是会面时穿着凉鞋的形象。团队成员们有时会笑评:“60岁的科学家,像个农民一样。”
九十年代时,阳振坤曾跟着王选去美国,在IBM的研究中心里,他看到很多程序员即使白发苍苍,也依然坐在办公室,敲键盘写代码。
那是阳振坤心目中程序员应该有的样子。
国产数据库起步最艰辛却也满怀希望的过去十多年里,阳振坤一直坐在他的办公桌前,日复一日地面对那些视如己出的代码。年过花甲的他,已悄然将自己活成那幅画面中的一部分。
作者持续关注云计算、数据库、AI等相关领域,欢迎添加微信Ericazhao23交流。