阳振坤:用数学和“顶天立地”的精神,搭建技术高塔

编者按:10月2日,数据库领域最权威的国际机构国际事务处理性能委员会(TPC,Transaction Processing Performance Council)在官网发布了最新的TPC-C基准测试结果。北京大学数学科学学院院友阳振坤团队打造的蚂蚁金服金融级分布式关系数据库OceanBase,以两倍于Oracle(甲骨文)的成绩,打破数据库基准性能测试的世界记录,成为全球数据库演进史的重要里程碑。

新闻网特刊载数学科学学院对阳振坤团队的专访,带您了解OceanBase成功背后的故事。

10月2日,一个由中国人自己研发、拥有100%自主知识产权的中国数据库登顶世界数据库榜单!它正是由北京大学数学科学学院院友阳振坤带领团队打造的蚂蚁金服金融级分布式关系数据库OceanBase,它以两倍于Oracle(甲骨文)的成绩,通过数据库领域最权威的国际机构国际事务处理性能委员会(TPC,Transaction Processing Performance Council)最新的TPC-C基准测试,成为全球数据库演进史的重要里程碑!

阳振坤1984年进入北大数学系,本科毕业后师从数学系张恭庆院士攻读硕士研究生,后师从计算机系王选院士攻读博士学位,毕业后留校任教。他先后担任方正研究院副院长、北大计算机研究所副所长,1997年破格晋升为教授,那年,他仅32岁。而后,立志要把技术做成通用产品,让整个社会都能普遍使用的他,选择离开学校投身社会从事软件工程工作,他随后担任联想研究院首席研究员、微软亚洲研究院主任研究员、百度高级科学家。目前,阳振坤任职蚂蚁金服高级研究员,主持了海量数据库系统OceanBase的研究和开发。

feng1.jpg

阳振坤在中国人民大学作学术报告

十八年燕园时光、十载奋斗征程,感悟“顶天立地”的力量

阳振坤告诉我们,在北大学习和做研究的经历是他宝贵的经历和财富。燕园求学九年、留校科研九年,其间他一边做研究一边做开发,前九年是把基础知识一点点打牢的九年,后九年是则是从事软件研发,不断尝试和积累的九年。他表示,北大的学习和工作经历使得他在科研上不受各种条条框框的束缚,这对于他后来的发展,包括OceanBase数据库的研发至关重要。这个期间对他影响最大的人就是老师王选,王选投身祖国建设,用百折不挠的奉献精神、永不止步的创新精神和决战市场的开拓精神,攻克了汉字信息的数字化存储和输出难关,成为新中国“最美奋斗者”。阳振坤提到,正是因为受到王老师“顶天立地”的思想熏陶,他将“把技术做成通用产品,让整个社会都能普遍使用”作为目标,才得以把OceanBase设计和实现成一款通用的、能够被全社会广泛使用的数据库,而不是像Google的Spanner一样仅供Google内部使用。这种精神与思想也同时渗透到之后近十年技术研发的每一步中。

2010年春夏之际,阳振坤来到了阿里巴巴,正式创立了OceanBase数据库项目。这个项目刚启动的时候,人手严重不足,另外一个更大的挑战是时间。在做OceanBase数据库之前,他去找当时的老板,老板说给他两年时间,如果能把一个数据库做出来就可以。在阳振坤看来,虽然两年时间对于做数据库来说确实太短,但也足以支撑起最初的想法。

技术最终还是需要通过业务落实下去,阳振坤找了一批业务方,花了很长时间跟对方沟通,最后终于有一个业务愿意用他们的数据库。当时对方给阳振坤团队的时间期限是——两个星期。经过反复讨论与沟通,团队花了两个月做了一个demo。业务方看了以后觉得比较满意,事情就这样一直坚持做下去了。最后,阳振坤团队用了八个月时间使系统上线了。这个业务就是现在大家都在用的——淘宝收藏夹,这是OceanBase的第一个业务。淘宝收藏夹当时用了OceanBase的方案后,服务器的数量从原来预估的几百台,最后只用了二十多台服务器就实现了业务需求。

从淘宝收藏夹项目之后,整整两年,阳振坤团队都找不到对OceanBase数据库而言特别有价值的业务。那两年对他们而言特别特别困难,甚至整个团队随时面临着解散。

2012年底,OceanBase从淘宝调到支付宝,阳振坤提到,当时预估到支付宝在数据库方面所面对的挑战更大,后来证明确实如此。即使是这样,当时仍然还处在一个非常困难的时期。到了支付宝一年多的时间,他们仍然很难找到新的业务,或者说价值比较大的业务来证明他们的价值。

2013年的夏天,支付宝希望全面去掉IOE——去掉IBM的小型机,Oracle的数据库和EMC的存储。当时面临了一个问题,就是去掉之后是可以用MySQL来代替Oracle,但是MySQL的主备镜像其实是做不到主备完全一致的。这个时候阳振坤团队意识到:“OceanBase的机会来了。因为我们可以通过分布式的选举跟投票来做,哪怕硬件本身不可靠,我们也能保证数据的不丢失。传统数据库本质上是借助硬件的可靠性,也就是硬件需要达到五个九的可靠性来实现高可用的。就算出了故障,它的数据也能救得回来。但是这种手段需要非常高的成本,同时没有足够的扩展能力。”

2014年,团队在会议室里讨论支付宝交易库的上线,当时大家吵得面红耳赤,争论了很久别人就是不愿意上OB。对方原来的交易、支付系统全都在Oracle上,当时的Oracle无论是在稳定性、可靠性还是性能方面,肯定比OceanBase要好得多,所以没有人愿意用。最后,在鲁肃的力挺下决定切给 OceanBase 1%的流量试试。因为那几年业务发展的太快,当时Oracle的共享存储已经扛不住这个流量,按照当时的业务流量去做压测的时候,几分钟就要坏一块盘。最后发现,把业务切掉10%,才能勉强扛得住。所以那一年的双11就把10%的流量切到了OceanBase。OceanBase也成功扛过去了那一年的双11。

2014年到2016年,整整两年的时间,阳振坤团队投入了40多个人,全部投在OceanBase 1.0版本的开发上。2016年的双11,OceanBase 1.0版本成功在支付宝账务系统上线,支撑起了当年双11中12万笔/秒的支付峰值。

2017年,天猫双11中支付宝首次把账务库在内的所有核心数据链路搬到OceanBase,创造了25.6万笔/秒支付峰值和4200万次/秒数据库处理峰值的全新业内纪录。同年,OceanBase 1.x版本成功在多家商业银行上线,最早的两家客户是南京银行和浙商银行。

2018年9月, OceanBase 2.0版本正式发布,产品不断成熟,全面降低金融业务向分布式架构转型的技术风险。同时,OceanBase不断加速商业化进程,服务了包括建设银行、人保健康险、西安银行等众多金融机构。

2019年10月,OceanBase 荣登TPC-C基准测试性能榜首,成为全世界第一个通过TPC-C审计的分布式无共享关系数据库,也是第一个通过TPC-C认证的中国数据库。

近十年的研究过程中,阳振坤团队遇到过很多困难,当问及在这个过程中团队遇到的最主要的困难有哪些、如何突破时,他告诉我们:大型计算机软件的研制周期很长,需要持续不断的投入,更会遇到各种各样的阻力,越是大成果、大创新,需要的投入也越大,周期也越长,遇到的阻力也越大。交易处理数据库一直是集中式的,而OceanBase却要实现一款分布式数据库,从九年多前项目启动伊始各种质疑始终伴随着OceanBase。项目团队需要不断地证明自己的价值、意义以及项目可行性和前景等等,以减少和打消他人的担心和顾虑。因此研制过程中的“小步快跑”十分必要,即在研制过程中持续不断地产生阶段成果、投入生产应用以产生效益和价值来证明自己,同时使得软件本身逐步提升和完善,也使得研发团队逐步成长和成熟。项目的发展往往呈现迂回曲折前进的特征,在这个迂回曲折前进的过程中,研发团队要始终牢记和坚持项目的根本目标。

数学,技术高塔之基石

当回忆起在北大数学系的学习经历以及对他之后的研究和研发工作的影响时,阳振坤提到,在北大数学系7年的学习,对他之后在软件研发过程中起到了关键性的作用。他说,数学是整个计算机的基础,几乎所有优秀的算法都来自于数学,不仅如此,数学学习过程中的逻辑思维的培养和训练对于软件编码和设计更是至关重要。一个优秀的软件工程师通常有着良好的数学基础。比如,交易处理数据库是一种大型的关键基础软件,数据库承载着银行、交通、通信、企业、政府乃至整个社会的关键基础数据及其服务,数据库事务(transaction)、“数据一条不能错,服务片刻不能停”以及高性能高并发使得数据库成为研发挑战最大的软件之一。然而,跟所有其他计算机软件一样,数据库研发的基础仍然是数据结构、算法、计算机网络、操作系统、分布式系统等,而这些基础的基础依然是数学,是数学分析,高等代数,解析几何,实变函数,复变函数,微分方程,泛函分析,概率统计,拓扑学,图论等基础数学课程。

当谈到OceanBase数据库能超过Oracle的关键是什么时,阳振坤向我们列举了几点OceanBase相较于Oracle所具备的非常关键的优势:

l扩展性

企业客户使用传统数据库(如Oracle)遇到的第一大难题就是扩展性。传统关系型数据库通常都采用集中式架构,多为单机数据库,容量有限,尽管也给出了集群解决方案,但大部分都是share everything(共享存储)的架构,而且产品设计的初衷也是为了解决高可用的问题,本质上还是集中式的数据库系统,并不能满足大规模水平扩展需求。虽然也出现了一些基于MPP架构的解决方案,但通常只能负载数据分析这部分需求。对于集中式的数据库系统,更多强调的是垂直扩展能力,即通过扩展单机的计算和存储来实现计算和存储能力的扩展,但是这种方式很容易达到单台服务器的上限,并且这种方式的扩容通常会花费巨大的成本。

OceanBase作为新一代分布式数据库的代表,采用了Shared Nothing架构,通过对数据进行水平拆分,将数据保存到各台服务器的本地磁盘,不再依赖于高成本的共享存储,从根本上解决了单点性能瓶颈的问题,能够实现快速水平扩展,在线完成扩容、缩容,并且在扩容缩容期间不停机,从而完美的解决了扩展性的问题。

l高可用

高可用是企业客户面对的第二大难题。对于很多客户而言,数据是最核心的资产,是安身立命之本,数据不丢是基本要求。对于传统数据库,城市级容灾是很难做到的,容灾的方法通常是通过数据复制技术来实现的,将数据库分为主、备两种角色,当数据在主库改变后,通过网络发送到备库,通常来说,数据传输分为同步和异步方式,同步方式可以保证数据不丢,但是会对系统性能埋下很大的隐患;而异步模式则存在很大的数据丢失的风险。

OceanBase 通过数据的多副本和Paxos 协议实现日志同步的方式,有效的解决了这个问题。在OceanBase当中,每一份数据都在多地保存了多个副本,依靠Paxos多数派协议在日志层确保数据改变在各个副本之间同步,实现了城市级容灾,集群中少数派故障时数据不丢,服务不停,RPO=""0(少数成员故障),RTO保证在30秒之内,这在业界是非常领先的水平。也达到了国家标准《GB/T" 20988-2007:信息系统灾难恢复规范》中灾难恢复能力等级定义中最高的第6级标准。

在2018年云栖大会上,蚂蚁金服副CTO胡喜现场演示剪断网线,模拟杭州城市级网络故障,系统在26秒后完全恢复,真正诠释了什么是金融级的高可用。

l混合事务/分析处理(HTAP)

企业级应用的业务场景通常可以分为两个类别:在线交易和数据分析,分别称为OLTP和OLAP的典型应用。大型企业往往会选用多种数据库产品,来分别支持OLTP和OLAP类的应用。这种组合式的解决方案,需要数据在不同产品间进行流转,数据同步过程带来了复杂性和不一致性。而不同数据产品中存储的多份数据,带来了数据冗余的问题和很高的成本开销,一定程度上限制了企业的发展。HTAP数据库的概念应运而生。一种数据库,既能够支持OLTP,又能支持同一份数据之上的OLAP,一站式地解决企业级应用的各种需求。

OceanBase就是这样的HTAP数据库。OceanBase 自主研发的SQL引擎和分布式并行计算框架,已经能够很好的利用同一个引擎来支撑混合应用的场景,并且已经在蚂蚁金服内部成功的替换掉了Oracle。最后需要强调的一点是,OceanBase是100%自主知识产权的中国数据库,是真正的中国人自己研发的数据库。

阳振坤还提到: OceanBase也有很多不足,比如目前OceanBase的单机性能还有很大的提升空间;另外,OceanBase支持的功能、易用性、数据库生态相比业界标杆还有一些差距,也成为了他们未来努力的方向。

最后,他也寄语学习数学的同学们:哪怕你今后并不从事数学研究,良好的数学基础都是你成就卓越的关键因素之一。希望大家努力学好数学的基础课程,尤其是大学阶段的数学课程,为将来的工作奠定坚实的基础。

本文由任燃、李琦整理。

转载本网文章请注明出处