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

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

采访者/作者:田玮靖
受访者:阳振坤,OceanBase分布式关系数据库创始人

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

“如果进不去,我们就错过了支付宝“去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》以「我们的技术时代,我的程序人生」为主题,与多位国内外知名的技术先锋和新生代程序员代表进行了深度对话,希望行业优秀人物的技术之路与人生感悟给大家带来启发。
————————————————
版权声明:本文为CSDN博主「《新程序员》编辑部」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/program...

点赞
收藏
评论区
推荐文章
字节小站 字节小站
4年前
干货|详解位图算法在Android RecyclerView中的应用
1.前言1.1关于算法金庸武侠小说中的主人公在成为绝世高手之前,都会学习一门玄门内功。郭靖有了全真派的内功才能修炼九阴真经、虚竹得到了无崖子的毕生功力后,武学造诣日渐精进、张无忌苦练五年九阳神功,日后才能融合乾坤大挪移。对于程序员,算法就是小说中的内功,编程语言就是不同门派的武功。张无忌因为有九阳神功加持仅用一天就学会了阳顶天几十年都学不成的乾
Stella981 Stella981
3年前
Node.js 开发实践,前端工程师的 MVP 利器
!(https://oscimg.oschina.net/oscnet/c2250098bead4599a9de8b97c4c61c63.png)本文经作者授权转载至公众号 “Nodejs技术栈”,作者:愚坤,掘金优秀作者,一名没上高中的前端工程师,目前就职水滴筹。什么是MVP,来自伟大的百科:MinimumViabl
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Stella981 Stella981
3年前
Gson之实例五
前面四篇博客基本上可以满足我们处理的绝大多数需求,但有时项目中对json有特殊的格式规定.比如下面的json串解析:{"tableName":"students","tableData":{"id":1,"name":"李坤","birthDay":"Jun 22, 2012 9:54:49 PM"},{"id":2,"name":"曹贵生"
Easter79 Easter79
3年前
TiKV 源码解析系列文章(十二)分布式事务
作者:周振靖在之前的文章里,我们已经介绍了TiKV的Service层(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fpingcap.com%2Fblogcn%2Ftikvsourcecodereading9%2F)、Storage层(https://www.
Easter79 Easter79
3年前
TiDB 4.0 为解决热点问题做了哪些改进?
作者:李坤热点问题概述一直以来,TiDB的数据访问热点问题,是用户比较关注的问题。为什么这个问题如此突出呢?这其实是“分布式”带来的结构效应。单机数据库由于只有一个节点,是不存在热点问题的(因为性能的上限就是单机的处理能力),而分布式数据库集群存在多个节点,在达到存储扩展、读写能力扩展的目的上,我们希望大量的读写压力能够平摊在每个节点
原生分布式数据库与子数据库子表中间件的区别
无论是分库分表中间件还是原生分布式数据库,目的都是为了解决数据容量问题,但实际上两种方式有本质区别。那么,具体来说,原生分布式数据库(https://www.oceanbase.com/product/oceanbase)有什么区别,它们的优缺点是
京东云开发者 京东云开发者
8个月前
架构师日记-从数据库发展历程到数据结构设计探析
一数据库发展史起初,数据的管理方式是文件系统,数据存储在文件中,数据管理和维护都由程序员完成。后来发展出树形结构和网状结构的数据库,但都存在着难以扩展和维护的问题。直到七十年代,关系数据库理论的提出,以表格形式组织数据,数据之间存在关联关系,具有了良好的结
京东云开发者 京东云开发者
6个月前
并发编程体系概述
作者:京东自有品牌周振|类别|定义|特点|应用场景|Java中的使用||||||||进程(Process)|计算机程序在操作系统中执行的实例|独立性强、拥有独立的内存空间、创建和销毁开销大进程间通信复杂|独立的应用程序高隔离性任务,如数据库服务器|Java
京东云开发者 京东云开发者
5个月前
cursor无敌了
作者:京东物流董振阳0、CursorIDECursor是一款基于人工智能的代码编辑器,创建了一个集成开发环境(IDE)。旨在帮助开发人员编写代码,并于AI进行实时互动,提供写代码建议、错误检测和自动补全功能。支持多种编程语言(如Python、JavaScr
京东云开发者 京东云开发者
2个月前
一文了解MySQL索引机制
作者:京东零售李泽阳接触MySQL数据库的小伙伴一定避不开索引,索引的出现是为了提高数据查询的效率,就像书的目录一样。某一个SQL查询比较慢,你第一时间想到的就是“给某个字段加个索引吧”,那么索引是什么?是如何工作的呢?一起静下心来,耐心看完这篇文章吧,干