阿里巴巴“数据库侠客”:此行路远,不问归期

年的阿里巴巴数据库,他只说了两句话:“国内数据量最大”,“国内数据并发最高”。阿里巴巴数据库的人都开宝马!同一年,北京,阿里云工程师写下第一行代码。王坚开始履行对马云的承诺:为阿里巴巴输入技术的基因。阿里巴巴“大儿子”B2B团队和“二儿子”淘宝团队合二为一,后羿接管B2B数据库团队。淘宝网已经被“蹂躏”完毕,而阿里巴巴B2B团队的数据库团队还懵懵懂懂。

验血检查咨询:DNA663333

来源 | 浅黑科技

作者 | 史中

有人曾在网上回忆自己的故事:

大约两年前,我买了《动物之森》这款游戏,玩了一个月就有点厌倦了,于是我把它教给妈妈。妈妈从小得了小儿麻痹,后来变成多关节硬化。除了每月一两次必须的购物,她几乎不出门。我让她在游戏里建了一个家。想不到她竟然沉迷于此,这么大的人每天玩游戏,连我都觉得有点丢脸。

直到有一天,她的病情恶化,不能再玩了。一年后,她去世了。又过了很久,我突然心血来潮,想去看看妈妈建立的小村庄。里面的杂草长得好长,村民们也都在问我妈妈这段时间去了哪里。

我打开信箱,发现里面都是未读信件。其中有一张是生日贺卡,信里写着:儿子,当你看到这封信时,我应该不在了。但是没关系,你将来偶尔回来看看,应该会发现我给你的生日贺卡。我在游戏里赚了一些钱,足够每年都给你买一张生日贺卡。对不起生病了,没能好好照顾你。你要坚强,我会在天堂看着你。

赛博世界并不是辽阔的荒野,数据也不全是冰冷的记录,它是亲人的笑靥,它是我们的记忆。

(一)田园时代

假如互联网有记忆,它也许会怀念2005年。

这一年,淘宝网两岁,但它已不像一个婴儿。一望无垠的货架上陈列着800万件商品,日均浏览量超过9000万次。

这一年,马云和杨致远喝了“有史以来最贵的一杯清酒”,换回雅虎中国全部人马和10亿美金,准备随时划破黎明,吹响对 ebay “决战”的号角。

这一年,遥远的北方,王坚在神秘的微软亚洲研究院,孤绝地探索听上去颇为可疑的“大数据技术”。

这一年,英雄如满天星散,一切像平静的雪。

但杀机总是暗伏。

现在回望,当年阿里巴巴被极速缩小的“互联网毒圈”推向战场的中心,黑暗森林的另一边,潜伏着盛大、网易、百度、腾讯数位绝世高手。还来不及褪去草莽气息的阿里,迫切需要几条顶级的枪镇楼。

有件事儿再明朗不过:

一个合格的商人,得随口说出自家所有货物的特点、型号、价格。这得靠一个天赋异禀的“好记性”。

一个合格的电商,更要实时给出亿万件货品的图片、描述、优惠。这得靠一个打磨精良的“数据库”。

多说一句,很多人听到“数据库”就会觉得无聊,其实蛮有趣的,它和人的记忆有两点相似:

1、要在最短的时间内把有用的东西“记住”;

2、要在最短的时间内把需要的东西“回忆”出来。

听上去简单,但能把这两件事儿做好的数据库凤毛麟角。

2005年,数字世界的“好记性”只有一个选择:美国甲骨文公司的 Oracle 数据库。

当时的阿里巴巴有三个儿子:大儿子——阿里巴巴B2B网站、二儿子——淘宝、三儿子——支付宝。就像今天所有望子成龙的家长一样,当然要给他们吃最好的,用最好的,补习班也上最好的。

于是,三个儿子都迫不及待地装备了甲骨文的数据库系统。

如果说一般的数据库系统是奥拓夏利拖拉机,那么 Oracle 无疑就是数据库界的劳斯莱斯。买得起劳斯莱斯的人本就不多,会开劳斯莱斯的老司机就更加凤毛麟角。

数据库系统的“司机”被称为 DBA(数据库管理员),当时全中国的 Oracle DBA 加起来也没多少。事实上,这些大神们彼此之间也非常熟悉,经常聚餐撸串。

买了这么多劳斯莱斯,老司机不够用了,阿里巴巴很急。就在这些大神散落在阔绰的外企和安逸的国企里过着舒服的日子时,突然窜出一个好汉大声呼喊:外企和国企给多少?我阿里巴巴以后给三倍!

这一声吼彻底搅动了中国数据库的历史。

DBA 大神云集响应,天下英雄尽入彀中。说实话,钱,彼时这些咖们是不缺的,让他们感到振奋的是这片无远弗届的“新战场”。

鲁国良、冯春培、拖雷、七公、张瑞、后羿、楼方鑫等等一众人马从四面八方赶来,带着自己最的拿手绝活,准备大干一场。

张瑞回忆,自己从西门子被介绍加入阿里巴巴时还很年轻,面试他的四位大神都是业内“神兽”级别的人物。回家以后激情澎湃,立马开始收拾行李准备搬家到杭州,媳妇拉都拉不住。

DBA 们把自己当做那个时代的哥伦布。

用张瑞的话说,当时的阿里巴巴是“生机勃勃的乱七八糟”,拥有一种和外企完全不同的诡异技术氛围。这并不难理解:这家新兴互联网公司正在全速扩张商业版图,背后的数据库当然也会以几何数级增长。

他们每天没日没夜地研究 Oracle 系统,把技术文档倒背如流,完全是因为他们觉得:自己对探索技术世界新大陆负有不可推卸的责任。

张瑞加入的第二年,另一位 DBA 大牛后羿从江苏电信被挖到雅虎中国,后来随着业务调整汇入淘宝。我让后羿形容一下 2006 年的阿里巴巴数据库,他只说了两句话:“国内数据量最大”,“国内数据并发最高”。

在吟游诗人的章句里,那一定是数据库的“田园牧歌时代”。

作为阿里巴巴的核心技术人员,DBA 大神们拿到了丰厚的报酬。2006年七公第一个买了宝马3系,大家开车出去喝茶。以至于人们都艳羡地口耳相传:听说了吗?阿里巴巴数据库的人都开宝马!

(二)魔幻时代

正如纪梵希的西装不能配老北京布鞋,倾城佳人不能坐在自行车后座上,Oracle 也不能运行在随便攒出来的“妖艳贱货服务器”上。

Oracle 的标配是 IBM 生产的小型机和 EMC 生产的存储硬件。

不少老员工至今都记得,阿里巴巴迎来全中国第一台 IBM 小型机时候的场景。“最高配的 P590,锅炉一样高的黑色大柜子。放在机房其他的机柜旁边,鹤立鸡群。”

跑在小型机上的 Oracle 数据库,速度快到根本不用做任何优化。就像在大草原上开车,闭着眼睛油门踩到底也不会翻车。一众 DBA “老司机”,恨不得围着小型机跳起图腾崇拜的舞蹈。

事情由此开始变得魔幻。

一台小型机就要500万,两台小型机就要配一个300万的 EMC 存储。2006年,正迎来史诗级喷发的淘宝网,小型机先是一台一台买,到后来干脆一排一排买。很多 Oracle、IBM 和 EMC 的销售们,都在很短时间里升职加薪,走上人生巅峰。

依赖是一种柔软,更是一种锋利。

世界第一次对阿里巴巴露出爪牙,是2006年。

就在最早两台小型机进驻机房的三个月后,故障毫无来由地降临了。小型机突然宕机了!

工程师们后背一阵发凉。随即而来的事实更让人绝望,业务宕机,每秒损失都在扩大。但一众工程师面对这台怪兽,不仅没人会修,甚至没人敢动它。感谢上帝,就在宕机的第40分钟,IBM 工程师正在从北京飞到杭州的万米高空时,小型机自动恢复了运转。

自家的设备出现问题,却得依靠设备厂商来拯救;一堆中国顶级工程师面对数据库的生死劫难,居然束手无策。这简直是对彼时中国互联网的绝妙讽刺。

就在这天晚上,完整经历一切的张瑞睡不着觉,他懵懂地问了自己一个问题:搜索技术靠雅虎,数据库靠甲骨文,服务器和存储靠 IBM 和 EMC,那阿里巴巴是什么?

这确实是直击灵魂的一问。

历史的剧情从不拖沓,这一问用不了多久就会有人来回答。2008年9月,在马云的邀请下,王坚从微软亚洲研究院动身,南下赴杭州。

(三)暗黑时代

2009年,阿里巴巴的 Oracle RAC 集群节点数达到了创记录的20个,亚洲第一。

这个数据还被做成了广告,骄傲地放在了首都机场的墙上,闪耀着刺眼的光芒。

光鲜背后,逆流暗涌。

作为当时淘宝数据库团队的一员,后羿已经连续好几个星期没有睡一个完整的觉了。20个 Oracle 集群组成了一个“巨婴”,不知什么时候会啼哭起来。

Oracle 是一个商业软件,它就像一个黑盒子。平均每周都要出现三四次问题,但无论多么精巧的工程师都撬不开它,更不用提修理它。

“唯一能帮助你的人——Oracle 技术支持人员——在一万公里以外,这有多荒唐。”后羿苦笑着对我说。

团队只能连夜值班,出现问题第一时间反馈给甲骨文总部,然后一边力所能及地拖延故障的发展,一边等待前方救援。由于时差的原因,对方返回结果的时候,很可能已经过去了一整天。大部分时间,DBA 团队所能做的唯一一件事情就是:祈祷。

而从阿里巴巴首席架构师王坚的角度看,一道更大的裂痕正在显现。

一方面,买机器的速度根本赶不上业务的发展速度;

另一方面,面对业务提出下个月要做大促的要求,那些技术大神经常连连摆手。数据库暴露出不适合互联网业务的致命弱点——无法弹性扩展——大促时数据库不够用,结束后又浪费。

这本质上是时代和工具的错配。

讲真,上帝的时间观念有时不那么强——祂为你关上一扇门之后,不知何时才会为你打开一扇窗。但在历史的烟尘里,后羿的运气并没那么差:

彼时平民化的 X86 服务器技术开始突飞猛进,SSD 闪存技术也飞速成熟。焦头烂额的后羿悄悄和几个同事们进行了验证,在平民服务器上跑免费的开源数据库,性能虽不及 Oracle,但也绝没有想象中不堪。

一瞬间,有些念头在他心里闪过,但随即又被他自己掐灭。

同一年,北京,阿里云工程师写下第一行代码。王坚开始履行对马云的承诺:为阿里巴巴输入技术的基因。

站在技术的潮头,王坚望尽大江东去;他唯独没看到,自己的命运跌宕才刚刚掀开扉页,他恐怕更难预料,多年以后自己将会以怎样的姿态出现在无数技术人的回忆录中。

当年12月,后羿代表数据库团队和他的老板振飞一起,向王坚提交明年的预算。

他们两个人内心都是打鼓的,明年要买的数据库、小型机、存储,加起来的开销之大,连看一眼都要心跳半天。

为了让自己看起来不是那么面目可憎,后羿在汇报结束之前,小声跟王坚提了一句,“要是太贵的话,我们有没有可能用开源数据库和平民服务器来替换 Oracle 和小型机?”

没想到博士(王坚)当即拍板:“就该这么干!”

“2010年以后,再也不购买小型机。”这句话就这么白纸黑字地写进了阿里巴巴的公司战略,振飞后羿签字画押。

后羿在工位上坐到了半夜。

暗夜窗外,月亮升起来,他似乎听到了什么声音。像是开源数据库的新生啼哭,又像是 Oracle 的最后挽歌。

开了半辈子“劳斯莱斯”,方向盘上的每一条纹理都稔熟于胸,闭上眼睛都能想象出按钮的陈设,闻到真皮座椅的气味。

那是一个 DBA 工程师用最好的年华换来的骄傲。如今自己真的要亲手砸掉宫殿一般豪华的 Oracle,转投一砖一瓦从零搭建的开源数据库吗?

退一万步,即便自己能接受这个人生的重大变革,但他凭什么替团队四十几个兄弟们做决定?

然而,决定已然不可辨驳。王坚的眼神里,闪烁的不仅是阿里巴巴数亿的成本节省,更是中国互联网的十年技术未来。后羿明白,自己正载着四十多个 DBA 兄弟冲向万丈悬崖,手中的方向盘已被拆掉。

一觉醒来,太阳照常升起,世界已地覆天翻。

杭州华星路创业大厦8楼,后羿跟兄弟们的“坦白局”。

放弃 Oracle,转投开源数据库!这不是讨论,这是决定。

憋了好久,后羿的话终于还是像一点星火,引爆了炸弹库。

“后羿,你TM今天不给大伙说清楚,就别想出这个门!”一位同事堵着门,所有人都站起来,局面眼看就要失控。

后羿努力克制着自己的颤抖,说:“半年多了,我们所有人几乎天天半夜两点起床排除故障。但我们能做的只是把故障写成报告汇报到国外厂商。在别人眼里,我们是中国最好的技术人,但回到家里,我们叫天天不应叫地地不灵,这种无法掌握自己命运的感觉,你、我还能承受多久?

这几天,我们的故障三天两头就会影响到淘宝的业务。业务同事生气我们的气,我怎么能怪他们?因为保障阿里巴巴的核心数据库就是我们的职责啊!我们不怕苦,但每次都给其他数据库厂商做陪练,这有什么意义呢?

淘宝的数据量明年不知要翻多少翻。现在已经危如累卵,再把数据库的规模加大十倍百倍,只有天知道会发生什么故障。如果今天我们不砸自己的饭碗,明天连淘宝的饭碗可能都没了!阿里巴巴几千兄弟们都在靠着我们,我们不能退啊!”

后来,这一幕成为阿里巴巴历史上一再被铭记的标本。但在当时,剧中人又何以知道未来的走向。

你以为后羿舌战群儒,瞬间折服众人了吗?别逗了,那是小说里的情节。团队最大的善举只是放后羿活着走出会议室而已。一些工程师懵懵懂懂,愿意跟着后羿先试试,另一些人看到后羿决心已定,走出这个门,就已经开始投简历了。

(四)长征时代

投身开源数据库的长征路开始了。

你可以想象一下, 那些 Oracle DBA 大神就这样在小屋里抽着闷烟,捧着一本《MySQL 开源数据库进阶》时而哀叹,时而恍然,时而咬嘴唇嘬牙花子,是一个怎样的场景。

一个先锋敢死队火速建立了——“MySQL 学习讨论小组”。所有人每周三次在会议室里交流技术,分享心得。几个月后,好多同学都开始感慨,好像开源数据库也不像老虎那么可怕。

经过周密考虑,这个浩大的工程先从淘宝“商品库”开始替换。

理由如下:

“商品库”是淘宝系统里最大的一个核心数据库,存储着所有宝贝的描述、价格、评价。

虽然犹如一辆赛车在全速前进中更换引擎,牵一发而动全身,但是商品库的日常读多写少,通过前期的拆分,写部分都已被剥离出来,逻辑相对好掌控。

这已经是所有选项中最稳妥的选项了。

2010年1月,淘宝商品库开始了如非洲角马一般浩荡的迁徙。此岸土地开始干涸,彼岸水草逐渐丰美。阳光刚猛,波涛壮阔,勇者争渡,懦者哀鸣。

此时,故事里的另一位主角才姗姗来迟。他就是日后被人们称为“霸爷”,并且一众码农专门为他创建了“拜霸神教”的褚霸。

如果非要形容,我觉得褚霸像个“数字屠夫”。

这位网易工号25,迅雷工号前10的技术大神手里常提一把血淋淋的刀,一边“庖丁解牛”般把程序解剖成底层电路上的嘶嘶电流,一边看向围观震惊的吃瓜群众,摆出一副“都坐下,都坐下,这是基本操作”的傲骄表情。

2010年5月,褚霸加入大神章文嵩领衔的“淘宝核心系统部”。

仅仅一个月过后,老板章文嵩就找到他说:“后羿那边在用开源数据库替换淘宝的商品库,遇到一些底层问题,想让你组建一个小分队去支援一下,你有没有信心?”

“有!”能用一个字解决的问题,褚霸绝不说两个字。

你可能难以想象,说出这句话的时候,褚霸根本没做过数据库。他特别熟悉的是网络方向,而存储方向的核心技术是“I/O”(输入输出技术)。打个比方新浪财经数据库,一个是神经科,一个是脑科,完全不是一个领域。

褚霸去问当时内核组负责人伯松:“这个 I/O 要搞明白,一般需要多久?”

伯松抬抬眉毛,冷静地说:“有生之年能搞懂就不错了。”

褚霸嘴张得老大,一时无语凝噎。不过几分钟以后,他就下定决心:老子混了十一年开源社区,还没听说过哪个技术要花一辈子时间。既然是“I/O”先动的手,那就来吧,不服就干!

凭借“江湖嗅觉”,他很快就“捞”到一位大神,这位大神是 Linux Kernal“I/O”这部分核心代码的贡献者,而褚霸发现他还同时开发过一个 I/O 测试工具。

“这就像汽车设计师本人开发了一个修车工具,这里面检测的参数肯定个个都有用啊!”褚霸想。

于是,就从这个测试工具入手,褚霸一头扎进了 Linux Kernal 上千万行的代码里。那段日子,昏天黑地。每一个参数褚霸都反复测试,确信搞明白了才去看下一个。经常一抬眼就已经到了凌晨三四点,刚躺下又突然意识到刚才理解错了,从床上弹起来继续看代码。

如此疯狂。几个月后,褚霸终于成功地进了医院。

从医院回来不久,褚霸就像《功夫》里那个筋脉尽断又重新生长的周星驰,突然恢复了全部元气。用他的话说就是:“闭上眼睛,就能想象出整个系统的齿轮是怎么转的。”

后羿带领的数据库研发团队和褚霸带领的志愿军,每周都会在一起交流。褚霸把脑海中那些零件一点点拆开讲给后羿团队听,后羿会把核心技术消化之后用来攻克难关。

于是,开源数据库 MySQL 的一个阿里巴巴专属分支 AliSQL 就这样被雕刻出来。

经历了九九八十一难,2011年7月,淘宝商品库终于完成了从 Oracle 到 AliSQL 的大迁移。这意味着软件替代方案被验证成功。

与此同时,硬件替代方案也在不停验证。

AliSQL 团队查验了当时世界上所有主流闪存、硬盘、计算芯片、网络芯片的性能,协助团队设计了一套兼顾网络性能、存储性能和成本最优的服务器采购方案。

软硬兼备。通往下一代数据库的大门,终于被技术人的血肉之躯撞开。整体迁移只待一声令下。

王坚拍板,从最早的那台小型机,到一年前刚刚购入的最后一台小型机,从此刻开始同时进入退役序列。

接下来,整个阿里巴巴集团进入了 2012-2013 年史诗般的整体大迁移。

(五)末法时代

历史的浪潮滚滚向前,但每一朵浪花却有不同的命运。

自从王坚宣布“数据库大迁移”从淘宝商品库扩大到全集团以来,阿里巴巴内部反对的声音开始逐渐弥漫。

一些元老对于新技术并不信任,他们反复在高层会议上表示:用开源数据库替代 Oracle,有意义吗?

阿里人并不会从私利出发考虑问题,反对派技术人也不是阴谋家,他们只是阿里巴巴体内的“白细胞”,有义务用自己的专业知识,保证阿里巴巴这条大船不会被几个激进的“开源技术原教旨主义者”弄沉。

历史很有趣。

用望远镜回望,一段岁月是创新和保守的美妙制衡;

用显微镜查看,那却是每人每日的拼死角力和煎熬。

2012年,是阿里巴巴历史上打不开的结。

中哥在《阿里云的这群疯子中》曾经写到新浪财经数据库,彼时的王坚,高处不胜寒。承载了他二十年技术理想的飞天系统屡次“试射”失败,阿里云摇摇欲坠。如此激进的数据库替代战略,也顺理成章地被认为是危险的。

但上帝是个公平的庄家。你要是相信未来,不用多说,只需要在生命的赌盘上不断加注。

在不同的会议室里,在不同的场合,在不同的时间。面对质疑,后羿看到王坚沉默,看到振飞沉默,他唯独没有看到任何人为理想停下哪怕半步。

AliSQL 数据库就这样一点一滴地渗透进集团的每一个服务中。

2012年,全淘宝最后一台小型机宣布下线。这本来是一个史诗级的时刻。遗憾的是,那正是两条技术路线交锋最激烈的日子。现场只有四五个人,后羿组织大家认真地拍了一张合影。时间无声,这至少是一场对自己的交代。

同年,还发生了一件影响深远的“小事”。

阿里巴巴“大儿子”B2B团队和“二儿子”淘宝团队合二为一,后羿接管B2B数据库团队。

淘宝网已经被“蹂躏”完毕,而阿里巴巴B2B团队的数据库团队还懵懵懂懂。此时已经没有什么可以动摇后羿的决心。

长痛不如短痛,他用决绝的方式推进阿里巴巴B2B的同事们从 Oracle 过渡到 AliSQL 数据库。结果是,20个 Oracle DBA,最终出走了15人。

内网上烽烟四起,一篇名为《淘宝的成功不可复制》的文章成为热帖,口诛笔伐如雨点袭来。

多难的技术都没有击倒后羿,但那一刻,他忽然觉得自己走不动了。

从 Oracle DBA大神,到 AliSQL 的开创者,后羿背负着沉重的理想走了六年。人人都说黎明在前,但天为什么永远不亮?人人都说梦想可贵,但真的要剖开胸膛才能让所有人看到自己的一片丹心?

那天,后羿对振飞说,“也许是我离开的时候了。”

这一击甚至也超过了振飞的预料。

当晚一家小饭馆里,振飞和后羿两家人坐在一起。“我不允许自己的兄弟功败垂成。”振飞说。烈酒入喉,过往的烟尘被马蹄扬起,在天地间飘荡。

振飞还是把后羿留下来了。

2013年5月17日,支付宝最后一台小型机下线,这也是阿里巴巴全集团最后一台小型机下线。历时三年,一场赛博世界的大迁移自此落下帷幕。

现场媒体拍下了这张照片。

人们看到一排欢乐的脸蛋儿,谁又能知道,这背后又藏着多少人的过往,和那些岁月里碾不碎的挣扎和不甘。

无数在过去三年里把这件事变成可能的人,此刻像河彼岸升腾的焰火,映出众人的微笑。人们总是喜欢璀璨。而在焰火升起之前的漫长寒夜里究竟发生了什么,他们并无兴趣。

(六)钢铁时代

唯有热血换不来粮食,只靠勇敢赢不下战争。

2012年是“官宣”的世界末日,大多数人最担心的是12月21日,而阿里技术人最担心的却是11月11日。

因为这一天,阿里巴巴将第四次返回那个盛大的战场——“双11”。人们预测,这一年的淘宝天猫总销售额会超过100亿。100亿,一秒数一张,够你不睡觉数三年。

张瑞刚刚并入淘宝数据库团队,后羿就让他做“双11”数据库的总指挥。与此同时,刚好淘宝天猫的所有数据库都从 Oracle 替换成了AliSQL。

这意味着什么呢?张瑞就像一个转校生,刚领到新的教材,第二天就要参加高考。这太刺激了。

100亿的成交额,意味着数据库里的一条热点记录,每秒钟最多要被修改十几万次。什么样的钢铁数据库可以承受这样的蹂躏呢?

彼时,阿里巴巴还不具备“全链路压力测试”的能力。换句话说,谁都没办法把“双11”可能遇到的情况完整演习一遍,只能靠局部测试甚至大脑里的思想实验来推演,摸着石头过河。

11月11日,大战来临。

零点钟声刚敲响,巨大的数据洪流涌向阿里巴巴的服务器,资源占用数值直线拉起,所有人的目光都随着曲线向上抬升。几秒钟过后,数据库资源占用值像一辆失控的赛车,径直撞向100%。

张瑞脑中一片空白。

如果2012年“双11”零点前后你正在参与剁手,一定会记得,有那么半分钟,所有的页面都卡顿在半空。

就在同一时刻的杭州,阿里巴巴内部的数据迅速淤积,发动机已经被烧红。这套即将崩溃的 AliSQL数据库,背后是无数人的赌命奋战。它太贵了,贵到没人能承受失去。

原创文章,作者:第一财经,如若转载,请注明出处:https://baike.d1.net.cn/1460924.html