中国跨过数据库那座大山了吗?

21小时前 (21:46:08)阅读2回复0
kewenda
kewenda
  • 管理员
  • 注册排名1
  • 经验值128180
  • 级别管理员
  • 主题25636
  • 回复0
楼主

先说结论吧:四舍五入是跨过了。

获得实经的结论说来简单,但九九八十一难的过程却无比艰苦。

我曾经采访过几个中国比力凶猛的数据库团队,把他们研发的点滴故事都记录了下来,放在那里,希望对各人有所帮忙~

史中:OceanBase:蚂蚁爬上舞台211 附和 · 21 评论文章 史中:阿里巴巴“数据库侠客”:此行路远,不问归期157 附和 · 18 评论文章 史中:腾讯数据库的三场战役162 附和 · 12 评论文章 OceanBase:蚂蚁爬上舞台

文 | 史中

2010年过去了,我很思念它。

那一年发作了良多场出名战斗:乔布斯一边和病魔匹敌一边和谷歌缠斗,而且抽暇发布了 iPhone4,用人生最初一段工夫拉开了挪动互联网

的大幕;360和腾讯也打得不成开交,像甄嬛一样争夺桌面时代用户们最初的宠幸;达摩面壁的天河一号超越“美洲豹”,第一次代表中国夺下世界上超算的宝座。

那一年还发作了一场“非出名”战斗:甲骨文 Oracle 在最权势巨子的数据库性能测试“TPC-C”中跑出史诗级高分30249688,一骑绝尘超出了死仇家 IBM 将近 200%,为数年的缠斗画上钢铁般的句号。

Oracle 提着带血的刀站在斗兽场中心,大喊:“还有谁????”虎啸山林,万马齐喑。

尔后各个国度的银行转账、存款保险、航空客票、电子商务的每一笔交易,但凡涉及数字和钱的,都要存在 Oracle 的数据库上才最安心。那个星球上几十亿人的衣食住行,生生把甲骨文开创人拉里·埃里森推上了福布斯富豪榜第五位。

也恰是在那一年,两小我在阳振坤的脑海里结结实实打了一架。末端,他仍是背起包,文质彬彬地递交了辞呈,从百度大厦搬到了阿里大楼。

阳光扎眼,将来并非明晰可辨。

(一)“账本危机”

我们的故事无妨先从葫芦娃说起。

打败蛇精之后,爷爷把妖精的金银玉帛都抱回村子,带着葫芦娃在村口开了一个小银行——“葫芦娃农村合做信誉社”。他们搞了一个小账本,用来记录每天乡亲们存了几钱,取了几钱,转了几钱。由大娃专门负责记账。

爷爷运营有方,银行越做越大,然而问题也随之而来:

每天资金流水数以亿计,需要一个超厚的账本才气把账记全。于是爷爷找到卖账本的老板:“我想定做一个超等厚的账本。”没想到账本老板一摊手:“对不起,工艺限造,我们做不出更厚的账本了。。。”

眼看银行还在不竭做大,肿么办?爷爷只好从老板那买了好几个独立账本,把乡亲们的户头分在差别的账本上,让每个葫芦娃别离记账。

那个法子处理了记账的燃眉之急,却带来了一个新问题——每天晚上银行要清点总账,但因为账本是朋分的,没法子汇总。爷爷只好派七娃在每天打烊之后,专门把所有账本的关键数据都抄在一路,做成一个“数据仓库”,在仓库里做最末的汇总、报表。

然而,“不解风情”的用户仍是继续从四面八方涌来,银里手爷爷为了办事好那些用户,每天都让七娃用各类姿势算数据,七娃不胜重负,仰天长啸:“原来认为蛇精就够狠的,没想到最狠的是爷爷。。。老子要告退!!!”

那不是童话,是差一点就要发作的现实。故事里的“银行”就是付出宝,“账本”就是数据库,“卖账本的老板”就是数据库公司甲骨文(Oracle),而“葫芦娃”就是付出宝的办事器。

那是2013年,付出宝实名用户数超越3亿,全年付出27.8亿笔,稳坐中国互联网付出平台第一把交椅。舞台上歌舞升平,舞台基座却起头微微哆嗦——用来存储用户数据的 Oracle 数据库就像一个气球,此时已经被撑到极限,谁都不晓得“砰”的一声何时降临。

“账本危机”像是露出海面的鲨鱼鳍,固然目前一切仍在掌握,但海面之下却是血盆大口。留给中国队的时间不多了。

2013年炎天,时任付出宝 CTO 鲁肃召集列位手艺大佬开会筹议那个问题,所有人都脸色凝重。说来说去,似乎也只剩一条路——像“爷爷”那样先把数据库拆成几份,解了燃眉之急,后面的事再从长计议。

就在那时,一位老哥悠悠地说:若是列位信赖我,用“散布式数据库”取代 Oracle,我向各人包管,我们能把数据库做到无限大!

各人齐刷刷看向他,目光各别。

没错,那位老哥就是三年前参加阿里巴巴的阳振坤,他口中的“散布式数据库”,就是他带着同窗们从零起头研发,彼时刚满三周岁的 OceanBase。

(二)“无限大”的梦想

首批长江学者,国度科技前进一等奖得主,王选院士的爱徒,激光照排手艺的重要奉献者,中国散布式计算的鞭策者,散布式金融级数据库 OceanBase 的开创人,如果阳振坤把那些头衔都做成勋章,能够像苏联元帅一样把胸前挂满。

但是勋章冰凉,棱角难近。

所以,在我的故事里,阳振坤没有那些头衔,也不是比我父亲小三岁的大叔,他不断是阿谁1984年考上北大数学系的19岁少年。

阳振坤

阳振坤第一次接触散布式系统,仍是在2006年,那一年他参加微软亚洲研究院

微软亚洲研究院,是中国计算机科学的黄埔军校。李开复、张宏江、沈朝阳、汤晓鸥、王晓峰、余凯那些灿若星辰的大牛,几只手都数不外来。而其时阳振坤报告请示的对象,是个比他大三岁,但和他一样倔的老哥,此人名叫王坚。

手艺人都有股清高,固然那一年阳振坤几乎天天和王坚“打骂”,但是他俩在心里里却有了一个大共识——散布式系统才是那个世界的末极将来。

中哥卖了半天关子,到底什么是“散布式系统”?下面就告急插播一段科普。

散布式系统的原理很简单:把一个大机器干的活分给无数个小机器一路干,从而大大进步系统的整体性能。(那个设想最后是由谷歌在2006年提出来的。)

举个栗子:

1、关二爷斩颜良诛文丑过五关斩六将,但他就是再凶猛,世界上也只要一个关二爷。一人单独面临百万大军腿也软。关二爷就叫“单机”。

2、关二爷一小我不可,把刘备关羽张飞捆在一路呢?固然是兄弟三人并肩做战,但他们三个仍是奇特的,不克不及无限复造。刘关张就叫“集群”。

3、诸葛亮运筹帷幄,批示蜀军帐下千军万马,东挡西杀,部门将士有死有伤,也其实不影响整个戎行完成战争任务。一场战役下来还能够继续招兵买马,扩大实力。蜀军就叫“散布式系统”。

你可能会说,中哥怎么还整出来《三国》了,散布式系统听上去跟我没啥关系啊。。。

你错了,摸摸口袋,只要里面拆着智妙手机,那事儿就铁定和你有关——你去饿了么点外卖,去淘宝剁手,在微信聊天,十几亿人每天无数次次数据交互、调度、运算都是由“云计算”完成的。而“云计算”其实是个小名,它的大名恰好就叫“散布式计算系统”。

一句话:没有散布式系统,就没有我们今天的世界。

比拟“单机系统”和“集群”,“散布式系统”有两个明显的益处:

1、扛造。

打个例如:蚂蚁社会就是个散布式系统——那个家族的保存使命被分摊在每一个蚂蚁头上;出门施行使命的个别蚂蚁不免遭遇鞋底、车轮等等意外,但那其实不会影响整个蚁穴的运转;并且就算蚁后被捉走,蚂蚁们也能临危稳定敏捷选出新蚁后,继续产卵生子母范全国。

2、无限大。

事理是很简单的数学:1+1=2,1+1+1+1+1......无数个1加起来就是无限大。只要在手艺上实现对每一台机器的“主动调度”,散布式系统就是没有上限的。

别忘了,命运赠送的礼包越大,黑暗标定的价格就越贵。老司机霸占“散布式系统”的手艺,难度不亚于夺下恶龙守护的瑰宝。

山河多娇,无数英雄竞折腰。

说回我们的故事。阳振坤和王坚都有济世情怀,不肯意“躲在小楼成一统”,而是梦想着让本身手中的手艺能给世界带来肉眼可见的改动。

于是,2007年阳振坤去了百度,2008年王坚去了阿里巴巴。他俩做了统一件事儿——云计算。

汗青的裂痕就此连绵。其时的“互联网一哥”李彦宏羽扇纶巾,全情投入梦想中的人工智能,却把云计算称为“新瓶拆旧酒”;而千里之外的杭州,不懂手艺的马云却被王坚“忽悠”,拿出了十个亿撑持他做“阿里云”。

王坚

时间末于走到了2010年,文章开头的那一幕呈现——阳振坤“未敢翻身已碰头”,在阿里巴巴合伙人刘振飞的邀请下,末于下定决心出走百度,转投阿里巴巴。

来到阿里巴巴,继续做熟悉的云计算应该是瓜熟蒂落的事儿。不意,阳振坤的老司机本质起头显露。。。

分开前一家,之前的项目我就不会再做,因为之前的手艺、关系网良多,容易引起纠纷,让他人说闲话。我分开朴直后,就不做激光照排,分开百度后,就不做云计算。

阳振坤解释。

那种“避长扬短”的孤傲实在令良多人费解,但他就是如许做的。

那么问题来了, 除了云计算,哪个手艺最有前途嘞?挑来挑去,他选中了“散布式数据库”。

为啥是数据库?

那和王坚其时在阿里巴巴力主推行的“去 IOE 动作”有关。

2009,是“双11”元年,阿里巴巴如火山待燃。为了给剁手党们供给顶级的办事,无论是淘宝仍是付出宝,都多量购置高贵的 Oracle 数据库,把用户的核心数据跑在上面。

但是,盛世和危机只要一线之隔。

你还记得第一章我们讲的付出宝“账本危机”吗?淘宝同样碰到那个问题,并且要比付出宝更早:

2010年时,一个 Oracle 数据库已经没法子支持淘宝庞大的交易数据,危机逼近,淘宝只仿佛“爷爷”一样,把数据库拆成彼此独立的子数据库,然后用“数据仓库”的体例每日汇总。

然而问题来了,假设把1个大数据库拆成100个子数据库,100个子数据库就要买100个 Oracle 软件受权,为了运行那些数据库还同时要装备100台(或更多)IBM 小型机,还有响应的 EMC 高端存储(那三个并称IOE)。

那可不是开打趣的,把阿里巴巴所有的利润拿来买那些“豪侈品”都不敷。。。

王坚手捧预算,铁血站在此地,从此时此刻起禁绝购置一套新的 Oracle,退半步者,斩立决。

于是,其时淘宝把数据库拆分后,良多子数据库都换成了开源的 MySQL 数据库,只要少部门最核心的数据仍然跑在既有的 Oracle 上。(你能够简单把 Oracle 理解为 iOS,把 MySQL 理解为安卓。MySQL 开源免费,比 Oracle 实惠得多,但二者都是统一代手艺——集中式数据库。)

然而从阳振坤那个“手艺完美主义者”的角度来看,用 MySQL 取代 Oracle 其实不处理底子问题,因为那种“拆账本”的体例自己就是下策。他以至想:若是本身能早点来,早几年开发“散布式数据库”,间接用散布式数据库取代 Oracle,不只能去IOE,还能制止“拆账本”的情况发作,一箭双雕。

但汗青没有假设,种一棵树更好的时机是十年前,第二好的时机就是如今。

阳振坤那位老司机,就如许分秒必争地开车冲上“散布式数据库”那条赛道。

只是彼时的他,尚未意料到数据库那条路比秋名山还凶恶。。。

散布式数据库手艺详细有多灾呢?

简单说,要想账头一分钱都不错,数据库要契合一个叫做“ACID”的原则,那四个字母别离代表:A原子性,C一致性,I隔离性,D耐久性。

原子性:A转给B100块钱,A账户扣除100块的同时,B账户必需增加100块钱。那两件事必需像一个原子一样紧紧抱在一路,决不允许“A已经扣钱,B还没加钱”的工作发作。

一致性:A转给B100块钱,转账完成的一霎时,A霎时再查询本身的最新余额,必需显示已经扣除100之后的金额,B必需霎时查到已经加上100块之后的余额。所有的账目在任何一个时间切面必需完完全全对得上。

隔离性:A转给B100块钱,不克不及对C有任何影响。

耐久性:A转给B100块钱,那笔转账一旦完成,就永久生效。

问题来了:

若是是集中式账本,只要一个葫芦娃负责写入,包管 ACID 就容易得多;

但是散布式数据库是让无数个葫芦娃千手万脚地在一个超大型账本上记账,相当于批示整个幼儿园的熊孩子整齐齐截地左手画龙右手彩虹胸口比画郭富城,此时要包管 ACID,就比登天还难。

一句话:2010年的世界上,能包管 ACID 的“散布式数据库”底子就不存在。

其时淘宝的核心手艺由吴泳铭负责,他是阿里巴巴第一位法式员,早在阿里成立之前就跟从马云东挡西杀,人称“吴妈”。(其实是男的。。。)

吴妈伸出两个指头:“阳教师,我能够给你两年的时间来证明“散布式数据库”是可行的。”

阳振坤呵呵一笑:“用不了。”

“后来的事实教育了我,散布式数据库是所有散布式系统里最难的阿谁。。。”

坐在我对面的阳振坤苦笑。

阳振坤,拍摄于2010年

(三)“保藏夹”第一战

2010年6月,光杆司令阳振坤出街。

他面前要处置的问题有千万万,但最次要的就一个:没人想用,也没人敢用他的“散布式数据库”。

因为其时淘宝的数据库已经拆分。拆都拆了,换上的 MySQL 又根本运行平稳,脑子一般的人谁也不会再折腾那件事儿了。

于是45岁的阳振坤拿着本身的 PPT 在淘宝各个营业线驰驱宣传,像极了一个亟需养家糊口的“大龄推销员”。如果那时候有微信,他必定每天两万步。

功夫不负苦心人,总算有一个团队愿意吃螃蟹,那就是淘宝里的一个小版块——保藏夹。

保藏夹团队之所以要吃螃蟹,也不是因为他们看好散布式数据库,而是有一个实其实在的“难言之隐”。

什么难言之隐呢?

来,回忆一下你利用保藏夹的过程。

假设你保藏了100件商品。点开保藏夹,100件商品就会霎时跳到你的面前,每一个商品都显示它的实时形态——好比最新价格是几,能否下架,等等。

你可能想不到,就是那么悄悄一点,却苦了保藏夹背后的数据库,那一刻它要去淘宝商品库里挨个调取每一件商品的实时详情,相当于一霎时把100件商品拜候了一个遍,再把所有需要更新的价格、形态逐个写进本身的数据库,最初呈现给你。(那一切都在零点几秒内发作)

那里要科普一个小常识:商品的价格信息往往就是一两位数,换成计算机术语就是1-2个Byte,但因为手艺限造,计算机对硬盘操做最小的单元是4KB,4KB=4096Byte。也就是说,若是数据库只想改一个价格信息,它也必需读出来一整块4KB的数据,然后只修改此中几个数字,再把4KB数据整体写回数据库。

注:因为数据读出来之后,原存储位置被释放,所以一般会写回到另一个处所

所以,若是一次性读取100个商品,固然只要此中一小部门商品的参数发作变革,却会对数据库额外停止几千倍的写入,让数据库办事器忙得不成开交——那就叫做“写入放大”。

其时保藏夹的办事器只要100台,眼看人们在保藏夹里堆的商品越来越多,团队壮着胆子为明年申报了400台机器的预算,就如许还纷歧定够。。。

阳振坤听完了保藏夹团队的难言之隐,眉头一皱,计上心来。他的法子如下:

“内存”那种东东没有4KB的调取下限,并且读取速度是硬盘的100倍摆布,所以只要新设想一个数据库,把商品的最新信息放在内存里。用户拜候保藏夹的时候,数据库先去硬盘上把根底的数据找来,再去内存里读取最新改动的部门,叠加之后呈现给用户,问题就处理啦。

每过24小时,凡是在后三更比力闲的时候,数据库会同一把前一天内存里的“增量数据”写入硬盘,清空内存,明天将来再战。(那种闲时集中写入还有个益处:能够把数据压缩比做到极致,节省60%摆布的存储空间。)

你可能会问,如许的话还要在内存里标注每段数据对应着数据库上的哪个位置,那不也是额外信息吗?你说得没错,在每个数据旁边,都要加一个指针,标明它是用于更新数据库里哪个参数的。但是即使加上那些信息,写入放大也只要大要几十倍,比硬盘的写入放大低两个数量级。(以其时保藏夹的情况,10G内存就够了。)

如许算下来,保藏夹团队用现有的机器就能轻松应对再多100倍的数据量。

听上去很不错吧。保藏夹的同窗也觉得不错,给了阳振坤老湿一个月的时间把吹进来的牛逼实现,成果阳振坤弄了八个月才交货。。。。

为啥那么久?

列位别忘了,处理“写入放大”只是阳振坤的干线使命。他的主线使命是把那个数据库做成“散布式数据库”。

其时阳振坤刚刚招了几个应届生同窗——处理写入放大,一个月实差不多;把散布式数据库的底座写出来,一年算是快的。

固然时间告急,团队仍是决定给那个“散布式数据库”起个名字先。一位同窗提议,既然我们的目的是星辰大海,要让无远弗届的庞大数据库降生在那个世界上,不如就叫“海洋”,翻译成英语很好听,叫 OceanBase。

矮油不错哦,各人把那个主意告诉阳振坤,求夸奖。

阳振坤其时正急得焦头烂额,说:“叫啥都行,咱们赶紧研究手艺吧!”

OceanBase 的名字就那么稀里糊涂地定了。。。

详细来说,OceanBase 想要做成“散布式”,得处理两个难题:“散布式读”和“散布式写”。

先说简单一点的“散布式读”。

保藏夹数据库连着50台末端机,末端机的角色就像银行柜员一样,在通俗用户点开保藏夹的时候,它们负责对100台办事器构成的散布式数据库停止读操做,然后把数据返回给用户。

因为数据散落在100台办事器上,所以50台末端机中的任何一台都有可能毗连100台办事器中的任何一台,也就是50*100=5000条可能毗连。但那个数目太大了,无法不变维持,所以需要按期断掉此中不常用的九成,统一时刻只留500条摆布的毗连。

如斯,问题根本处理。

再说难一点的“散布式写”。

关于那个问题,阳振坤的处理计划是——暂时不处理。

是的,你没看错。其时时间已颠末去半年多了,而试验了几个手艺计划,都没有很好地处理“散布式写”的问题,OceanBase 拖着交不了货,保藏夹团队气得要死。讲实,保藏夹团队关心的“写入放大”问题已经处理了,“散布式的写”能不克不及搞定,那是你阳振坤本身的逃求。

眼看2011年的“双11”就要来了,一大波剁手党即将抵达战场。目测若是 OceanBase 再不交货,保藏夹铁定要跪,他们已经起头磨刀筹办来砍人了。。。

没法子,OceanBase 只好暂时放弃手艺攻关,把写入增量数据的内存都集中在此中一台机器上(集中式写入),就如许交付了。

有意思的是,OceanBase 团队连结着一贯“不输嘴”的傲岸,把那个版本定名为 OceanBase 0.1 版,意思就是:那个工具在我心里只完成了一点点,哼!

0.1 就 0.1 吧,关于保藏夹团队来说足够处理燃眉之急。固然还有很多小 Bug,但幸亏都在“双11”之前排查清晰,保藏夹擦着冷汗,平安冲过那年“双11”。

OceanBase 首战告捷。嗯,根本告捷吧。

(四)“两年倒计时”和出走付出宝

阳振坤站在广场上吆喝:“保藏夹第一个吃了螃蟹,谁愿意做第二个?”

各人都往撤退退却了一步。。。

2012一全年,阳振坤疯了一样把团队十几个同窗都派进来,逮住人就问:你要不要用 OceanBase?

然而,只要零散几个小营业“礼貌性”地用了 OceanBase,何足道哉。各人背后口耳相传:传闻了么,OceanBase 能把一个月的活儿干成八个月,双11前还在修 Bug,差点把保藏夹给坑了。。。

不外阳振坤却不完全认同:

数据库就和年轻人一样,是磨练出来的,越用才气越发现问题所在。你看 Oracle,那是磨练了四十年的成果,若是一个大学生刚刚参与工做,老板总不给他时机,那他怎么生长呢?

事理各人都懂,可是实求到哪个营业,营业同事们又都咂咂嘴,语重心长:阳教师我不是不帮你,我那不太适宜啊。。。

就如许,时间推进到了2012年秋天,吴妈的“两年之约”眼看就到了。结论很明显,“散布式数据库”没能证明本身,阳振坤站在信赖的荒原上,心急如焚。

10月底,阳振坤再也不由得了,一拍桌子,从北京飞到杭州,坐在了阿里巴巴 CTO 兼老同事王坚的办公室里。

王坚能帮他么?欠好说。

说实话,那段时间王坚本身的日子也其实不好过。他力主缔造的阿里云,同样是从零起头研发,彼时正履历各人最剧烈的的嘲讽和白眼。多量优良的法式员其实看不到光亮,在那年秋天深鞠一躬,就此别过。阿里云摇摇欲坠。

两人相对无语。做成一件事有多灾,相互心里谁不清晰呢?末端,王坚对阳振坤说:“你安心,先归去吧。我心里有数了。”

两周之后,一纸调令在集团公布:

2012年11月15日,OceanBase 所有人员从淘宝调入付出宝。

把 OceanBase 团队调入付出宝,王坚是有战略考虑的。

1、淘宝已经把“账本”拆分,并且用了开源的 MySQL 取代了 Oracle,不合适冒险利用理念那么超前的数据库。

2、付出宝尚未把“账本”拆分。究其原因恰好是它间接和钱打交道,关于数据的平安要求极高,若是用 MySQL 取代 Oracle,以其时的手艺开展程度有必然的风险,不敢轻举妄动。

3、若是在付出宝,OceanBase 有才能获得信赖,有朝一日间接替代 Oracle,付出宝的数据库手艺就不只去了 IOE,还不消拆账本,还实现了手艺跃迁,一箭三雕。

当然那一切只是王坚的设想,他也只能帮到那了。余下的,就看老伴计阳振坤有几实本领了。

公然,参加付出宝几个月后,第一章提到的“账本危机”就不能不提上日程了。

“若是列位信赖我,用“散布式数据库”取代 Oracle,我向各人包管,未来我们能把数据库做到无限大!”

此刻你再体味阳振坤在会上说的那句话,就已经不是一个手艺大佬的低调夸耀,反而颇有背水一战的味道了。

听完阳振坤的毛遂自荐,鲁肃缄默很久,提出一个曲击灵魂的问题:

你 OceanBase 用什么手艺来保障账户不丢一分钱?

阳振坤敢揽瓷器活,必然是怀里有金刚钻。过去一年,固然没有大的营业“临幸”,但是 OceanBase 的手艺不断在同事们的勤奋下稳步迭代。

OceanBase 处理那个问题的办法就是“三副本”。

“三副本”是个啥?

1、三套 OceanBase 数据库绑在一路工做,一个做“主咖”,两个做“备胎”。假设你在付出宝上倡议一笔转账,那个信息会同时发给三个库。

2、主咖接到转账申请后,先不焦急记录在案,而是询问两个“备胎”,你们是不是也收到了那笔申请。

3、至少一个备胎回复“收到”以后,主咖才会把那笔交易记录在案。于是,每一笔交易城市包管至少由两个数据库记下来,所以任何一笔交易都不会丧失。

那种操做不是阳振坤的原创,而是源自1989年的一篇论文,最早的现实应用大要是在2000年摆布的谷歌内部。只是在2013年的中国,还没有人如许玩弄数据库。

平心而论,鲁肃是不世出的手艺天才,一个手艺能不克不及管用,有没有破绽瑕疵,他用鼻子都能闻个八九不离十。听完那个手艺设想,他说:“阳教师,我撑持你去尝尝。”

鲁肃的话说得很隆重,那也是不得已。

若是 OceanBase 的步子迈得太慢,那么付出宝面临逼近的“账本危机”就可能少一样重兵器,吉凶未卜;若是 OceanBase 的步子迈得太快,万一手艺实出缺陷,凡是丢了用户一分钱,对付出宝的声誉都是扑灭性的冲击。别说鲁肃,谁都负不起那个责任。

不外,至少得到了口头撑持,阳振坤高兴地回到团队,率领各人起头了 OceanBase 的“三副本”晋级。

又是一年寒暑。

(五)从1%到10%,从0.1到1

到了2014年5月,OceanBase 三副本末于停当,版本号晋级为 0.5。

可是阿谁梦魇一样的老问题又呈现了——没有营业团队敢吃螃蟹。。。至于为什么不敢用 OceanBase,又都说不上来。他们只是收收吾吾:觉得不不变,惧怕性能差,担忧出问题。

就那么干挺了两个月,每一天关于阳振坤来说都是漫长的煎熬。他末于不由得了,给鲁肃和蚂蚁金服 CEO 彭蕾发了一封邮件。

团队的同窗们看我的眼神,每天都从希望到绝望,我是实的不晓得怎么给他们交代。情急之下,才轻率写了那封信。

阳振坤回忆。

那封信发出一礼拜后,鲁肃找到阳振坤:“在接下来的双11,OceanBase 会承担付出宝交易流水库 1% 的流量,我叫了交易流水团队的同窗,咱们一路对接!”

鲁肃亲身坐在督战室,对营业团队的同窗说:你说说看,OceanBase 到底有什么问题,要说详细的,不克不及说“觉得不不变,惧怕出问题”那些虚的。

我出格感激鲁肃,固然只是给了流水库的1%,但是他其时必定接受了庞大的风险和压力,那是对我莫大的信赖。

阳振坤对我说。

流水库的 1% 由 OceanBase 承担,那剩下的 99% 呢?当然是老牌选手 Oracle。

然而戏剧性的一幕呈现了。

就在双11降临之前,阿里巴巴会停止“全链路压力测试”——模仿双11当天的流量洪峰,查抄手艺上有没有疏漏。

成果,承担99%流量的 Oracle 屡次瓦解,无论若何通不外测试,而一旦把它承担的流量降为90%,就恢复一般。。。事实已经很明显:Oracle 的现实性能极限已经被触碰着了。

于是就在双11降临前两周,鲁肃临时修改方案,让 OceanBase 承担10%的流量,阳振坤团队临危授命。

11月10日晚,蚂蚁金服 CEO 彭蕾专门来到 OceanBase 的做战室,问阳振坤:“阳教师有自信心吗?”

阳振坤指指窗户,窗外深秋的树叶正在风中婆娑。“不胜利我们就跳下去。”他安静地说。

“其时你们在几楼?”我问。

“7楼。”他说。

“若是没胜利,你实的会跳吗?”我问。

“我们的 OceanBase 现实上摆设了承担100%交易数据库的才能,也就是说若是 Oracle 完全不起感化,我们也能扛起来,那个手艺自信我是有的。”阳振坤笑。

如今阳振坤活生生地坐在我面前,你应该能猜到,那次“双11”的成果能够用完美来描述。

2014岁尾,阿里巴巴集团召开了“双11”复盘会。阳振坤做为演讲者,从头至尾分享了 OceanBase 的手艺设想和艰苦过程。

那一场分享,深深烙在阳振坤的记忆里,挥散不去。

恰是从那时起,OceanBase 那个曾经被“嫌弃“的少年,一点一点勤奋奔驰,脱节了死神的逃击,被越来越多同事和手艺人发自心里地承受和尊崇。

OceanBase 后来获得了2015年蚂蚁金服最重磅的奖项——SUPER MA。那是时任蚂蚁金服 CEO 彭蕾在给 OceanBase 团队颁奖。

OceanBase 公然人如其名,实的和海洋一样,差点把开创人都”淹死“。。。阳振坤在水面之下潜行五年,此刻也末于能够浮出海面,舒爽地换一口气。

不外也仅仅是换一口气——此时摆在他面前的,还有阿谁早就应该处理的大难题。

你还记得吗,OceanBase 仍是个半废品,它只处理了“散布式读”的问题,没能处理“散布式写”的问题。

其实,履历了两年多时间,那个问题的处理计划在阳振坤的脑海里已经成熟,只是团队存亡未卜,不断没能腾出手来做晋级。

接下来中哥就给你科普一下“散布式写”是怎么处理的。

散布式写更大的难度其实就在于包管 ACID 中的阿谁 A——原子性。

仍是举阿谁例子。

假设 A 给 B 转100块钱,因为是“散布式数据库”,A用户的账户存在A机器上,B用户的账户存在B机器上。

若是交易发作时,负责给A账户扣100块钱的A机器死机,没有扣胜利,而负责给账户B加100块钱的B机器工做一般,加上了100——那就会形成付出宝丧失100块。

反之,若是负责给A账户扣100块钱的A机器一般,已经扣掉100,而负责给账户B加100块钱的B机器死机,100块没加上,那么用户就会丧失100——最初付出宝还要补偿用户100块。

为了包管以上那两种为难的场面不发作,OceanBase 1.0 接纳了整整一组手艺,但最次要的是两个,我给你讲讲。

1、投票机造。

适才说过,数据库是“三副本”,也就是任何一个账户,都有一个主咖两个备胎共三份不异的数据。详细到账户A来说,它的数据必然同时存在三台机器上。转账时,至少两台机器施行完毕才算转账完成,

那意味着,三台机器里有一台坏掉,其实不影响转账的施行。

同时,三台机器之间彼此实时发送“心跳信号”,若是有一台机器挂了,其他两台马上就能觉得到,处置完手头那个交易后,马上向系统发送警报,系统主动为他俩婚配一个新同伴,三台机器继续工做。

而换下来阿谁坏机器,交给手艺人员维修,修好后从头上架成为备用机器,期待进入战斗序列。

也就是说,除非两台机器在同年同月同日同分同秒同毫秒坏掉,不然数据库的工做不受影响。

即便是那还不敷,在关键的节点,OceanBase 会接纳五个节点投票。也就是除非三台机器在同年同月同日同分同秒同毫秒坏掉,不然数据库的工做不受影响。那个概率已经低到尘土里了。

2、监视机造。

认真想想,除了机器坏掉,还有一些情况会毁坏交易的原子性。例如:A账户要扣掉100块,但是它的余额只要90块,或者已经到达了今天的转账限额,那种情况下,若是贸然给B账户加了100块,A账户却不敷扣,就会陷入费事了。。。反之若是B账户形态有异常,不克不及加100块,同样会有费事。

处理那个问题的办法,就是引入一位“评判员”。

评判员站在A账户和B账户旁边,它的工做流程是如许的:

1)评判员问A账户:你的三台机器都没问题吧?A账户说:没问题。

2)评判员问A账户:你的账户允许扣100吗?A账户说:允许。

3)评判员问B账户:你的三台机器都没问题吧?B账户说:没问题。

4)评判员问B账户:你的账户形态能承受加100吗?B说:允许。

5)那时,评判员吹哨,A、B账户同时冻结。

6)A扣100,B加100,两边向裁判报告请示“胜利”。

7)评判员再吹哨,A、B账户同时解冻。

以上所有步调都是定时间挨次完成的,卡在任何一步,账目都不会乱,一分钱都不会丢。完全契合“原子化”的要求。

监视机造示企图,当然评判员也由三台机器构成

曲到处理了“散布式写”,散布式数据库的所有手艺障碍才被打通,用于存储新写入内容的内存能够散布在每一台办事器中,就像下面图示:

就如许,2016年,一个实正的散布式数据库 OceanBase 1.0 横空出生避世。阳振坤跑了六年的梦想马拉松,末于看到了第一个里程碑。

而自天空俯瞰,一场“角马大迁移”正在发作。

自从2014年付出宝交易流水库接纳了 OceanBase,蚂蚁金服的其他营业起头一个个辞别 Oracle,越过湍急的河水,冲向了散布式数据库 OceanBase 的彼岸。

那场迁移越来越壮阔,在赛博空间里扬起尘土,在手艺人心中暴裂无声。

到2017岁尾,蚂蚁金服核心系统中的最初一个 Oracle 数据库被 OceanBase 替代。从此,Oracle 只呈现在蚂蚁金服的汗青博物馆中。

正如阳振坤所意料的那样,几亿用户关于 OceanBase 的淘洗磨练,不只没有击垮 OceanBase,反而让它的表示越来越不变。OceanBase 处置的所有账目,一分钱都不会错。

不外,在阳振坤眼里,Oracle 绝不是被他们秒掉的渣渣,恰好相反,Oracle 不断是他们心中的楷模——OceanBase 七年征程,只是接近了老迈哥的背影罢了,并没有值得骄傲之处。

况且在2017年,OceanBase 和 Oracle 比力,还有一个硬伤。

是什么硬伤呢?

你还记得“葫芦娃农村信誉社”的故事里,爷爷为了办事好乡亲们,需要每天晚上让数据库用各类姿势阐发报表么?

2017年的 OceanBase 阐发报表的才能其实是很弱的。

究其原因,仍是“散布式”形成的——在“散布式数据库”的手艺系统里,A给B转账,C给D转账,那两笔转账互不干扰,若是你非要问它俩哪个在前哪个在后,OceanBase 就无法切确统计了。用专业术语讲就是:做不到事务的“串行化”。不晓得先后,良多阐发就做不了。

而老迈哥 Oracle 因为是集中式数据库,相当于所有交易都是一台机器完成的,那显然每一笔交易的先后挨次都能排得清清晰楚,什么姿势的报表都能出,杠杠的。

为领会决“串行化”问题,他们必需马不断蹄继续奔向 OceanBase 2.0。

末于,在2018年,OceanBase 团队搞定了串行化的手艺,他们处理的体例是酱的:

在数据库身旁,专门设立一个节点,那个节点什么都不干,只负责一件事——发号。

你去饭馆吃饭的时候,若是人太多,办事员会给你一个号对吧。那也是类似的原理:

1)数据库里的裁判甲要停止操做时,要先跟“发号员”申请一个号段,例如10000-20000号。

2)裁判甲把本身要做的操做在本身内部排好挨次,例如10001、10002、10003。。。。。

3)如许在整体数据库里,每一个操做就有了本身奇特的编号,且不会反复。例如“A转100给B”那个操做是10005号,“C转100给D”那个操做是20456号。那么,“C转100给D”就必然发作在“A转100给B”之后。

搞定串行化之后,OceanBase 已经在功用上逃到了 Oracle 的 40%摆布。没错,用了八年只逃上了 Oracle 的 40%,那就是中国公司和美国公司的实在差距。

但我们也不消妄自绵薄,因为接纳了下一代的散布式架构,OceanBase 实现了“无限大”的扩展性,在性能方面比 Oracle 高到不晓得哪里去了。

固然“兵士甲”“兵士乙”单打独斗打不外关二爷,但是千军万马生擒关二爷却是情理之中的。那像极了《三体》中所描述的“降维冲击”——高维空间的蚂蚁,能够穿透低维空间的大象。

OceanBase 2.0 全局示企图

(六)“登顶珠峰”

固然在蚂蚁金服内部,OceanBase 已经接过 Oracle 的接力棒,但放眼望去,中国的无数银行、金融机构却没有如斯强的研发力量——他们仍然被困在低维空间,利用 Oracle 数据库。

穷则独善其身,达则兼济全国。阳振坤决定兼济全国。

2015年,阿里巴巴主导的银行网商银行利用了 OceanBase 数据库。2017年,南京银行的互联网银行营业利用了 OceanBase 数据库。人保安康险、西安银行、广东农信等陆续有几十家金融机构成为了 OceanBase 的用户。

但是讲实,那个数量比阳振坤料想中要更少。因为他仍然面对阿谁古老的命题:

想昔时,可是鲁肃、彭蕾、刘振飞、王坚、马云一寡大佬的信赖,才让 OceanBase 一步一个坎儿在蚂蚁金服生根抽芽,现在,各大银行跟你蚂蚁金服又不太熟,凭什么安心地把最核心的营业跑在利用你开发的数据库上?

阳振坤专门跑去问过良多银行的手艺指导:“你们不安心国产的 OceanBase,又为什么安心美国的 Oracle 呢?”

银行的同事说:“你去查查跑分啊,Oracle 是第一名,你 OceanBase 第几名啊?都没有在榜单上。。。”

银行说的“跑分”,恰是 TPC-C。

故事讲到那,TPC-C 末于又呈现了。到底啥是 TPC-C 呢?

要大白 TPC-C,得先大白 TPC。

1967年,英国印刷公司人员约翰·巴伦突发奇想,创造了一种随时随地都能取到钱的自助提款机,也就是ATM机,80年代,ATM机起头风行,因为无人值守,它的账目就得通过主动化的数据库来办理,于是各大软件公司纷繁起头研发数据库系统,筹办趁着风口赚一票。

那时一个问题呈现了, 王婆卖瓜自卖自夸。各人都说本身的数据库好,事实怎么才是好呢?

于是工程师欧姆里·塞林(Omri Serlin)说服了八家数据库厂商,各人同一筹议一个尺度,就根据那个尺度,用跑分的体例测试数据库的才能,谁的分高谁就凶猛,老少无欺。

Omri Serlin

于是,一个专门负责帮各人跑分的组织就成立了,那就是 国际事务处置性能委员会 TPC(Transaction Processing Performance Council)。

TPC 会对数据库良多方面的性能停止测试,而 TPC-C 是此中最次要的——针对在线交易数据库的性能测试。

TPC-C会模仿一系列的交易动做,例如下单、付出、订单查询、库存查询。谁能处置得最多,最不变,谁的分就高。

别的,TPC-C 很自在,不限造你的数据库跑在什么办事器上,只要你用的硬件是市道上公开销售的就能够。所以,各家数据库为了争夺,八仙过海各显神通,经常搞出奇葩的硬件组合。此中恩怨,一本金庸小说都写不下。

总之,TPC-C 成为了数据库界的“华山论剑”,谁跑分更高,谁就是武林牛耳,不平不可。

不平也行,不平你就跑个更高的分看看。

阳振坤不平,OceanBase 要跑分。

想昔时,Oracle 在 TPC-C的测试中可是用跑分超越老敌手 IBM 两倍的华美姿势夺得的牛耳。

现在OceanBase 能不克不及同样超越 Oracle 两倍呢?

阳振坤的结论是:不克不及超两倍,能够超十倍。

散布式数据库必然能够超越集中式数据库十倍,以至百倍,那是数学原理决定的。那也是我做 OceanBase 第一天就抱定的信念,不克不及超十倍百倍,我们为什么要做?

阳振坤看着我。

就在那一霎时,我面前似乎坐着阿谁刚刚考上北大数学系,意气风发的少年。也许有无数凶猛的仇敌等在前路,也许越过山丘毕竟是一片荒凉。但此时此刻,他就是那样无所畏惧,相信一切。

他把做 TPC-C 测试的设法向上报告请示,指导们一边十分撑持,另一边又有点担忧——万一大张旗鼓参与测试,筹办物料、机器,折腾一个遍,成果测试出来成果被 Oracle 八年前的分数吊打,蚂蚁金服的脸往哪放??

那种觉得,颇像1840年大英帝国向清王朝宣战前的心态——自信心却是有,但对面究竟结果是叱咤风云几百年的老帝国,万里出兵兴师动寡,万一实打不外可怎么办?

鲁肃最末批复,咱们先别搞十倍的,我们就做一个大小适中的 OceanBase——恰好控造在超越 Oracle 得分一倍就行。

于是,项目正式立项。

中国公司参与 TPC-C 测试,在汗青上是头一遭;散布式数据库参与 TPC-C 测试,更是史上第一次。

TPC-C 审计师在和 OceanBase 团队交换

至于测试用的硬件,因为 TPC-C 没有出格限造,阳振坤选择了剑走偏锋——租用阿里云。“散布式数据库”跑在“散布式计算上”,相当朋克。

在阿里云里,210台虚拟主机齐拆排阵构成地基,OceanBase 在其上如参天大树千头万绪,蔚为壮不雅。用那种体例,阳振坤和老指导王坚逾越时空,相视一笑。

2019年8月,测试末于起头。TPC-C 的审计师特意从美国赶来杭州记录测试过程。两个月后,测试成果出炉。

蚂蚁金服60880800分,正好超越 Oracle 的30249688一倍,没控造太精准,比一倍多一点点。。。

时隔九年,武林牛耳末于易主。

OceanBase 打败 Oracle,正如九年前 Oracle 打败 IBM 。一代新人换旧人,汗青历来就是如许轮回。

TPC-C 测试不只要看数据库的绝对性能,还要看性能和成本的比值,也就是单元性能的成本。那个数值上,OceanBase 是6.25人民币,Oracle 2010年的值是1.01美圆,根据汇率来算,OceanBase 单元性能成本更低,那同样要归功于散布式数据库能够跑在成本低廉的云计算上。

那下,OceanBase 末于能够庆贺了吧?并没有。

在阳振坤心里,那件事儿才完成了一半儿——说好了要超越 Oracle 十倍,少一分都不是十倍。

执拗至此,令人喟叹。

于是在2020年,OceanBase 又马不断蹄地起头了第二次测试,此次,1560台虚拟主机在阿里云中排阵,人类汗青上更大的散布式数据库矗立在赛博空间中。

第二次测试的过程恰逢全球新冠疫情,TPC-C 的审计师们也被迫在家办公,通过收集长途监控 OceanBase 的数据。

漫长而灼心的期待。

自从2010年 OceanBase 降生以来,那场期待已横跨十年,漫长到最固执的看客都已经打起了哈欠,可是阳振坤他们还在咬牙前行。

好像一小我决定徒手爬上万仞峭壁的那一刻,你就只剩下本身,你必需把所有别人的不解、嘲讽、鼓舞和祝愿通盘安顿在山脚,独一能带到空中的,就是心跳。

2020年5月19日,跑分成果出炉,707351007。(留意,上一次是六万万,此次是7亿。)

OceanBase 火力全开,释放本性,逆六合跑到了本身上一次分数的11.6倍,是 Oracle 2010年纪录的23倍,单元性能的成本也猛降至3.98元人民币。

至此,连最苛刻的人都要感慨,OceanBase 正在把上个时代抛在死后。

不外,无论阳振坤仍是蚂蚁金服都大白,跑分其实不意味着一切。

数据库的生态像一个花园,只要差别的人信赖它,利用它,才会让它变得丰硕易用,成为数字世界的基石。在那个星球上,Oracle 的生态像一个庞大的热带雨林,它毫无疑问仍然是数据库的王者。面临 Oracle 的“热带雨林”,OceanBase 的花园任重道远。

大象仍在聚光灯下,但蚂蚁已经爬上舞台。

OceanBase 团队和彭蕾、井贤栋

(七)那些希望

2020年,阳振坤55岁。每天晚上下班回到家大要十点半,他会换一套衣服,在小区里快走半小时,大要3000米,若是下雨就换成室内走路,那是他对峙了22年的习惯。

OceanBase 团队,从最后的一小我,到0.1版本时的20人,到1.0时的50人,到2.0时的100人,到现在所有人都在为 3.0 加班加点。十年难言顺遂,容颜渐老,但大大都人都未离队。

“有什么工具支持你们走下来吗?”我问。

“集中式数据库的手艺已经走到了尽头,我丝毫不思疑在将来会有几家公司突破“散布式数据库”的手艺瓶颈。不外,目前我们是世界上独一的阿谁。若是说那么多年有工具在支持着我,那就是理由。”阳振坤说。

数据是赛博世界的基石。你在淘宝上淘到的第一个宝物,你存在余额宝上的每一笔积蓄,那些你垂垂淡忘的过往和小奥秘,数据库城市帮你记得。

由此看来,一个属于中国人本身的数据库有更深远的意义。

我问阳振坤:“你是不是一起头就想造出国产可控的数据库?”

“没有。”他斩钉截铁。“我只是想做出来一个散布式的数据库。”

最起头的时候初生牛犊不怕虎,我认为5年就能把 OceanBase 做个大要的。那时候晓得数据库那条路有那么难,也许都不会起头了。其实曲到今天,我们仍然把 Oracle 做为进修和追逐的对象。他们有太多积淀和闪光点。

阳振坤实话实说。

2020年,OceanBase 10岁。阳振坤间隔退休还有正好5年,在他退休时,OceanBase 能否逃上 Oracle 的脚步,仍是个未知数。

“你退休后,OceanBase 怎么办?”我问。

“我会交给团队的同窗们,他们会比我优良,会比我更爱 OceanBase。”他说。

OceanBase 同窗们翻到了十年前的一张珍贵的照片,那时候各人都很年轻,相信一切。

我突然想到了鲁迅写自一百年前的《故土》。人心里有“偶像”,无论实假,便能使人迈开脚步。只要出走,就会有路,远方就在向你靠近。

辞别阳振坤那天晚上,我做了一个有趣的梦。

两个背包的年轻人偶遇在乡下巷子。他们决定结随同行。我坐在路边的石头上,其实猜不出他们各自的目标地是哪里。于是我决定逃上他们,走在他们身旁。

我其实不焦急提问,只是默默走着。

谁的目标地是下一个镇子的酒吧,谁的目标地又是世界的尽头,时间自会告诉我谜底。

腾讯数据库的三场战役

文 | 史中

片子《思维特工队》的封面上,有五个颜色各别的小精灵。他们在仆人公小女孩的脑海里上班儿,专门负责整理她的记忆。

小女孩儿的每段新履历,城市被涂上“喜怒忧恐厌”那五种颜色之一,然后封拆成水晶球,存入记忆库房。不外故事里的小女孩有点丧,其时她刚刚转学,每天都生活在被目生情况收配的恐惧中。为了让她的记忆里多一些欢乐,那几个小精灵每天上班996,差点累进ICU。

昔时,中哥看完好部片子热泪盈眶——那几乎是一部绝好的。。。。数据库科普片子啊!!

啥是数据库?能吃吗好吃吗?

其实数据库其实不奥秘,就是把怕丢的工具记在小本本上。最简单的数据库人人都见过,就是 Excel 表格嘛:女神动不动就搞个 Excel 表格把备胎们的姓名、财产情况、消费记录都记下来,便利同一办理。但是那种靠手动查询和改写的表格,经常眼一花就搞串行,查了半天还叫错名字,难堪大用。

《思维特工队》里那套记忆系统就高级多了——每一个记忆小球,就是一段数据。有个灵敏的机械手,不只能够随时批量存入新数据,还能按照前提实时找出指定命据,精准无比绝不出错。那差不多就是实在世界里“数据库”的样子。

讲实,你每时每刻都洗澡在数据库的恩泽下。

随意举个栗子:你翻开亲爱的女神票圈那一刻,她的所思所想,每一张泛着香气的美颜自拍,都是从微信的数据库里掏出来贴到你脸上的。女神“呵呵去洗澡”之后,你本身去吃鸡,每次战果也都是会记录在游戏数据库里的。

别看我说得轻松,可万万不要小看数据库的手艺含量。

假设你在QQ上改了本身的个性签名,若是下次登岸的时候 QQ 告诉你:“哎呀前次你改的是啥来着,我给忘了,再说一遍呗?”

你能把电脑砸了。

只是个性签名错了你都忍不了,若是你的银行账户钱数错了怎么办?若是神舟飞船的轨道数据搞错了,又怎么办?

现实上,在浩瀚如海的数据大水里,几毫秒间就能锁定命据位置,查询改写,一字不错,一字不漏,是一项世界级此外软件工程才能。

不夸大地说:数据库是能够和操做系统、芯片手艺相提并论的“民族复兴公用手艺”。

踢个球什么的,中国队不爱和此外国度计较,但平胸而论,搞计算科学,中国队历来是认实的。那两年拽着云计算的衣角,中国在数据库范畴停顿迅猛。腾讯精,百度倔,阿里喷热血,华为怼一切。大厂性格差别,却各自由数据库范畴立功立业。

那里面最有反差萌的,当属腾讯数据库。

腾讯数据库曾经穿越战火,在企鹅王国的生长过程中,用钢甲死磕弹壳,硝烟散尽,熠熠放光。而腾讯数据库的创作发明者,那些老湿傅们,却羞赧低调,把军功章藏好,继续埋头研究亲爱的手艺。事了拂袖,江海余生。

但他们的故事不会如烟消失。

因为汗青恰是一个超大的数据库,一个字节都不会丢。比来和腾讯的老湿傅们聊天,往事如沙钩沉。我迫不及待给你讲述腾讯数据库的三场战役。

(一)微信红包的“珍珠港”

腾讯的故事,还得从 QQ 说起。

2006年,QQ 同时在线人数迫近2000万。

那让 QQ 产物团队兴高采烈,却把底层手艺老湿傅吓出了一身冷汗。那2000万人都是凶猛的动物,他们同时彼此发信息、查看材料、改写材料——那些操做产生的数据就像机枪一样把枪弹喷射向数据库,而数据库必需化做《黑客帝国》里的 Neo,把每一颗枪弹都接住。

那时候的腾讯还在利用开源的数据库,此中以 MySQL 数据库为主。啥是 MySQL?若是非要类比的话,你能够理解为它是数据库里的 Android——免费、便利,但不包熟包甜。

但在阿谁热血的年代,QQ 用户量增长速度缔造了人类汗青,开源数据库仍是个宝宝,被海量数据按在地上摩擦,呈现出“迟早要跪”的姿势。腾讯手艺团队告急组织了一个“特战队”,目的只要一个——研发一款可以支持起几亿用户的数据库。

一年后,腾讯自研的第一个数据库呱呱坠地,那就是后来声名显赫的“CKV”(其时还叫做TDB)。

那里中哥强势插入科普一句:CKV 和 MySQL 有个奇奥的区别——CKV 长短关系型数据库,而 MySQL 是关系型数据库。

给你画两张图解释一下吧。

关系型数据库(简称 SQL)就像是教室,童鞋们每人手里举着一份数据,规端方矩地排排坐,谁是谁的同桌,谁是谁的前座,那种关系都摆设的明大白白,教师说“第三排全体起立”,第三排的同窗们就能同时站起来。教师说“第一列更高的同窗出列”,他就会站起来。办理起来很便利。

关系型数据库(SQL)

非关系型数据库(简称 NoSQL)像是操场,童鞋们踢球跑步搞基随意浪,固然不像“关系型数据库”有那么多弄法,但是教师也能找到想找的人。他站在旁边大吼一声“林蛋大”,楚中天就会跑过来。教师喊“五年级同窗集合”,五年级的孩子们也会跑过来。

非关系型数据库(NoSQL)

其实,“关系型数据库”是其时绝对的手艺支流。因为那种数据库已经有30年的汗青,它把数据存储得十分标准,对强迫症十分友好,又撑持良多骚骚的查询计算体例。那为啥腾讯还偏要立异,做“非关系型数据库” CKV 呢?

底子原因是,腾讯做的工作是“社交”。

如今说起来“社交软件”,小孩子都懂。但不要忘了,其时整个互联网刚刚开展到社交时代,没有人晓得应该啥样的数据库撑持社交最适宜,只能靠老湿傅的曲觉,摸着鱼过河。

老湿傅们选择非关系型数据库有两个理由:1、社交数据由用户本身生成,数量庞大无比,需要更低成本的存储和办理体例;2、社交场景关于数据读写速度要求很高,但数据之间却其实不需要出格频繁的彼此计算。

后来的汗青也证明,那个选择是对的。

我们故事的第一个讲述人程彬,2008年一结业就参加腾讯了,他被分入的团队,刚好就是 CKV 数据库团队。

程彬

参加 CKV 的时候,那个数据库已经能很好地撑持腾讯的营业了。程彬本认为本身能够躺在前人的功效上恬逸一阵子,没想到,他大大低估了腾讯那家伙造造爆款的才能。

那段时间,“QQ空间”突然大火,和其时更大的社交收集 Facebook 平起平坐。爆点发作在2009年,QQ空间里上线了“QQ农场”“老友买卖”“抢车位”那一票社交游戏。

人们偷菜偷来偷去不亦乐乎,每偷一棵菜,就要改写一下数据库,数据库团队差点疯了。

程彬说,那个账是能算出来的:

其时我们用的是每分钟15000转的顶级机械硬盘,它每秒钟能读写300次。为了包管数据不丢,还要对每份数据别的做两个备份,加上原数据总共三份。根据其时人们那种疯狂的数据拜候强度,光是撑持一个“偷菜”就得一万台办事器,那谁顶得住啊。。。

留意,那里的瓶颈关键在于“每秒拜候次数”太多。就像你每天喝八杯水能喝一辈子,但间接把你扔到泅水池里,你多半就喝不了了。

有什么工具能撑持高并发拜候吗?有,那就是“内存”。内存的拜候并发能够到达硬盘的100倍,但它有个寡所周知的弱点,一断电,数据就没了。

于是,同事们绞尽脑汁,想出了一个“中西医连系”的计划:把拜候最频繁的数据库放在内存里,每隔一段时间,内存再向硬盘同步那部门数据。

然而,内存仍然是很贵的设备,买几万条也受不了。于是 CKV 团队又做了一套调度系统,可以主动把差别时段比力“热”的数据“倒着班”放进内存。例如,午饭后白领比力喜好刷空间,那时就把白领们的数据放到最便利读取的处所;晚上下课后,大学生们又起头刷空间,那就把大学生的数据放在内存。

就如许,CKV 禁受住了极高频度的拜候冲击,并且成本还比想象中廉价了好多。

有道是穷则独善其身,达则兼济全国。CKV 一战成名,腾讯内部孵化新项目,城市间接找数据库团队“借用” CKV,然而,腾讯内部的产物究竟结果有限,数据库想要改动世界,得“飞入寻常苍生家”。

时机很快就来了。

光阴荏苒,到了2010年。那一年,腾讯摊上了大事儿——3Q大战。

此次战争招致了腾讯汗青上更大的一次深思。从此他们一改“不给小厂留活路”的气概,推出了“腾讯开放平台”,希望各人都能分享腾讯的“流量”和“手艺”优势,有钱一路赚,别打架。

你可能猜到了,现在为几十万家公司供给计算力和底层手艺的腾讯云,就脱胎于开放平台。

昔时更先抢滩登岸“开放平台”的螃蟹,以游戏团队为主。他们“馋”的次要是腾讯的流量。但是腾讯觉得,我们的手艺也很好呀,你们要不要用用看?现实很骨感,各人只盯着腾讯的流量,没什么人关心腾讯还有手艺,晓得腾讯还有“数据库手艺”的就更是百里挑一了。。。

指导把程彬他们叫来:“数据库是你们做的,要不,你带着做开发的几个兄弟,本身吆喝一下,卖卖数据库?”

一群全日写代码,一天都憋不出十句话的手艺宅,竟然“被逼”做销售,几乎五雷轰顶。程彬坐在德律风机前面,愁都愁死了。

公然,硬着头皮顺着表格一个个德律风打过去,人家要么就是不需要,要么就是信不外腾讯的手艺,好不容易有一家公司觉得能够试一下,问完价格以后就再也没信了。。。

十几个兄弟那么熬了两三个月,几乎颗粒无收。就在那段时间,好几个骨干成员都跟程彬提出了去职。“还用打德律风问么?那工具能不克不及卖进来谁心里没数?”一位同事分开的时候,撂下了那句话。

程彬压力山大,如许下去,同事们迟早要走光了呀。。。

他一拍桌子,给一位很喜好腾讯数据库但是嫌贵的知音客户打德律风:“我去找你,你给我们当面提提定见。”然后,从一群缄默的手艺宅同事里挑了更爱说话的阿谁,一路买了飞机票去北京。

“你看到那幢特高特标致的大厦了吗?不不不,别上楼。大厦对面的小区,3号楼一单位502,我们就在那里办公!楼道里没灯,小心点。。。”德律风里,客户批示程彬找地址。

那是我有生以来第一见到“民房创业”,三室一厅,七八小我,就在里面黑漆漆地敲代码。我说,我们数据库一个月就几千块钱,也不贵呀。人家告诉我,整个那间办公室一个月才几千块。。。

程彬回忆。

一结业就来到大公司腾讯的程彬,第一次体验到“民间疾苦”,他突然开悟,关于小公司来说,什么海量承载才能,什么世界级高吞吐,都是扑朔迷离;一个廉价、够用的尺度数据库才是最急需的。

程彬认为的创业者↓↓↓

现实的创业者↓↓↓

回到深圳,他们马上确定了新标的目的:在 MySQL 的根底上,起头研发亲民的数据库“CDB”。那就是后来在腾讯云上更受欢迎的“腾讯 MySQL 数据库”。

时间拨回那一时刻,他面临的次要矛盾就是一句话:在包管数据库品量的根底上,更大限度降低成本!!!

数据库的成本怎么降低呢?那里就要说到它的一个小痛点。

数据库利用的硬件一台台尺度的办事器,里面既有计算资本又有存储资本。但既然是尺度办事器,计算资本和存储资本的比例就是固定的。

而人们利用数据库的姿势却千差万别——有时存储空间用满了,计算力还在闲置;有时计算力用满了,存储空间还闲置。

就仿佛有人爱吃饺子馅,不爱吃饺子皮。端上来一盘饺子,他会把馅都挑出来吃了,饺子皮就剩下,浪费了。有人爱吃饺子皮,就会把饺子馅浪费掉。

要想省成本,先从那个资本浪费下手。

于是团队设想了一个“存储和计算别离”的架构,有几台办事器专门负责计算,其他更多机器里塞满硬盘,专门负责存储。就仿佛煮饺子的时候,只煮5个饺子皮,再零丁煮100个肉丸子,如许喜好吃馅的老铁就能吃个够。。。

然鹅,那个新法子,又引入了新问题。

存储和计算之间固然别离了,但他们原来是一家子——要想配合协做,就要频繁地停止信息交换。

其时支流的交换设备就是“千兆网卡”(1000M/Bps)。算一算,一页表单是16kB,除下来一个网卡每秒最多只能传6000屡次数据。你可能会说,多加网卡不就行了?但那样成本不就又上去了么。。。

既然硬件的瓶颈明摆在那里,那别无选择,只能把数据库变小了。

那段时间,数据库的老湿傅们没白没黑地看 MySQL 的代码,但凡不需要的表单功用,就大刀阔斧地删减。程彬给同窗们立了军令状,如果压缩不到4kb,咱们大伙儿去裸奔。。。

同事们有两个选择,一是把数据表单压到4kb,二是熬炼身体,裸奔的时候身段好一些。压力之下,那帮手艺宅做梦都在一个字节一个字节地抠代码,到后来生生把一页表格从16kb给砍到了4kb。再对那4kb的信息停止压缩,最末一页表单只要1kb大小,缩小了整整16倍。

那一顿操做下来,CDB 数据库的成本间接杀到本来的三分之一,开放平台上的用户都惊了,从腾讯云上买数据库,比本身雇人开发还要廉价,那必定愿意碰运气啊!现实上也恰是从阿谁时候起头,大量用户成为腾讯数据库的实爱粉。

回想起那几年,程彬觉得腾讯数据库几乎就是玩了一把实人版的《CS》。不外尼采说得好:那些杀不死你的,只能让你更强大。在严格的情况里杀出来,让数据库团队积累了好多独门经历,那些经历,会在将来的某一天回来“报恩”。

报恩的日子很快就来了。

2014年春天,微信推出了一个“开打趣”的小功用——红包。日后,红包帮忙微信付出一炮轰掉了付出宝的残山剩水。那也被马云称为“偷袭珍珠港”。

让微信付出最不得人心的一次战役,当属2015年微信赞助春晚的“摇红包”活动。

那是其时摇红包的宣传图

把时间再往前拨转,间隔春晚还有两个月时,微信团队的童鞋找到其时的数据库团队,恳求援助。春晚可不是闹着玩的,全国十几亿人民一路,通俗的红包我们通俗的摇。

团队预算了一下贱量,无论是用并发性能强劲的 CKV 数据库,仍是用联系关系计算才能更强的 CDB,恐怕都要跪。。。

最初,两个数据库团队的聪慧爆了棚,他们想到了一种奇葩的解法——把 CDB 和 CKV 合体!

于是,在春晚前两个月,数据库的老司机们起头了“秋名山飙车”,在非关系型数据库 CKV 中插入了关系型数据库的“树构造”,如许在抢红包的时候,系统就不消告诉数据库每个数字的变革,而是数据库按照已有的关键数据,本身补全剩余的数据。无数如许的骚操做结合起来大大降低了对数据库的写入频次。

那年春晚,微信红包一炮而红。

那群数据库老司机,看着付出战场的“珍珠港”燃起熊熊大火,淡淡一笑,春节回来聚餐撸了个串儿,恰似什么都没发作。

(二)《王者荣耀》的“莫斯科捍卫战”

1941年,苏联赤军扬起烟尘,从红场阅兵间接开赴苏德战场前线。斯大林颁发演讲:我们将不吝用尽每一滴鲜血来捍卫苏维埃的地盘和村庄。

此次莫斯科捍卫战,苏联做好了最初的巷战筹办。仅仅妇女和儿童就修建了700公里的反坦克战壕。在几百公里的战线上,两军拉锯,苏军固然单点经常被攻破,但补防战略施行得天衣无缝,兵来将挡水来土掩,听凭德戎服甲车、摩托兵套路用尽,都没法子撕破防线一分一毫。

那场战役并没有神来之笔,苏军最强的战斗力恰好就是——“不变性”。那三个字拯救了莫斯科,让二战的成果成为今天教科书里记录的样子。

而陪伴一款游戏毫无预警的爆红过程,数据库接受的冲击,不亚于一场“莫斯科捍卫战”。

我们故事的第二位讲述人张世维,就曾履历过如许的战役。

张世维

张世维曾在数据库范畴的“殿堂级公司”甲骨文工做,参加腾讯时,腾讯其实面对一个大挑战。

其时的情况其实挺告急的。因为谁也没搞大白,腾讯代办署理的游戏怎么突然一下就那么火,无数玩家涌进《CF》《DNF》,XXXX不亦乐乎。之后,腾讯也蠢蠢欲动,本身开发一些大型游戏。

开发游戏原来就很难,一个游戏所需要的“高性能数据库”,更是男上加男。

没错,张世维团队的使命就是:在最短的时间内,开发一套为腾讯旗下所有游戏供给办事的数据库——TcaplusDB。

适才说过,游戏对数据库的要求,就是苏联对莫斯科捍卫战的要求——不变。无论是游戏玩家突然暴增一百倍,仍是机房突然停电,仍是游戏自己晋级维护。玩家就是一句话,游!戏!不!准!给我停!!!

手艺人,得尊重科学。再高的手艺水准,都难以包管完全不会出问题,所以要想数据库不熄火,最稳妥的体例就是,增加备用数据库。

好比,小明的爸爸参与完小明的家长会,教师说你家孩子不爱进修,三不雅不正,未来前途渺茫。小明的爸爸回家后更好的选择不是揍小明一顿,也不是好好教育他,而是生个二胎。

于是,TcaplusDB 数据库一出生就是“三胞胎”——除了主数据库,还标配一个“热备份数据库”(简称热备)和一个“冷备份数据库”(简称冷备)。

那三份数据库都是实时同步的,能够彼此替代。他们之间的替代关系不是整个替代,而是能够以办事器为单元的“细粒度”替代。举个例子就大白了:假设老迈的左眼坏了,不消让老二整小我来替代他,而是只把老二的左眼抠出来给老迈拆上就行了。

详细工做原理是酱的:

若是主数据库的28号办事器呈现硬件毛病,那么系统就会在0.1秒内把热备办事器的28号办事器切过来继续利用,那边数据库的老湿傅们告急换掉主数据库的28号办事器,把里面的数据补齐,然后系统又会在0.1秒内把办事器切换回来。

整个过程,关于游戏玩家来说底子感知不到。在他们看来,游戏一丝一毫都没有中断。

你可能会问:中哥你不说是“三胞胎”吗?还有个“冷备数据库”,是干嘛的?

答:只要在老迈、老二同时挂了的时候,才会请出老三。因为老迈老二同时挂的概率太低太低了,所以一般用不到老三,就把他先放在冰柜里冻着,需要的时候,告急“解冻”它就好了。当然,若是需要启动冷备数据库,游戏就会中断十几分钟。那种情况,玩家免不了会吐槽,但好在他们的数据一个字节不会丢。正所谓——懵逼半天,归来仍是青铜。

2012年,TcaplusDB 数据库第一次出街,撑持的游戏是腾讯本身开发的页游《夜店之王》。

《夜店之王》

为了继续讲故事,那里中哥先给你科普一个概念:“PCU”。留意,PCU 不是 PUA。。。PCU(Peak concurrent users)翻译过来就是“更高同时在线人数”。用那个数值来评价游戏的火爆水平,简单又曲白。

下次若是你想拆做游戏业内行,你就云淡风轻地问:那游戏的 PCU 是几啊?

要晓得,其时的游戏,大部门仍是“分区分服”的,那个打游戏的童鞋都大白。因为办事器和数据库才能的限造,得把全国分红几个区域,每个区域内部本身玩儿。但是《夜店之王》因为接纳了包罗 TcaplusDB 数据库在内的新手艺,能够做到“全区全服”,全国玩家在一个池子里“大乱斗”,爽得没边。

按照记录,昔时《夜店之王》的 PCU 超越百万。那关于昔时的腾讯自研游戏来说是相当不错的成就。

张世维没有料到,那个数量级的 PCU 在接下来要到来的“手游”海潮面前,几乎就是个渣渣。

浅友们可能还记得,2013年的时候,腾讯冷不丁推出了几个“天天”系列游戏,《天天酷跑》、《天天爱消弭》。

《天天酷跑》的 PCU 很快就冲过了《夜店之王》的记录,张世维很高兴。过了两天,冲到了两倍,张世维更高兴。又过了两天,冲到了三倍,张世维心里咯噔一下。给数据库筹办的100台办事器马上就不敷了。。。

《天天酷跑》

他告急向公司申请,添加了50台办事器。然而新办事器就像是刚建好的“空仓库”,你还得把本来仓库里的数据搬一部门过来,那才是实正的手艺挑战所在。

固然那种“搬场”其时根本已经做到系统主动调度了,但是,搬场和搬场还纷歧样。若是时间充沛,搬场是一件很容易的工作;若是要求在一天之内搬空一个大厂房,就需要点骚操做了。

眼看旧数据库在迫近存储极限,那边玩家还在不解风情地造造新数据,搬场速度必需十分快,才气制止数据库爆棚。与此同时,搬场还不克不及形成游戏丝毫中断,玩家要什么姿势,数据库随时得给。张世维和同事们一边加班,一边心里默念:“我太难了。。。”

然而,用户增长的速度仍是太快了,根据那种态势,24小时后数据库就会瓦解,游戏只能暂时停服。谁都不敢面临如许的结局。。。

就在数据库团队快要顶不住的时候,斜刺里杀出一波奥秘的步队。那是腾讯游戏的开发同事。常日里他们还有时吐槽数据库团队,但那一刻,他们站在那里,只问张世维一句话:“我们能做什么?”

两收团队就那么背靠背做战,如多年的兄弟一般默契,熬夜调试迁徙东西,在凌晨告急上线,硬是死死抗住了一波又一波的用户拜候冲击。

硝烟散尽,张世维躺在办公室的沙发上睡得天昏地暗。醒来之后,他跟团队立誓:“那一波我们险胜,下一个游戏万一更火爆怎么办?咱们必然得把扩容东西做到极致,要可以主动化支持“无限大”的数据库扩容!!!”

那之后好几个月,同事们一行一行地抠代码,把那套数据库主动迁徙系统打磨得金光铮亮。

如今回想起来,其时的决定不要太准确。

因为,紧接着2015岁尾,就有一个新游戏上线,那就是《王者荣耀》。

《王者荣耀》野到了什么地步呢?几乎起跳点位的 PCU 就是汗青峰值。。。

包罗游戏的开发团队都没等待《王者荣耀》会如许蹿红,告急找到 TcaplusDB 数据库团队,让他们帮手看看,数据库可万万别跪了。

张世维和团队固然做好了充实的筹办,但心里仍是很忐忑,究竟结果那个逆天的游戏每一秒钟都在缔造数据库的新纪录。。。

最疯狂的游戏海潮,一般呈现在周末。

阿谁春天,一到周末,TcaplusDB 团队的童鞋们就在家盯着电脑,一位原来容许女票要去看片子的童鞋,冒着被罚跪键盘的风险,以死相逼留在了家里。。。

严阵以待的手艺人毕竟见证了汗青。几千台办事器在预先设定好的同一调度机造下不断服主动扩容。一群机甲兵士,有条不紊地向前行进,烟尘扬起,好似莫斯科红场上兵士们坚决的程序。

我没法子对外披露详细的数据,不外《王者荣耀》的 PCU 峰值是一个惊人的数字,缔造了汗青记录。

“几万万人在同时利用我们写数据库的代码,你能体味那种感触感染吗?”

张世维看着我,似乎要说出千言万语。

(三)腾讯视频的“诺曼底”

人生可比是海上的海浪 ,有时起有时落。

歌里如许唱道。

2014年,“腾讯游戏”正劈波斩浪,它的兄弟“腾讯视频”却正在XXXX。

其时腾讯视频可不比今日。用户佳誉度不敷,前途未卜。

我们的第三位故事讲述人,邵宗文,就与此有关。其时他正在腾讯视频所在的整个事业群(OMG)的数据库团队。

邵宗文

邵宗文是不折不扣的“老炮儿”,有10年数据库运维经历。他心里最清晰,不会有人把一个产物的胜利归功于数据库;但一个坑爹的数据库,却很可能把产物拖垮。

“那时候腾讯视频的体验其实不好。看着看着就会呈现卡顿。但是因为没有足够详尽的查抄数据,手艺团队也很难判断问题到底出在哪儿。各人都很焦急。”

邵宗文回忆。

因为数据库是个巨复杂的系统,就像人体一样,靠五脏六腑、血液淋巴神经、骨骼、大脑、各类激素和排泄物配合维持运转,细密至极,哪里出了个小不测,城市招致整个系统发作意想不到的问题。所以,就像人类需要医生一样,数据库也需要一套“数据库运维系统”。

做数据库运维系统,邵宗文是认实的。早在2009年,他刚参加腾讯的时候,就做了一套数据库运维系统。那套系统就像戴在身上的“心电记录仪”,哪次查询过于迟缓,哪次历程卡死了,它城市记在小本本上,生成完好的陈述发送给运维老湿傅做参考。

在运维微信群里,告警主动发送

那种思绪,现在已经成为了数据库运维的尺度操做,但在其时来看,却完全领先了一个时代。那个数据库运维系统被定名为“扁鹊”,希望它药到病除药到病除。

我们把镜头拉回腾讯视频,其时情况求助紧急,“扁鹊”被用到了腾讯视频,很快就定位出了良多关于数据库不合理的查询语句。吃完“扁鹊”开出的药方,腾讯视频公然顺畅了良多。

那小我人都能看见的改动,给了童鞋们不小的自信心。

与此同时,陪伴着视频网站付费形式的鼓起,内容为王的时代末于如晨光降临。一场“诺曼底登岸”,就如许悄无声息地展开。

2014年,腾讯视频推出了便宜剧《暗黑者》,2015年腾讯视频独播了《中国好声音第四时》,2017年1月,又造做了 IP 神剧《鬼吹灯之精绝古城》,爆款内容的火力越来越密集,眼看有逆风翻盘之势。

《鬼吹灯之精绝古城》

不能不说,2016年,是科技史上的一个“大年”。

阿法狗大战李世石,BAT 猛然疯狂争夺人工智能的权益,今日头条异军突起,所有的内容平台的弄法更是一夜之间从“人找内容”倒向“内容找人”:

以往你还得冥思苦想,然后在框框里输入本身想要看什么;如今十分棒,你只需要宛若智障握动手机往下划,人工智能就会把你喜好的内容“喂”到你嘴边。

那里中哥还得插入一下,简单科普一下“AI 保举”的原理。

AI 保举的根本动做是“打标签”。假设你天天看番,系统也许就把你标注为“宅男”,那好了,从今以后给你推宅男更喜好的视频。但事实哪些视频是“宅男向”,哪些视频是“宅女向”,同样也需要人工智能“打标签”。(那是科普,当然并非你只想看什么 AI 就只给你推什么。)

人工智能识别图片,而且打好标签

为了打赢“AI 保举”那一仗,腾讯视频也不破例,从高冷的“狗不睬形式”霎时酿成热情的“海底捞形式”。

按理说那是营业上的变更,和底层的数据库没卵关系,其实否则。“打标签”那个动做,需要频繁地抽取数据停止计算。数据穿越,如惊涛拍岸,卷起千堆雪,对数据库那个“河床”产生了庞大的冲击。

那段日子,邵宗文和兄弟们能够说是“起死回生”。

我们几个同事晚上聚餐,刚点完菜,营业团队打来德律风,说数据库呈现了颤动,我们几小我赶紧齐刷刷地掏出电脑长途处理问题。问题处置大白了, 我们看着桌子上的冷菜,让办事员结账打包。。。

邵宗文笑。

不外,腾讯视频熬了那么多年,好不容易比及了“诺曼底大反攻”,数据库绝对不克不及掉链子。于是,他们一点点晋级手艺——在数据库内部“多走一步”,用人工智能给视频先打好根底标签,再交给营业同窗进一步挑选。如许不只降低了数据库的频繁拜候,还能减轻营业同窗的承担。

一个数据库团队搞起了人工智能,那听上去就仿佛厨师放下了菜谱,研究起了《孙子兵书》。

2016年,搜狐搞了一次“图文婚配大赛”,参赛步队面临10w个文章和10w张图,要用人工智能主动为每一个文章婚配响应的图。你可能看出来了,那就是一个典型的“打标签”应用场景。成果邵宗文带队参与,不小心在400多收步队里拿了第10名。。。

弱水三千就是他们

搜狐的童鞋看着那几个目生的面目面貌,一拱手:“还没请教几位是何来历,怎有如斯身手?”

邵宗文羞赧地摸摸头:“对不起,我们是搞数据库的,有点乱入,承让。。。”

世上没有白走的路。数据库团队骚骚的人工智能程度,日后也在关键时刻强势“报恩”,帮忙他们扛下了一场场突如其来的硬仗。

2017年的时候,某女艺人突然被爆出轨,收集爆燃,瓜寡纷繁搜刮和她相关的视频和报导。数据库团队接到使命,为了应对搜刮,要把之前与她相关的新闻全数找出来。无论多早,哪怕是清朝的报导都能够。

因为早年的报导和视频,良多都被放进了“冰箱”——冷数据库,所以要有一个“解冻”的过程。那个过程若是手动操做,固然不难,但颇要费一些时间。不外,因为有人工智能打好的标签和成套的主动化东西,数据库团队实的只用了非常钟就完成了使命。

此次事务,数据库团队的“人工智能运维系统”功不成没。

尝到了人工智能的甜头,团队的“野心”起头膨胀,他想尝尝做出一套全世界最智能的数据库运维系统。

那就是 DBbrain。

在 DBbrain 里,人工智能被用到了极致。它能够按照一个营业的发作态势,预测数据库将要面对的压力,从而主动生成一个数据库运维战略。

那大要就像一个别检医生,能够预测你将来几个月可能呈现的身体情况,然后提早帮你做好预案,开好药方。到时候不出问题当然更好,若是实出了问题,只要沉着地施行预案,也会转危为安。

举个栗子。在 DBBrain 还在研发的时候,就曾经告急派上了用场。

2018年,腾讯视频大发作,把一个节目以决绝的姿势烙刻在所有人脑海里,那就是《缔造101》。

阿谁周末,粉丝们涌上平台。因为贫乏和饭圈儿“斗智斗勇”的经历,并没有对系统做特殊庇护,霎时数据库压力庞大。

那个时候,还在内部试用阶段的 DBBrain 给出了建议:主动扩容、数据同步降级、热点前置、代办署理层上推。数据库团队马上确认了那个建议,一秒钟,新设置装备摆设生成。数据库接受的冲击断崖式下降,惊险地挺过了“饭圈儿”那一波“人肉冲锋”。

那种操做,就像足球角逐的时候,运发动不幸受伤,但是能够打一针封锁,帮忙他带伤踢完全场。赢下整场角逐。

互联网手艺的开展,把无数本来独立的小我粘合成了新的物种,就像天空中漫山遍野的鸟群,实时变更着姿势和标的目的,他们的行为越来越难预测,他们的冲击力也会越来越疯狂。

人工智能的意义,恰好就是为了应对那种不确定性。

越是告急时刻,DBbrain 的主动化和智能化优势就越会凸显。机器永久没有情感,机器历来临危稳定,机器能够同时施行一万项操做而滴水不漏。

尘埃落定,无妨回头看一眼腾讯视频。

2019,腾讯视频似乎已没了人命之虞。在昔时的三季报中,付费用户超越了1亿人次,和爱奇艺等量齐不雅,优酷土豆很久没有公布会员数,被业内认为落后于两个敌手。

那一年,腾讯视频的同窗们拼死不下牌桌,末于等来一个凶猛的春天。

而做为亲历者之一,邵宗文在腾讯2018年出名的“9·30变化”前后参加了腾讯云与聪慧财产事业群(CSIG),团队的 DBbrain 也推出了云上的版本,除了办事腾讯内部营业,还在腾讯云上对所有创业者和数据库人供给办事。

如杜工部所言:安得广厦万万间,大庇全国寒士俱欢颜。

(四)无尽的战役

人说腾讯不性感。

那话没错。

我特意翻了一下腾讯云的产物页面,“腾讯 SQL 数据库”、“TcaplusDB”、“DBBrain”那些名字就那么缄默地躺在那里,以至没听过的人想把它们读对都很困难。鲜有人晓得那些数据库曾经从硝烟中走来,他们是和枪弹擦肩而过的兵士。

腾讯的那些教师傅,昔时曾面临微信春晚红包的刻不容缓,曾面临《王者荣耀》万万人的游戏狂欢,曾面临腾讯视频的困难抉择和存亡攸关。

他们只是在和一个个详细又棘手的问题殊死缠斗,无暇抬眼,却不小心汇入“国产数据库”的开展大水,成为汗青自己。

那两年,腾讯游戏跟着一带一路的程序开辟海外市场,Tcaplus 数据库也随之办事全球玩家。摆设遍及东亚、东南亚、南亚、北美、南美和欧洲,各类收集情况都能平趟。

在印尼,受限于机房供电前提,张世维生平第一次碰到了主数据库和主备数据库同时掉电的情况实在发作。然而,团队多年的手艺并没有让他绝望,冷备数据库冷静地启动,半小时内,游戏恢复了对外办事,一切都在掌握之中。

张世维从外企一路走来,亲历了数据库范畴从外企绝对垄断,到今天被国产数据库松动消融。亲历了一代手艺人从不被理解到遭到尊重。

之前有伴侣和他开打趣说:“你做游戏数据库,对国度有什么奉献?”

张世维答复:第一,我在带给人快乐。第二,我在突破手艺垄断。第三,我们在践行一带一路战略。现在,吹过的牛逼正在逐个实现。

邵宗文也在见证汗青的变迁。

2019年,DBBrain 被好几家出名的电商平台请去做数据库的“私家医生”——在“618”和“双11”大促之前,主动给数据库做体检;在大促的过程中,碰到异常就会实时发送警报和处置建议;若是呈现了不测毛病,则会按照毛病的情况,触发差别品级的“降级战略”。

本身十多年的血泪经历,总结成为“数据库运维产物”,让创业者和数据库攻城狮们哪怕少踩一个坑,有更多时间吃顿热饭,陪陪家人,都让老司机邵宗文觉得善莫大焉。

程彬回想本身昔时参加腾讯,其实面试的是QQ后台的职位,但他的简历被数据库的指导相中,硬是抢过去做了数据库。起头程彬觉得出格委屈,但是三个月以后,他发如今食堂里和一路入职的小伙伴讨论手艺,他说的内容越来越硬核。那一刻他才意识到,本身在做一项困难却名誉,熬煎人也磨砺人的“硬手艺”。

2019年,程彬和团队同窗们在之前数据库的经历根底上,又研发了最合适云计算架构的关系型数据库 CynosDB,把云计算的架构阐扬到极致,把创业者的成本继续降低。

临别前我问程彬:那么多年,挺过那么多风波,最难的是什么时候?

“如今。”他脱口而出。

我曾经在《丁壮腾讯》里做过如许的比方:

昔时5岁的腾讯,是一只卖萌的企鹅,所有人城市夸耀他的斑斓聪颖,也会对它的率性有所谦让;但是现在腾讯已经21岁,那个家的屋顶他要修,那个家的煤气罐他得扛。手艺摸索的路历来就是风雪交加的长征,那一仗,企鹅军团无法“按Q退出战斗”。

时至今日,腾讯的数据库的老湿傅不再是只支持内部的团队,他们面临的,不只有同样从战火中走来的阿里华为,也不只有在贸易数据库市场盘踞多年的甲骨文、IBM,更有成千上万活生生的用户,带着他们光怪陆离的需乞降等待的眼神。

数据是数字世界的基石。数据库的三场战役,也是腾讯在“新基建”中的试探。在风波里逆行其实不容易,那是一个卷帙浩繁的“无限战争”,需要“耐心”和“敬畏”。而那两种道德,我们只能从汗青中获得。那也是我们需要不时回望来路的意义。

时间如一条奔涌的大河。我们之所以并世无双,不是因为此刻的漂流,而是因为我们晓得本身从哪里来,晓得本身将要向何处去。

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

文|史中

有人曾在网上回忆本身的故事:

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

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

我翻开信箱,发现里面都是未读信件。此中有一张是生日贺卡,信里写着:儿子,当你看到那封信时,我应该不在了。但是不妨,你未来偶然回来看看,应该会发现我给你的生日贺卡。我在游戏里赚了一些钱,足够每年都给你买一张生日贺卡。对不起生病了,没能好好赐顾帮衬你。你要顽强,我会在天堂看着你。

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

(一)田园时代

假设互联网有记忆,它也许会思念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数据库,背后是无数人的赌命奋战。它太贵了,贵到没人能接受失去。

各人都在看着总批示李津,只等他命令,拍停数据库,拍死兄弟们无数个白日和日夜。

只见李津站起来,大喊:“各人都别慌!”

所有人的手就那么悬在半空,一秒、两秒。。。主屏幕上的成交数据突然起头松动,迟缓抬升。数据库里的记录每秒都被十几万次海啸疯狂地冲刷。一点一点,数据库的运转速度,迟缓而坚决地逃上了全国人下单的速度。之前一分钟淤积的数据,也在被消化。

一切安然渡过,似乎一场鹅毛大雪抚平了地上的一切沟壑。

有人回头,看见后羿站在角落,他正望向窗外乌黑的夜空。

那天没有月亮。

2012年“双11”,成交额定格在了191亿;2013年“双11”成交额到达了350亿。

2012年“双11”

(屏幕上为一小时成交数据)

就在2013年“双11”完毕之后半个月,甲骨文找到了阿里巴巴。按照你们“双11”公布的成交总额,你们的 Oracle 数据库用量必定很多,算下来比你们现实购置量多多了!那边补下钱吧!

你无法想象,甲骨文拿出来的账单有多大!

后羿对我回忆。

阿里巴巴那时才告诉他们:对不起,我们的核心数据库已经从 Oracle 替代成了本身开发的 AliSQL。

甲骨文的同事底子不相信,一家中国的企业用三年时间做好的开源数据库,竟然能到达以至超越美国老牌企业有三十年手艺积淀的 Oracle 系统。曲到阿里拿出了十分强的证据,他们才承受。

那时,阿里巴巴的良多高管和同事才起头后怕:若是三年前没有启动自研数据库方案,今天谁能有勇气面临甲骨文的那张账单?

(七)黄金时代

2011年8月,结业于北大计算机系的鸣嵩来到阿里。

比拟褚霸的怼天怼地,鸣嵩显然是个学院派。若是说褚霸手里挥着屠刀,那么鸣嵩手里捏的就是手术刀,他们俩城市厨子解牛,姿势却大相径庭。

在北大的时候,鸣嵩曾经深切做过国产处置器研究,那段履历给他的大脑烙上了两个不成磨灭的钢印:

1、我们的抱负是:中国人拼死都要有自主手艺。

2、我们的现状是:国外的手艺论文读起来实香。

参加阿里巴巴之后,鸣嵩起头研究数据库手艺。他沿着国外的手艺论文的脚步,一边啧啧称赞,一边吃苦研读;至于有一天中国人本身的数据库论文也能被美国人进修,那是千万不敢奢望的。

说回褚霸。

彼时阿里巴巴掀起的“去 IOE”活动已经在全国蔚然成风。良多充满野心的互联网企业和大国企都想去掉 Oracle。于是,褚霸被邀请到腾讯,专门讲述开源数据库的调优手艺。

我认为就是几十人一百人的陈述厅。没想到到了腾讯,台下1000多人,黑压压地望不到头。人家还告诉我,别的有2000人正在线上看着你。我站在台上,严重得30秒都说不出一个字。

褚霸回忆。

话匣子一旦翻开,严重感就消逝了,阿谁提刀怒吼的霸爷灵魂附体。演讲像一阵台风,吹得现场不雅寡心花混乱,掌声如潮。褚霸还没从腾讯回来,阿里巴巴内部就已经有同窗成立了一个旺旺群,名叫“拜霸爷神教”。

从此,隔三差五就有人给褚霸送一个小礼品,附上纸条“拜霸爷”;有同事去旅游,还在海滩上用脚写上“拜霸爷”发到群里。。。

就在霸爷走上人生巅峰的时候,阿里巴巴汗青上的两条伏线,此时迎来了一次“握手”。

看过中哥《阿里云的那群疯子》的童鞋也许还记得:2013年,阿里巴巴碰到了一个存亡劫。

阿里巴巴赖以仰仗的算力调度系统——阿里云“飞天”卡在了研发中最困难的时刻。实正要命的是,集团内良多营业已经起头向阿里云迁徙。若是飞天系统在短时间内难以冲上5000台集群的调度才能,阿里巴巴的诸多营业都将停摆,后果不胜设想。

彼时的王坚正在河流最湍急的漩涡里,他横下一条心,宁可一辈子背负“骗子”的骂名,也要死死托住飞天。

千钧一发之际,章文嵩决定派出本身“核心系统部”的精锐队伍驰援阿里云。

多隆、褚霸、鸣嵩等一寡底层系统大神云集响应,上午接到使命,下战书就去阿里云解 Bug。三个月不眠不休,末于在阿里巴巴集团算力碰到预测极限的前一周,惊险地把飞天推上5k。

为了纪念飞天5K,云栖小镇专门树立了一尊雕像,那是2013年王坚在为雕像揭幕。

此次惊险一跃之后,褚霸任阿里云数据库“RDS”的负责人,鸣嵩成为“RDS”首席架构师。同样在那一年,张瑞接替后羿成为了集团数据库团队的新掌门。

(八)太空时代

固然良多人“拜霸爷”,但褚霸本身却会“拜王坚”。

以前会觉得,为什么王坚“吹法螺”吹成那个样子?曲到前两年我才理解了他的体例,那是“降维冲击”。

若是你和他人在统一个层面死磕,那没什么了不得的。人家做到了80分,你最多只能做到100分。若是你上了一个维度,间接就比他人多了一个数量级,你做得再差,也比敌手们强多了!

那种思维,间接激发了自研数据库 POLARDB的降生。

若是此时拉开视野,会发现数据库市场自己就发作了庞大的变革。就如其时典范内燃机汽车迎来了史无前例的顶峰之后,被迎面而来的电动车打了个不知所措。

典范数据库迎来了诸神的黄昏。创业企业间接用云上数据库,而存量客户也会想重演阿里巴巴去IOE。

仅仅是卖他人做的数据库那很好。但是,当你有时机本身去造出新的数据库当然更好。那是2014年RDS团队全体大会上的决定。

“数据库”和“操做系统”“中间件”一路并称为三大底层系统。阿里云的胜利,和中间件的完美设想关系亲近。然而,阿里巴巴无数大神拼了老命,用了几年时间才打磨出了阿里云精致的中间件。不雅摩过阿里云5K的“扒层皮”,褚霸还能那么轻松地喊出自研数据库,能够用胆大包天来描述了。

那个面向将来的数据库要叫个啥名字呢?褚霸一拍脑门决定:“就叫POLARDB!”

时间表很快被造定好了。2017年10月底,POLARDB要起头公测。反推回来,所有研发节点都被定死。

两年多时间,30万行代码,那场由鸣嵩指导的“数据库新长征”,就如许悄无声息地起头了。

鸣嵩回忆,2017年是最艰辛的一年。有两个多月,团队所有成员都是彻夜赶代码。用他的话说:“各人每全国班城市碰到早顶峰。”

鸣嵩

奇异的是,那时候无论多累,就是没人偷懒,更没人提出去职、转岗。

其时团队有一位同窗,早晨上班之后突然对鸣嵩说:“我妻子今生成孩子了,我请一天假去趟病院!”。牛X的是,他实的只请了一天假。第二天他摆设安妥了一切,准时呈现在工位上。

“为什么?”我问。

“阿里人不想做螺丝钉。”鸣嵩说。

2017年9月,POLARDB 浩大发布。

过去需要70个小时的10TB的营业数据创建只读副本,在POLARDB上只需2分多钟。更关键的是,它的成本只要商用数据库的非常之一。半年后,上千个用户用上了那个新数据库。

POLARDB 发布

双11的难关对阿里巴巴数据库团队的挑战仅仅是起头。

林子大了,什么鸟都有。99.9%场景下不会呈现的bug,在阿里,就会呈现。

淘宝交易的订单处置打破了地区限造,可能在北方区、华东区、南方区。但若是此中一地发作了灾难,怎么办?

那种特殊的营业场景要求数据要可扩展,持续可用、要强一致。因而,新一代数据库必需要包罗几个重要特点:全球摆设、对存储数据冷热隔离等。

那时候,我们不能不本身研究了新一代数据库了。

张瑞说。

说起来轻松,阿里巴巴过去几年数据库手艺突飞猛进,历来都是有前人脚步可循的。现在,那些数据库大神们面前,实的是一片“荒原”。

“全球最顶尖的数据库人才,仍然在美国。为了自研下一代数据库,2017年我们几乎把美国数据库的人才挖空了。”张瑞回忆。

在他和另一位数据库大神圭多的推进下,一个自研的超大规模数据库系统 X-DB 就如许降生了。短短几个月,X-DB就在集团系统内完成了MySQL、AliSQL集群的晋级换代。

对阿里巴巴的数据库而言,2017年寓意不凡。恰是从那一年起头,以大致胜的 X-DB 和以快致胜的 POLARDB 成为了阿里巴巴数据库的两款拳头产物。

(九)会师时代

全军易得,一将难求。

2017年10月,马云振臂一挥,在云栖大会上成立“达摩院”。誓要争夺将来10年的手艺顶峰。

19岁的阿里巴巴,已经有权“率性”,成为本身抱负中的容貌。但良多人没留意到:在详尽的肌理中,因为公司任务的刷新,无数阿里巴巴人必需变得和以往不再不异。

从全中国最早更优秀的 DBA,到中国第一批研究开源数据库,再到自研数据库,一代代英雄前仆后继。从那时起头,研究将来的数据库的使命,将要落抵达摩院肩上。

仅靠一腔热血不克不及换来坚船利炮。必需找一个实正有才能的人来率领尝试室。若是没有牛人,达摩院数据库尝试室的指导人职位宁可空着!

张瑞斩钉截铁。

李飞飞就如许进入了数据库团队的视野。

那天达摩院数据库尝试室筹备组开会,团队有人提出,犹他大学计算机系的末身传授,世界数据库范畴的顶级大神李飞飞是一个十分适宜的人选。一探听,李飞飞此刻正在上海出差。

张瑞和圭多连夜坐火车去上海,仅仅聊天一个小时,张瑞就感触感染到李飞飞身上那种科学家少有的财产思维。

“那就是我要找的老板。”张瑞说。

后来,李飞飞加盟阿里巴巴,成为达摩院数据库与存储尝试室的领头人。

李飞飞(飞刀)

2018年11月,阿里巴巴集团 CEO 张勇颁发全员公开信,颁布发表阿里云晋级为阿里云智能。那意味着数据库的侠客们将从头团聚,兵合一处聚如团火。

所有人一致推举李飞飞成为新数据库团队的带头人。李飞飞大旗一挥,张瑞和鸣嵩两收团队合二为一。X-DB 走出“阿里集团”深闺,改名 POLARDB X,成为POLARDB的散布式版本,配合通过阿里云为社会供给办事。

李飞飞站在数据库科学的浪头,提出了将来的三个标的目的:

1、“主动驾驶”的数据库:

POLARDB 和 POLARDB X数据库已经能够在良多方面实现了主动化办理,但那还远远不敷。数据库能够借助人工智能实现愈加低成当地实现主动存储、主动检索。

2、“平安”的数据库:

在云上的数据库,天然要处理用户的信赖问题。将来的云端的数据库需要有一把锁,用户手握钥匙,能够随时验证数据库的平安。

3、“新硬件支持”的云原生与散布式数据库:

在非易失存储(NVM)、长途间接数据存储(RDMA)等等新手艺的加持下,可能会让新的云原生和散布式数据库架构成为可能,把以前只能用“妥协”体例绕过的问题间接用手艺处理掉。

坐在我对面,李飞飞眼睛里闪灼着一个科学家改动财产格局的大志。

数据库是个“古老的范畴”。它的素质就是对数据的消费、存储和消费系统。

为了那个目的,所有人都在不竭摸索对资本平安可靠快速调度的办法。于是,在漫长的时间里,数据库范畴才会不竭发作新的手艺点。

那是让我们那些老炮儿在数据库行业几十年都不觉得厌倦的底子原因。

李飞飞说。

从空中俯瞰,2019年阿里巴巴和蚂蚁金服的数据库百花齐放,POLARDB、POLARDB X、OceanBase、AnalyticDB、NoSQL、图数据库、时序时空数据库等等一应俱全,在手艺光谱上,我们第一次拥有了不输给人和人的完好的生态。

2018年,在 Gartner 数据库魔力象限,阿里云成为国内首个入选的科技公司,与AWS、Google、Oracle 等国际大牌同台竞技。

在魔力象限的图表上,代表阿里云全数手艺的只是一个小点,但就是为了那个点在象限里挪动哪怕一分一毫,无数数据库侠客付出了十年韶华工夫。

同年,阿里巴巴在国际数据库顶级大会 VLDB 上颁发论文介绍POLARDB的存储系统 PolarFS。

鸣嵩欣喜地发现,不久前那篇论文已经被旧金山大学造成了课件,用于给美国的学生授课。

而期近将到来的2019年国际数据库顶级大会 ACM SIGMOD 上,阿里巴巴数据团队又将颁发介绍云原生散布式 OLTP 存储引擎 X-Engine。

从2009年到今天,十年的卧薪尝胆,我们从不敢说超越谁。但我们确信,中国人历来就不比他人差,我们已经和世界顶尖高手身处统一个阵营了。

鸣嵩说。

(十)那些侠客们

若是我们可以回到 2005,那里也许有座站台,火车头冒着蒸汽,像一个等待远方的孩子。

在接下来的五千多个日夜里,从受造于人的闭源数据库,到开源数据库,到逃星每日的自研数据库,那些数据库人肉身串演了一幕幕戏剧。

有时我想,他们挺幸运,因为他们见识了那个世界的美妙和荒唐。但他们仿佛也是不幸的,因为那些美妙和荒唐都发作在他们本身身上。

数据库工程师三更起床的日子再也没了,主动化运维法式的精致让过去的热血蜷缩在日记里。吹过原野的风目击了那些草莽英雄撤离战场,顶级院校的计算机大神扛起大旗。人们在曾经野兽横行的荒原上,建起了恬静细密的城市。

若是如今不做手艺研究,十年后,人们将看不到阿里巴巴。

王坚2009年的话犹言在耳,谜底在空中飘荡。

汗青曾有一万条岔路,阿里巴巴理应高兴本身现在仍是互联网大潮中的一朵巨浪。而互联网海潮,又是中国厚厚自传中的一章。

张瑞、后羿、褚霸、鸣嵩、李飞飞,那些人从人群的暗处走来,汗青毫不惜啬地对他们行了瞩目礼。

他们是通俗人,只是用本身千回百转的命运,把故事堆砌成了今天的样子。

从2009年到2019年,也有无数数据库人分开了阿里巴巴。

留着大胡子的老僧人在 2013 年“退休”,分开之前他说:感激阿里巴巴,让我从此不再为了钱忧愁。

那一期间“斗气”出走的 Oracle BDA,也有良多人最末仍是进入了开源数据库范畴。也有分开阿里的人,过了两年带着新的认知重又归队。

有些人选择独立创业,大神拖雷创建袋鼠云、陈栋成立沃趣科技,他们开枝散叶,成为了中国数据库和各类数据智能系统的前驱,演绎着各自的故事。

人们末于大白,死生离合恰是世界走向将来的体例。此生路远,莫问归期。

辞别之前,我问后羿:“过去十年,你实的觉得值吗?”

他笑了,说:

时代的大水总会到来,而你独一的兵器就是本身的血肉之躯。

0
回帖

中国跨过数据库那座大山了吗? 期待您的回复!

取消
载入表情清单……
载入颜色清单……
插入网络图片

取消确定

图片上传中
编辑器信息
提示信息