“如果等会出了问题,我们就从这跳下去!”
说话的人叫阳振坤,OceanBase创始人。他指着作战会议室里一扇打开的窗,面前是时任蚂蚁金服董事长的彭蕾。这是年11月11日凌晨双11开始的前夕,各个团队都在自己的作战室里热火朝天地准备,彭蕾到前线给大伙鼓劲,推开OceanBase的作战室大门,问大家:“有没有信心?”
阳振坤走到窗边,“你看我们窗子都已经打开了”——不成功就跳楼。
时间拉回今天凌晨,被誉为“数据库领域世界杯”的TPC-C基准测试公布最新结果,OceanBase打破自己保持的世界纪录,事务处理性能由上次测试的万tpmC提升到7.07亿tpmC。
前一年,OceanBase首次打破了由美国公司甲骨文Oracle保持了9年世界纪录,成为首个登顶该榜单的中国数据库产品。
从找不到愿意使用的业务濒临解散,到两度登顶世界第一,阳振坤和他的团队走了整整10年。草灰蛇线,伏脉千里。百万行代码在无尽岁月里搭建成数据库的基石,终于在十年后垒成击不破的城墙。
小马拉大车
年,在阿里巴巴合伙人刘振飞的邀请下,阳振坤加入淘宝,一条现成的康庄大道摆在他面前,加入快速发展的淘宝业务团队,主管技术。纠结了三天,阳振坤决定选择自研分布式数据库。
当时淘宝用的是传统数据库,主备镜像无法做到主库与备库完全一致,小型机与共享存储的的购买、安装和调试周期需要三个月甚至更长,机器的生命周期也就3-5年,高昂的软硬件成本注定其服务能力有限。
互联网的特性,决定其访问量在几小时内可能增长数倍,传统数据库的垂直扩展方式疲于应对。往往到了流量暴增,大家才手提肩扛加机器扩容。许多的促销或新业务因为数据库性能不足而被迫取消。
在阳振坤眼里,传统数据库像一匹小马拉着大车,颤颤巍巍颠簸着。他要做就做分布式关系数据库。
一直以来,阳振坤就有个“分布式”的梦。他在微软亚洲研究院期间,结识了后来的阿里云之父王坚博士,在王坚博士的领路下接触到分布式系统。有趣的是,王坚博士重研究,阳振坤重工程,两人经常上午吵完下午吵,当着大家的面吵,私下里也吵。吵完依然看好分布式系统,惺惺相惜。
何谓分布式关系数据库,阳振坤打了个比分,把一个账本记不下的内容,分十个有机结合的账本记。这样即使数据库一天有10亿笔写事务,每笔1KB,总容量也不过1TB,分配到10台机器上,单机GB,这个容量单机完全能够支撑。
理论大家都理解,但是真正的分布式关系数据库,那时还没人做出来过。当时整个淘宝技术人员0人左右,而Oracle有十几万人,就算整个淘宝的技术人员全跑去做数据库,要想造一个阿里巴巴的Oracle,简直是天方夜谭。
顶着不被看好的压力,阳振坤开始着手分布式关系数据库的研发,团队成员有从其他组调来的,也有招聘的,2年后,这个小组才扩展到30余人。每个项目都要有个名字,团队同学把这个项目叫OceanBase,意思是海洋一样的数据库。
自此,这个叫做OceanBase的产品正式开始了它的远航。
平地砌瓦
OceanBase团队成员席华锋回忆,年他刚进团队,主要做的事情就是跟事务和日志有关,基本上9点下班后,回家自学到12点以后。团队人很少,不论职位高低,所有的人都在写代码。那个时候OceanBase的同学就好像憋着一股劲,立志要把这个事情做成。
大家在同样的路线上骑着自行车,追赶一辆叫Oracle的跑车。
师承激光照排之父王选院士,阳振坤传输给团队要做“顶天立地”的技术,“顶天”就是技术上要有突破,“立地”就是要把产品做成通用产品,让整个社会都能使用。
但做数据库是个慢工细活,半年一年能落地到业务就不错了,出结果慢晋升自然也慢。有个团队成员点开天猫的页面,向阳振坤抱怨,自己和天猫的同学合作,人家的系统已经在线上使用了,而自己二个月过去了还没入门。
阳振坤安慰他,“你过三年再看,没有人还记得那个同学三年前在天猫上改版了什么网页,可是三年以后你今天做的东西还会在生产系统中使用。”
要开始OceanBase数据库这样一个基础软件的研发,必须先找到业务。幸运的是,时任OceanBase团队负责人的李震(楚材),是淘宝的老人,他带着阳振坤,像两个推销员,在淘宝各个业务技术团队一一拜访,找项目落地,最后终于有一个项目愿意尝试,这个项目就是淘宝收藏夹。收藏夹是淘宝线上应用之一,淘宝用户在其中保存自己感兴趣的宝贝,以便随时查看。每当用户打开收藏夹的时候,收藏夹系统都要去获得用户收藏的几十到几百件商品的每一件的最新价格和状态等信息,工作量非常大,收藏夹使用的传统关系数据库不堪重负,用户访问响应慢甚至无法打开,业务屡遭用户投诉。
时任收藏夹的主管魏虎对他们说,“只要能解决问题,我们就用你们的数据库。”魏虎建议OceanBase能够2周左右提供给业务开发团队进行测试验证,但当时OceanBase团队才开始组建,直到两个月后才拿出了一个演示(Demo)版给收藏夹开发团队,证明了OceanBase技术方案的可行性,八个月才出了版本,一年后系统正式上线。
当时收藏夹数据库曾计划增加到数百台服务器,用上OceanBase后只使用了20多台就满足了当时的业务需求,新数据库取得了非常好的效果。
面临解散
在收藏夹上线后,OceanBase团队没有迎来春天,反而陷入特别困难的时期,整个年都没有重量级的业务落地。团队随时面临解散,活下来成了唯一目标。
面对如此大的生存压力,大约年10月,阳振坤找到了时任阿里巴巴首席架构师的王坚博士,讨教OceanBase的生存机会。阳振坤心里明白,“再找不到机会活下去,OceanBase的气数尽了。”王坚博士提议OceanBase去支付宝,因为支付宝在数据库上面临的挑战更大。在王坚博士的极力推荐下,年11月15日,OceanBase团队从淘宝调到支付宝,暂时避免了关门大吉的命运。
到了年夏天,时任蚂蚁金服CTO的程立提出全面去O,这个O是指Oracle。阳振坤预感到转机来了,自荐用OceanBase代替Oracle。
OceanBase0.5版本应运而生,为了做好0.5版本,OceanBase团队从那年9月干到次年5月,很多同学春节也没有怎么休息,整整8个多月都在全力以赴。
0.5版本把数据多副本技术引进到关系数据库,即每一笔事务同时在3台甚至更多机器上落地,机器之间通过多数派来确定正确的数据,消除了当时MySQL等传统数据库由于机器故障导致的数据错误或丢失,在不使用价格昂贵、容量受限的共享存储的情况下,依然确保了金融系统的数据的正确性和可靠性。
当OceanBase团队死磕技术突破,他们还得面临组织协调上的内外交困。支付宝的业务技术团队也有自己的担忧:万一OceanBase出问题怎么办,这么多金融数据出错或丢失了可不是开玩笑的。一方要推,一方要拒,还是时任蚂蚁金服CTO的程立出面,把相关的负责人叫来坐下一起谈。
会上,程立问:OceanBase有问题,大家具体指出来,不要说“感觉不稳定,害怕出问题”这些虚的。最后决定OceanBase承担年双11交易流量的1%。
正是这1%硬是给OceanBase撕开一条路。那年双11前夕的压力测试阶段,机器模拟用户购物,Oracle却无法支撑住全部流量,一旦达到90%流量,硬盘开始大量故障,相当于一个最多只能挑90斤担子的人,突然加到95斤,腰折了。OceanBase临危受命,负担双11交易流量的10%。
这才有了开头不成就跳楼的一幕。
代码最美
OceanBase替代Oracle在支付宝交易系统上线,让它真正活了下来,甚至有了不少拥趸,在当时整个阿里巴巴还有没有一款数据库,能真正解决高可用的问题。
涓涓细流,终汇大海。年,网商银行成立,OceanBase成为全球首个应用在金融核心业务系统的分布式关系数据库;
年,OceanBase1.0版本在支付宝账务系统上线,支撑12万笔/秒支付峰值;
年,支付宝首次把账务库在内的所有核心数据链路全部搬到OceanBase上,创造万次/秒数据库处理峰值纪录;
同年,OceanBase走出阿里对外商用,先后在南京银行在内的多家商业银行落地。
年,OceanBase参加国际标准的数据库TPC-C基准性能测试,成为唯一上榜的中国数据库,并以两倍于Oracle的成绩(万tpmC)登顶TPC-C性能榜,打破了甲骨文保持9年的世界记录;
年,OceanBase再次登顶TPC-C测试性能榜首并创造了7.07亿tpmC的新纪录。
从年的立项,到如今年的勇夺TPC-C世界第一,这背后其实离不开每一个默默付出,团队利益至上的OceanBase同学们。
杨琪是加入OceanBase不到一年的新人,也是少数的几个女生之一,入职时正是团队冲刺TPC-C的关键时刻。她记得那天,她的Leader赵裕众在电梯门口接她,两人尴尬地握了握手,然后把她领进了拥挤的项目闭关室。里面坐着的师兄们,个个挂着黑眼圈外加一副倦容,杨琪心想:“这是一个怎样的团队呀”。
侯宇轩加入OceanBase刚刚两年,去年被同事提名了“看见”奖项,这是一项完全由员工自行提名的奖项,提名那些帮助人问题的同学。“在过去,我一直扮演着兵王的角色,认为自己强就完事了”,加入OceanBase团队后,侯宇轩发现让人努力和为之坚持的就是这种被团队需要和依赖的感觉,OceanBase团队建立了一个非常好的模式,让他感受到了这种正向反馈所带来的激励。
OceanBase有个不成文的规定,代码要写得漂亮,身体也要棒棒的。团队里年轻工程师,回忆起有一次部门outing,面对着锦绣山河,和阳振坤开玩笑,问他是代码美还是风景美?阳振坤说,“我还是觉得我们的代码最美。”
这一行行代码背后鲜活的面孔,经历无处安放的业务困顿后,和默默无闻的岁月,终于被打捞被铭记。
十年如昔,初心不改,在推进分布式关系数据库OceanBase的应用道路上,这群执着的追梦人他们仍将步履不停。