我在腾讯造“炮弹”
2023-3-27 11:5:34 Author: 浅黑科技(查看原文) 阅读量:12 收藏

浅友们好~我是史中,我的日常生活是开撩五湖四海的科技大牛,我会尝试各种姿势,把他们的无边脑洞和温情故事讲给你听。如果你想和我做朋友,不妨加微信(shizhongmax)。

我在腾讯造“炮弹”

文 | 史中

(一)真的狠人,可以写自己的“命运剧本” 

我们现在回忆起来,腾讯好像是“嗖——”地一下就成了今天这么大。

但事实显然不是这样,我们的记忆最爱骗人。

在腾讯的“历史相册”里,每时每刻,身边都站着至少一个强大到随时能把自己“掐死”的对手。

比如2005年,这个对手就是微软。确切地说,是微软的 MSN。

一边是世界首富比尔·盖茨商业帝国下银盔亮甲的正规军,一边是名不见经传的深圳寻呼系统开发程序员马化腾的“中学生聊天神器”。

这一边倒的局面,连看热闹的都捂住眼镜,生怕腾讯挨打的时候溅自己一身血。

甚至,连盖茨写给马化腾的“收购信”都被民间写手帮忙拟好了。。。说什么“感谢 QQ 给中国小朋友普及了即时通信的概念,等他们长大了,工作了,有钱了,就会转移到 MSN 了。”

马化腾不太喜欢抛头露面,但所谓“兵者,国之大事”,他不得不考虑正面迎敌,在北京召开了“QQ2005”的发布会。

在这次发布会上,他纠集了毕生内力,预言了“即时通讯产业”的六大趋势:娱乐化、社区化和互动化、个人信息处理、无线互联网、安全性、本地化应用。

这是啥?天上一脚地下一脚,现场记者多半听了个寂寞。

如今回望,这段预言凶狠至极——不仅把QQ将要如何手刃MSN的剧本摊牌给了所有人(社区化和互动化),还清晰地排布了不久之后QQ空间和校内网血战的阵型(娱乐化),也埋下了和盗号党血拼的硬核剧情(安全性),还某种程度上预言了微信的诞生(无线互联网)。

那是腾讯之后整整八年的命运剧本。

(二)大数据炮弹,和影子里的“装填手” 

我们把战事快进到2009年。

那年4月,QQ空间的操刀人汤道生和产品大牛郑志昊一起飞到上海,坐在瘦削的年轻人郜韶飞的办公室里。

三人看似谈笑风生,各自心里却暗潮汹涌。

按照几年前马化腾制定的“剧本”,QQ游戏和QQ空间,这两位“护法”已经分别坐镇QQ的左右两翼,不仅把 MSN 打得灰头土脸,还让新冒头的竞争对手无法近身,成功帮助QQ稳坐即时通讯第一把交椅。

但商战正如大军对垒,决不能掉以轻心——侧翼越厚,核心当然越安全,但你的侧翼本身也必然暴露,成为对手奇袭的最佳目标。。。

这不,“左路”的游戏,面对的是比自己高一头的盛大和网易,咱们这次篇幅有限,暂且不聊;单说“右路”,QQ空间这一边,面对的是最初由鬼才王兴创办,此时由陈一舟接棒,风头正劲的“校内网”。

僵持被一颗“菜”给打破了——郜韶飞的创业公司“五分钟”做的“开心农场”入驻校内网,一夜之间成为了最火的游戏,没有之一。

几亿人宁可不睡觉也要偷菜,这种“人民战争”的架势让QQ空间冷汗直流。

这次来,汤道生就是奔着“研究个价格,无论如何也要把开心农场请到QQ空间里”来的。

历史的快门按下时,说出“茄子”的当事人往往懵然无知:恐怕汤道生本人也没有意识到,这个小小办公室里的对谈,竟会成为日后腾讯技术“宇宙大爆炸”的原点。

2009年5月22日,开心农场(QQ农场)第一天在QQ空间上线,涌进来的用户就直接干爆了“五分钟”的全部服务器。

危机当前,腾讯只好火速接管农场的底层运维。

接下来几个月,技术团队玩了命,几乎重写了代码,时任 CTO 张志东又特批为QQ农场续进去几千台服务器,才勉强顶住人潮,而这,成为日后的巨人——腾讯云——觉醒的前传。

而被农场加持的QQ空间,则开始了狂暴进击之路:

用户像潮水一样用火星文记录自己的少男少女情怀,不揣冒昧地上传自己在村口拍的葬爱 Style 照片。

这些今天看上去过于朴实的“土嗨”,却催生了真正顶级的技术——腾讯的自研存储、数据库,以及为了识别、分类海量照片而诞生的人工智能(优图实验室)。

这些故事我写在了《腾讯的硬盘里,有互联网的昨天、今天和明天》《腾讯数据库的三场战役》里,有兴趣的浅友可以去看。

但今天那些都不提,咱们剑走偏锋,来聊聊这次“宇宙大爆炸”炸出的另一个王者之师。

其实大伙儿看热闹的时候,很容易忽略一个问题:

同样是开心农场,放在人人网手里,只是一个爆款游戏而已;为啥放在腾讯手里,就成了“核武器”,不仅直接帮助QQ空间用户冲过3亿,还像过电一样提振了腾讯的游戏、社交会员等等所有产品线?

一个重要的原因是:

在腾讯各个团队,都隐藏着顶尖的“运营团队”,他们负责“看场子”——每天都研究运营数据的报表,设计第二天甚至是几天后的运营活动,例如做个啥样的对战赛,农场的“化肥”怎么卖,黄钻会员打几折之类。

用户在这样的场子里,才会感受到“气氛组”的热情服务,越玩越热闹,越玩越过瘾嘛。

就像酱

如果回到腾讯所在的战场上看,运营团队有点像是“炮手”,指哪打哪。

打仗不能奢求速胜,只有每一炮都稳准狠地落在敌军阵地,战局才会一点一点向己方倾斜。

这里要敲黑板!

看过《亮剑》名场面的浅友都知道,炮手只负责“开炮”,他们身后还得有个低调且重要的角色,就是“装填手”

他们负责把炮弹(也就是刚刚说的数据报表)及时准确地填在炮膛里,这样才可以随时发起进攻嘛

这群影子里的装填手,恰恰是我们今天的主角——腾讯“数据平台部”的老师傅们。

有人会撇嘴:一个装填手,整个电视剧里出场不超过两秒吧,有啥故事可讲呢

诶,我要讲的可是一群有故事的装填手。因为他们不仅负责装炮弹,还负责造炮弹(也就是算报表)

算报表很难吗?

话说如果只有十个八个用户,根本不用专业团队,掌柜的扒拉扒拉算盘就能搞定;

但用户已经上亿,还要在规定时间算清楚数据,确实得上点“狠活儿”了。

咱们可以把活儿拆作两步:

第一步,把天南海北实时产生的数据分毫不爽地记录在数据库里,这一步就像是制作火药。

第二步,把数据按照提前写好的高效计算框架跑一遍,把结果填到报表里,这一步就像是把火药“怼”进去,制成炮弹。

当时的腾讯不差钱,“第一步”和“第二步”用的都是业界的顶流奢侈品——Oracle(甲骨文)数据库。

Oracle 有点儿像“别人家的孩子”,不知道吃啥米长大的,反正很厉害就是了。。。

这家伙每天白天勤勤恳恳记录每一笔数据,半夜开足马力“算数”,到了凌晨5点,所有运营所需的弹药(报表)就都安静地躺在后台。

运营同事早晨一来,顺理成章地开始琢磨接下来的仗要怎么打。

至于技术老师傅嘛,只需要每天坐在地头抽着旱烟,看着系统运转别出毛病,就好啦!

但QQ农场的火爆,终究打破了老师傅们田园诗般的宁静生活:

用户实在太活跃,每天产生巨量的数据,Oracle 系统已经累到腰椎间盘突出,还是没办法保证按时完成任务——本来凌晨5点就该出的结果,有时拖到9点才能算完,而且看样子还有进一步滑坡的趋势。。。

再也回不去了。。。这咋办?

如今的腾讯数据平台负责人刘煜宏回忆,当时几位技术不错的老师傅们坐在一起开会,一致同意:是时候改进“炮弹”的生产技术,搞一个专用的“大数据计算工厂”啦!

但具体要怎么搞嘞?老师傅却分成了旗帜鲜明的两派:自研派和开源派。

自研派的意思是:喂,咱们可是腾讯耶,这几年跟人打架就没输过,说明咱们技术还行啊!这大数据系统从头自己写,多带劲,将来在科技史上咱爷们儿也能青史留名啊!

另外几个人站开源派,包括刘煜宏也觉得开源路线不错。

开源派的意思是:咱们这些年之所以没输,恰恰是因为知道自己几斤几两呀!团队就这么两个半人,贸然自己研发,万一最后搞不出来,不把大好战局都给耽误了?要我说,就用现在市面上有潜力的开源软件,比如 Hadoop,先做一套顶上,就挺好!

总之,自研觉得开源没出息,开源觉得自研不实际——两派争得面红耳赤。

故事讲到这,你已经准备搬小板凳,吃一场“技术路线血战”的瓜了吧?

呵呵,老师傅偏不给你看热闹的机会。没几天之后,自研派几位老哥突然找到开源派:我们验证了一下,从头研发的确不太实际,大家都同意走开源路线了!

开源派愣了,我们熬夜准备了好几天的辩论材料还没用呢,对方辩友。。。你们确定。。。不再shui服一下我们吗??

其实,就在2009年时,很多巨头互联网公司都遇到了和腾讯类似的问题,纠结大数据引擎是要“自研”还是“开源”。但让人唏嘘的是,一些公司后续经历了长达三四年你死我活的争斗,花费巨大的代价才统一了路线。

而这个凶险的大雷,在腾讯却奇葩地以微小代价早早排掉了。。。

刘煜宏

(三)“腾讯造”炮弹 

就酱,在一个临时申请的小会议室里,几位“鲜肉程序员”一起摸黑上路了。

他们做出的第一版“炮弹兵工厂”,正是基于开源 Hadoop 体系的数据仓库,起名叫 TDW(腾讯数仓)。

这个“兵工厂”怎么个好法呢?好就好在它有一套——“放羊系统”。

大量的数据计算需要很多台计算机协作。我们可以把每台计算机都想成一只羊,A羊出了问题,放羊系统根本不给它治病,而是赶紧找另外一只健康的B羊,把计算任务切换给它。至于A羊,呵呵,直接拉屠宰场了。

放羊模式虽然听上去有点“残忍”,但老师傅们可是越看越爱:

首先,它扩展性好。

反正一个羊也是赶,两个羊也是放。每多加一台机器,甭管啥机器,大数据系统麾下的计算力就强一丢丢嘛!理论上说,连个成千上万台,绕地球三圈也没问题。

其次,它皮实耐操。

反正有放羊系统,哪只羊不听话宰了就行。所以用一堆很烂很烂的机器,甚至是各个业务替换下来的报废服务器都行。成本低到泥土里。。。

这妥妥是“农民的儿子”啊!可比别人家那“豌豆公主”强到不知哪里去了!

话说,一百多年前咱们军工刚起步时仿制的步枪不是叫“汉阳造”么?那老师傅用开源代码搞出的这套大数据系统就可以叫“腾讯造”。

总之,这就是腾讯历史上的第一代大数据平台

第一代大数据平台示意图

他们几个兴高采烈地拿着“腾讯造”就去找QQ空间的“炮手”了。

“炮手”十分感动,然后语重心长地说,我们啊,Oracle 还能顶一阵儿,要不,你们先问问别人需不需要?

这话挺客气,但有点摸不着头脑。

我替他们翻译一下:“你这用一堆报废机器造出来的炮弹靠谱吗?万一炸膛怎么办?你们让别人用了之后,要是没问题,我们再用哦亲~”

年轻的大数据团队犹如遭遇晴天霹雳,一下子就滚到了“先有鸡先有蛋”的死循环里。

要是没人愿意当小白鼠,TDW 不就 TMD 砸手里了吗?

他们反思了一下,结论是:一定是自己的诚意还不够,对,要“跪式服务”!

那几个月,老师傅挨个去和各个业务线聊,给人家端茶递水扇扇子,晓之以理动之以情推销“腾讯造”。

终于,有个团队被他们西天取经似的虔诚给感动了,这就是QQ游戏的“蓝钻会员业务”

不过,蓝钻的炮手们提出了“约法三章”:

第一,我们的 Oracle 现在出数据要到早晨9点,但你们的 TDW 得早晨5点就出数据,你不比 Oracle 强我为啥要用你?

第二,Oracle 和 TDW 两套系统必须同时运行,我们的“正房”还是 Oracle,你这个 TDW 算个“小妾”。

第三,我们很难抽调出大批人力帮忙对接新系统,得麻烦你们“保姆式”服务。

“没问题!”他们怕蓝钻反悔,赶紧答应,派出团队的半壁江山(两个人),就坐在蓝钻同事旁边帮他们对接。

可是很快,一个严重的问题就浮出水面:

既然蓝钻团队要同时使用 Oracle 和 TDW,那人家查询数据时候用的指令(SQL 语句)肯定是 Oracle 的那一套啊。可 TDW 的底层是 Hadoop 生态,说的是“外语”。。。

这就好比你造出来的炮弹填不进人家的大炮里,那这仗还打个毛线啊!

让人家改大炮,希望不大。唯一的解决方案就是:

大数据的老师傅们在 TDW 外面再加一层兼容 Oracle 的“弹壳”

于是大家一起“返工”,写了一本“中英互译大词典”——能把 Oracle 查询语句一条条解释给 TDW 执行。然后又花了三个月的时间跟蓝钻对接。

折腾完这些,QQ游戏的蓝钻业务终于能够装填 TDW 生产的“大数据炮弹”了。

此时已经是2011年,距离数据团队最初“上路”已经有两年多。

你也别替数据团队鸣不平。因为很快,喜闻乐见的“宫斗剧”反转章节就来了:

随着业务的发展壮大,腾讯各个团队需要计算的数据越来越复杂,到后来,很多报表“正宫” Oracle 一算就卡,而“小妾” TDW 却默默地在一边算好数据,不吵不闹,安静地等待临幸。。。

忽如一夜春风来,黄钻、红钻、QQ 会员等等业务团队都向 TDW 伸出了橄榄枝,幸福来得太突然。

那段时间,为了支撑这些新业务,TDW 的底层设备迅速增加,从几十台快报废的机器扩大到了——几百台快报废的机器。。。

这没啥,不是有“放羊系统”吗?放几十只羊,跟放几百只羊,理论上是一样的。

但“现实”走过来狠狠抽了“理论”一巴掌。。。

放羊系统本身也不是神,它也可能出问题啊!

例如,应该把任务从A羊身上挪走,却没有成功挪走,那整个计算任务就卡死了;

再例如,有的“羊”就跟周星驰演的龙套一样,挣扎半天就是死不了,导演欲言又止,没法喊“咔”——周围一圈好羊只能抽着烟卷,看着中间这台老弱病残羊一晃三摇地飙演技。

简单的数学:羊越多,出幺蛾子的羊也就越多。

这引来了各个“小白鼠”业务河东狮吼般的吐槽:喂,骗我们上了“贼船”,你 TDW 开始不好使了是不是?你怎么修我不管,反正每天早晨得把数据给我摆在这。。。

如今的大数据系统运维负责人赵重庆回忆,当时他们几个同事只好使出了杀手锏——轮流值夜班。

每天晚上保证有一个人“人肉放羊”,看哪里不对劲马上手动接管。

赵重庆

长此以往,大家眼圈一个赛一个黑,这也不是个事儿啊。

于是赵重庆又自告奋勇,开始把故障处理的操作写成“脚本”——遇到见过的问题,就触发脚本自动解决。

现在回忆,这正是腾讯大数据系统“自动化运维”的起点。

“很惭愧,当时也说不上有技术前瞻。只是规模大到一定程度,逼着我们必须想办法解决。。。”赵重庆非常实诚。

就这样,在老师傅的精心照料下,初生的大数据系统终于摆脱了“无根之萍”的危险,牢牢地抓紧了脚下的土地,开始为沙场上进击的腾讯源源不断地吐出“炮弹”。

我来我见我征服,不亦乐乎!

只不过彼时的大数据团队没有意识到,自己的命运,乃至腾讯的命运,都已经冲到了悬崖边缘。

(四)命运急转弯,手里是“数据方向盘” 

玛雅人说2012是世界末日。

这个预言在很多意义上都应验了——至少那个被无数人怀恋的充斥着盗版盘、博客、站长、代码英雄、网吧气味的“旧互联网世界”正洒下最后一抹余晖,沉沉落幕。

而始自2005年腾讯的“阶段性”命运剧本,也上演到了尾声。

但这一幕“演员”的表演,多少有些失控。

过去几年攻城略地的捷报,附赠一碗碗庆功酒,催将士微醺。腾讯的业务开始大步跨到以前并不熟悉的搜索、电商、团购等等领域。鹅厂众将杀伐痛快,一抬头却猛然发现,对面的“敌人”咋越打越多嘞?

人们津津乐道的3Q大战,其实只是当时诸多战役中的高潮番目。从硝烟中冲出来的企鹅定睛观瞧,前面黑洞洞,越看越像“华容道”,恐有大军埋伏,于是坐下来认真思考:

我们是不是需要一个新的“命运剧本”?

2012年5月18日,答案揭晓,这就是——“518变革”

如果用最俗气的语言解释这次变革,大概是:“不打了不打了,我认真做个平台好不好?大家都来我的平台上做生意,和气生财!”

事不宜迟,说干就干。腾讯敞开自家“游乐场”的大门,第三方项目(游戏和应用)如洪水一般入驻进来。

可开放也带来了“甜蜜的烦恼”

游乐场里的项目无边无沿,逛一辈子也逛不完,游客一进来就直接蒙圈了——怎么才能找到我喜欢的项目呢?

有人提议:“你腾讯应该了解自家用户的喜好,别让他们费时瞎逛,安排个导游,给他们推荐喜欢的项目不就完了吗?

如此一来,不仅游客体验更棒,咱各个项目也能收入更好啊!不让你家的导游白忙活,你拉来客人消费,分你一点提成不就得了?!”

看出来了吧?这是一个黄金机会啊!

电光火石的时间窗口,又被汤道生牢牢抓住。他说服总办,创建了“效果广告”业务,这就是后来大名鼎鼎的广告平台——“广点通”。

话说回来,广点通这个“导游”怎么知道用户喜欢什么呢?当然是靠大数据!没错,绕来绕去,重担又落在了这帮造炮弹的老师傅身上。

这里敲黑板!判断用户喜好的“大数据”,和之前做运营的“大数据”可不太一样:

刚才说的大数据主要是“账目”,比如用户买了什么,买了多少;

现在说的大数据,不仅包括账目,还包括“行为日志”,比如大家都点击了哪里,浏览了什么之类的。

问题是,行为数据可比账目数据多多了(一个人可能点了2000下,浏览了50个游戏,最后才花了一次Q币)。

所以,用“行为数据”造出来的炮弹,也比过去更重↓↓↓

这样一来,原本用来算“账目”的 TDW 有点撑不住了——“重型炮弹”的质量开始不稳定。

这让腾讯很尴尬,质量不好的炮弹是不敢用的,因为做广告不是儿戏:

如果给一个人推荐他需要的东西,那是雪中送炭;如果给人推荐不相关甚至是反感的东西,那就是“后脖颈塞凉冰”。

一个广告系统,如果不能把对人的理解和尊重放在第一位,将会引发灾难,你懂的。

可战机不等人啊。。。新的时代,正在嗷嗷待哺。

2012年,技术大牛蒋杰加入腾讯,开始接手大数据团队。

多说一句。蒋杰是北大博士,是我见过的少有的可以兼容“技术人的冰冷”和“知识分子温度”的人。我一直觉得,腾讯当年选择让这样一个人来照料“众生”的数据,是一个聪明且饱含善意的决定。

蒋杰

话说当时,蒋杰在腾讯摸底一圈儿后,心里隐隐发凉:“腾讯的大数据技术,目测落后顶尖水平三年。”

再看当时的大数据团队,虽然精兵强将,但人数也太少了。。。要图进取,得先补充几位杀伐果断的大牛!

陈鹏就是被选中的牛,2012年夏天他加入腾讯。

陈鹏

陈鹏一来,蒋杰就火速安排他去解决一个特别微小而具体的问题:“圈人”

啥是圈人?

打个比方,中哥开发了一个粤语游戏,想找广点通帮忙推广。

看调性,这个游戏估计会适合广东省的喜欢棋牌类游戏的近半年在QQ上比较活跃的25-30岁的男性玩家

你看,这句话里有五个限定条件,把同时符合这五个条件的人给“圈”出来,然后只给他们推荐,不就很靠谱嘛!

可问题是,仅仅找符合“近半年QQ活跃”这一个条件的人群,就需要把所有用户六个月的在线时间都统计一遍。

这个计算量有多大,你感受一下。

俯瞰 TDW,它就像个数据的海洋,每“圈”一次人,就像拿一个渔网把整个大海给搂一遍,简单的圈人需要几个小时,复杂一点的得几天。

等腾讯把人圈好了,我游戏的热度都过去一多半了。。。

你看,“圈人”不容易吧?这背后要处理的,恰恰是个“规模性”难题。

老司机陈鹏拍拍胸脯:“我有办法。待老夫在数仓之上,搭建一个‘数据分析引擎’!”

其实,数据分析引擎的核心原理也不是啥机密,就是在原有的数仓基础上创建一系列“索引”。

就像咱们查字典一样,要找哪个字,别直接翻,先查前面的目录,不就效率更高么?!

只不过,做“大数据索引”可比做“字典目录”难多了。

因为字典上的汉字永远是那些,目录八百年也不用变;可是用户数据却每分每秒都在更新,这意味着索引也要定期刷新。

但每刷新一次索引,都需要把所有数据重算一次,还是太浪费时间。

所以,陈鹏他们用了很大力气改进技术,做了个可以“局部更新”的高级索引系统

有了这层设计,就使得炮弹制造的速度大大加快

到这里,陈鹏还不满意,此时的“分析引擎”操作起来还像“开飞机”那么复杂。

因为分析引擎不是给大数据团队自己用的,而是给“炮手”(腾讯或其他公司的运营同学)用的。

为了让大家用着顺手,老师傅决定发明一套简洁的界面,把驾驶难度降低到“开车”的程度。

最终,这个数据分析引擎被改成了“自动挡”:

比如像中哥这样的普通人,学半个小时,就能通过拖拽之类的方法自己“圈人”;

圈好人之后,一按键就能推送“精准广告”,跟美图秀秀难度差不多。。。

这种傻瓜操作掀起一股飓风——各家公司不仅广告效果看得明明白白,还能通过调整“圈人策略”来发挥自己的主观能动性。在腾讯的平台上,用户越玩越嗨,商家自然盆满钵满。
由此,汤道生设想的“效果广告”就像一个飞轮,由静到动,由缓到快,势不可挡地运转起来。
也正是从这一刻开始,腾讯正式告别了“产品公司”的旧剧本,一个90度急转方向盘,冲进了“平台企业”的新剧本中
在2012年的财报中,腾讯强按激动的小手写下一段话:
在社交网络效果广告方面,我们显著受益于在社交网络上推出的精准广告系统,该系统广受电子商务公司及应用开发商等广告客户的欢迎。
由于曝光量增加及点击率提升,社交网络效果广告已成为我们网络广告业务的重要收入来源。
这时,众将才反应过来,回头看着蒋杰和大数据团队,为他们“四两拨千斤”的战术热烈鼓掌。
但蒋杰完全没心思享受荣誉。
因为他知道,“腾讯大数据落后三年”的问题没完全解决,九九八十一难没凑够,前路必定还有劫数。
这不,老师傅还没来得及摸鱼划水,小船儿就被另一个巨浪掀到了半空。。。
这个巨浪,叫“天天酷跑”。
(五)要!我现在就要!
上岁数的浅友可能还记得《天天酷跑》。
这是天美工作室的老师傅做梦都会笑出来的佳作,在《王者荣耀》降临前的世代,酷跑统治着人们的手机屏幕。
2013年秋天,这款游戏发行时,腾讯上上下下也是寄予厚望,“厚”到什么程度呢?游戏刚上线半小时,总办就来问:“数据怎么样啊?”
这个问号直接“砸穿几层地板”,到了大数据团队的头上。
刘煜宏心想:“今天的数据,不是明早上班才能看到么?!”但一转念,这样跟老板说话,是不是有点。。。不妥。。。
其实,天天酷跑只是“冰山一角”,它已经揭示了大数据系统无法逃避的又一难题:实时性
大数据报表祖传的操作就是“每天一算”,但王安石老师说过:祖宗不足法啊!
彼时的互联网战场已经白热化,大家都杀红了眼,每天填装一次炮弹的节奏,显然已经不够“炮手”打了呀。。。
这也恰恰是蒋杰揪心已久的辣个问题。
2013年,蒋杰已经在拼命推动大家把数据变成每小时一算,甚至每分钟一算。只不过,饭要一口口吃。当时的“炮弹制造”(报表生成)卡在了一个尴尬的技术细节上——火药运输(数据传输)。
咱们就直接拿天天酷跑来举例吧:
用户数据产生后,肯定先存在天天酷跑的服务器上;
天天酷跑需要把这堆数据复制到一个“中转集群”里,中转集群再复制到 TDW 里做大数据计算。
这么一“中转”,就得中转几个小时。
生产炮弹五分钟,运输火药五小时,这不开玩笑么。。。
可问题要怎么解决嘞?
应该搞一个“运输车队”,让那边刚一产生“数据火药”,哪怕只有一条,也得火速搬过来用于炮弹生产。
这个车队的学名就是“消息中间件”
别看“车队”听起来原理简单,做起来其实特别难。
难就难在大规模上。
你想想,如果只有几辆车搬运数据,怎么都好说;但千万辆车同时穿梭于大数据系统和业务系统之间,难免会有“途中翻车”(数据丢失)的情况,也会有“接洽不顺利”(接口出问题)的情况。
这时,就必须有一个更高级的“车队指挥部”能感知到一切,并且马上调度,安排补救。
话说,当时开源社区里刚刚崭露头角的卡夫卡(Kafka)就是“消息中间件”,可老师傅试了几次,Kafka 实在是太年轻,根本没有“车队指挥部”之类的设计。
老师傅只好参考 Kafka 的实现原理,开发了自己更完善的“数据车队”,起名为 TDBank
聊起 TDBank 一战,陈鹏充满怀念。
如果上下游通畅,我可以保证数据秒级传输;
如果上下游接口出现问题,我还能保证数据在中间缓冲三个小时,不会有任何遗漏。这种高性能和高可靠,让大数据团队在全公司一战成名!
他回忆。
不过事儿还没完:这么大量的火药被 TDBank 搬回 TDW 里,突然一下,负责造炮弹的“羊”(计算力)又不够用了。
你可能会说,接着增加服务器不就行了?!
还不是这么简单。
当时大数据系统底层的服务器数量已经扩展到4400台,几乎到了极限。再多加机器的话,“放羊系统”就管不过来了。。。
危急时刻,蒋杰从腾讯搜索团队“挖”来一位女侠,罗韩梅——她的独门绝技恰恰是“放羊”。
蒋杰和罗韩梅之前没有共事经历,但通过短暂的几次开会,他发现罗韩梅是个非常讲究实证、一丝不苟的技术人。
于是蒋杰做了个大胆的决定——把信任票投给罗韩梅,让她自己决定新的“放羊系统”(调度系统)走什么技术路线。
回忆起这段,罗韩梅还是很感动。
罗韩梅
话说,罗韩梅之前在搜索团队自研了一套很棒的调度系统,名叫 torca。如果把 torca 代码直接搬到大数据团队,可解燃眉之急。
但这两年搜索团队踩的坑,让她意识到一个严重的问题——如果系统和开源社区不兼容,会耗费巨大的人力来维护,越往后发展成本越大;而且一旦队员流失,再招新人,需要人家从头学习这套东西,很难上手。
“总之,我要抛弃过去的包袱,选择开源生态!”在认真讲完40多页PPT之后,罗韩梅给了蒋杰这个坚定的答案。
就这样,她挽起袖子开始干:
首先,她在开源调度系统 Yarn 之上,改进了的调度器——把调度性能提高了150倍;
然后,她又魔改一通,让调度系统支持容器技术,这就相当于把“羊”先装进了一个玻璃罐,再放进服务器——每个服务器上最多能塞进几百只羊,调度起来也更省力。
这一整套系统,就叫 GaiaStack。(Gaia 是希腊神话中的大地女神)
你看,羊已经放在了玻璃罐里。
有了 GaiaStack,大数据集群的机器瞬间增加到了8800台。用赵重庆的话说:“要不是机房地板的承重设计不够,其实还能继续增加。。。”
百万只“羊”在容器里如潮涨落,蔚为壮观。
在2014年,腾讯代表中国技术人做出了全球最大的大数据集群。
回到历史现场,TDBank 的“火线搬运”和 GaiaStack 的“疾风调度”让数据流动的节奏直线加速,报表从“天级”变成“小时级”,再从小时变成15分钟,然后是5分钟,3分钟,1分钟,5秒钟,1秒钟。。。
终于,数据炮弹像香肠一样从产线上喷涌出来
这至少导致两个史诗级的结果:
第一,广告、运营同学面前的游戏从“Hard 模式”直接变成“无限弹药模式”,只要他们能想出更好的“战术”,就能不断攻城略地。
第二,每一发炮弹打出去究竟有没有命中目标,这个“落点”的数据也可以通过 TDBank 秒速传回,用于校准下一发的“炮弹落点”。
如此循环,广告、推荐就能迅速变得精准,运营越来越得心应手。
2015年,在大数据老师傅的前赴后继下,数据兵工厂的“规模性”“实时性”两大警报终于解除,系统正式升级为第二代大数据平台
它不再是按图仿造的“汉阳造”,而是在开源框架下对核心模块“自主研发”的综合系统。
第二代大数据平台示意图
至此,“大数据落后三年”的帽子被抛进南海,蒋杰长舒一口气,总算能给将士们一个交代。
此时他也终于可以腾出手,搞一点儿真正赛博朋克的武器了!
这,就是“精确制导导弹”
(六)人工智能的烈焰 
2015年,中国智能手机的销量是4.3亿台。
人类文明经过万年跋涉,终于从“刀耕火种”迈进了“移动互联网时代”
那一年异象频出:中关村扫码一条街扫天扫地扫一切,各种App头破血流地抢占手机的方寸屏幕。而在2015十大App榜单中,腾讯稳坐半壁江山:微信、QQ、腾讯视频、QQ浏览器、腾讯新闻。
而这些App的“灵魂”中,几乎全部有“推荐模块”——猜你喜欢什么视频、新闻;也猜你可能对哪类产品感兴趣,进而展示广告。
注意,电脑充其量算个“家用电器”,而手机却是个“人体器官”。
这个事实逼迫“推荐模块”进行凶猛进化:不能再为“一类人”推荐,而要为“一个人”推荐
就拿视频推荐来说吧:腾讯视频里有成千上万个视频资源,在你下滑的一瞬间(大概10毫秒内),系统就必须找到在这个瞬间最有可能喜欢的那一个。
胜负就在这闪电之间,刺激吧?
如果把针对一类人的大数据推荐说成“炮弹”,那么这种针对每个人的推荐,就像是在炮弹上加装了“精确制导系统”的导弹
这个“精确制导系统”背后的核心技术,正是人工智能。
具体来说,它靠的是一个精巧的“人工智能模型”
先对每条视频的内容进行理解;
再对每个人(ID账号)背后的“社交关系”、“兴趣爱好”、“历史行为”等数据进行理解;
再结合当下的时间、热点,甚至天气情况之类的变量,把“人”和“内容”进行匹配
说起来,人工智能可是凝聚了人类的梦想和悲情,曾经三落三起——2015年,正是人工智能史上第三次爆发的前夜。
这次人工智能之所以会爆发,恰恰是因为生产“模型”的方法变了——以前是靠人写出来,现在是通过大量数据“自学成才”!
咋自学呢?
放大来看细节:
“人工智能训练平台”需要把所有用户的参数都汇入一个大熔炉,然后通过和人脑类似的“神经网络”,找到这些参数之间的隐秘关系,才能锻造出精准的模型
回到历史现场,怎样计算参数才能训练出模型,这些 AI 论文都已经明牌摆在老师傅的桌子上。
唯一的难题是:在工程上无法实现这么大量参数的交叉计算。
啥是交叉计算?
你看上面那张图就能感受到——各个参数之间都有连线,意味着它们之间都要发生关系。
具体就拿 QQ 上的社交关系数据来说,总共有千亿级别。这么多数据要相互计算,得到的结果再相互计算,如此重复多次,才能训练出一个 AI 模型——不仅原始数据多,算法贼复杂,中间还会生成很多“额外参数”。
用传统的 Hadoop 计算框架,恐怕一个月都算不明白。
这个时候的老师傅已经“学精了”,习惯性地先敲敲开源界的门,问问他们有啥解决方案。
结果,失望而归。
很不幸,腾讯老师傅是第一批用社交数据做推荐的人,也是第一批需要交叉计算如此大量数据的人——成为大数据的领先者,代价就是没有现成的作业可以抄了。。。
刘煜宏和大数据团队的几位大牛坐在一起,商量解决办法。这个场景,颇有几分熟悉吧。。。
只不过这次,他们都成了“自研派”
这个新框架的开发涉及到非常严肃的学术领域,大数据团队需要“火力支援”。
蒋杰想到了自己的母校,于是联系了北大计算机大牛崔斌教授,和腾讯成立了联合实验室,专门攻坚“参数交换”的问题。
一年后,他们祭出神器,这就是基于“参数服务器”的 AI 计算引擎—— Angel。
“参数服务器”的原理,用最简答的话来解释就是:
你计算的过程中不是有很多参数么?那我就搞一个“组长”专门存储、备份、管理、分发参数;剩下的“组员”啥都不用操心,埋头算数就好。
这么一分工,计算效率直线上升。
“千亿级别的参数联合训练,以前根本不敢想,但有了 Angel,一个小时内就能跑完一遍。”陈鹏回忆。
就这样,纯自研的 Angel 当仁不让地成为了腾讯第三代大数据平台的核心模块之一。
可想而知,一个如此精密的人工智能计算引擎,驾驶它的难度就不是“开飞机”,而是“开火箭”了。。。
有了之前“数据分析引擎”的成功经验,老师傅想到的第一件事儿就是:把它的驾驶难度降低成“开车”。
2016年,老师傅们在 Angel 引擎基础上,搭建了一个容易上手的人工智能模型训练平台,起名叫做“太极平台”
太极果然了得。借用掌门马保国老师的话说就是:啪的一声,很快啊,腾讯各个业务的推荐模块,都从“普通炮弹”升级成了“精确制导导弹”。
第三代大数据平台示意图
后来的故事证明,这次“全军换装”不要太及时。
2016年,阿法狗横空出世,暴锤李世石——人工智能的赛道如烟花升空,照亮半个天际。
互联网公司的混战,瞬间从地面常规战进入了“星球大战”,及时祭出“精确制导导弹”的玩家疯狂扩大战果:
利用“智能系统”为每个人推荐不同商品和优惠的拼多多、利用“个性推荐”开创了短视频纪元的抖音,都是 AI 战力的明证。
而在腾讯,AI 以更加润物无声的方式开花结果:
2017年,吃鸡和王者荣耀双雄火爆;2018年,腾讯视频开始稳坐国内三大长视频平台之首;2019年,QQ音乐+酷狗音乐夺下国内70%市场份额;2020年,腾讯广告收入达到823亿。
这些成绩背后,对于内容和用户的“深度理解”功不可没。
王者荣耀里用 AI 控制角色的“王者绝悟”,也是用太极平台训练出来的。
没有一种成功是理所当然。
回到历史的现场,腾讯正是在关键时刻跨过了 AI 底层计算能力的门槛,才在这场生死时速的大数据战争里抢到进入下一个关卡的珍贵门票。
而在鸿沟之上惊险一跃的瞬间,企鹅俯瞰脚下深渊,尽是森森白骨。
那些在时代绞杀中没有选对“命运剧本”的互联网公司,那些因为服务于实体经济而错过大数据浪潮的传统企业,在数据已成为导弹的时代,却依然只能挥舞着冷兵器抵挡拼杀,且战且退。
可是,只有少数人胜出的时代,真的是最好的时代吗?
对于已经20岁的腾讯来说,这是一道如果不主动回答就必须被动回答的题目。
经历了历次命运暴击的腾讯深知,被动回答问题到底能有多“被动”。
于是,2018年9月,腾讯最高决策机构“总办”的14名成员在香港开会,大家全票通过,决定再次修改自己的“命运剧本”。
这就是“930变革”
(七)战争与和平 
借用我在《壮年腾讯》里写的一句话:当你步入壮年,你要为家里扛煤气罐,修电灯泡,你要每天跑进风雨里赚回来真金白银,你要让父母妻儿获得尊严和幸福。
如果还用一句俗话概括“930变革”,那就是:以后腾讯不止要服务“个人消费者”,还要服务“企业”。
既然“大数据能力”在过去几年间帮助腾讯逾越了鸿沟,那么理应推断:大数据能力也可以帮助其他企业逾越鸿沟。
如此,服务企业的千钧重担,又有相当一部分落在了大数据团队的肩上。
果然是天降大任啊。。。
没办法,穿着格子衫的老师傅也得出街见客户。
那段时间,一丝不苟、办事靠谱的罗韩梅暂停她的“放羊”事业,被抽调成为技术顾问,跟着腾讯云的同事奔跑于全国各个企业,帮助他们解答大数据领域的种种问题。
见识了传统企业的状况,她却受到了万点暴击。
你想想看,腾讯这边已经开始用导弹打空间站了,一些企业还在纠结大刀怎么磨才能更锋利。
罗韩梅说:你们应该用炮!对方说:别废话,想挣我们的钱就得教我们磨刀!
罗韩梅气得想打人,但转念一想天降大任,又像郭芙蓉一样把使了一半的“排山倒海”给收了回去。
那段时间北京正在整治市容,一早出发去见客户的罗韩梅连早点都买不到,到了客户那气都没喘匀就开始“布道”,有些半信半疑的客户甚至连口水也不给喝。。。
卧薪尝胆的罗韩梅终究带回来一些重要信息
好消息是:经过唐僧式的传道,传统企业已经能够接受“数据驱动”的理念了;
坏消息是:他们非常担心被大公司“锁定”——如果用了你的大数据平台,我们所有业务数据都跑在你的“盒子”里,万一哪天你要涨价,或者以此“要挟”我们,那可不行!
解除传统企业担心的方法就是:把盒子打开,使用开源生态搭建大数据系统。这样企业一旦需要,就可以随时扔掉腾讯这个“拐棍”。
老师傅笑了:要这么说,那选我们就对了呀!!我们是最开源的啊!!
从第一代大数据刘煜宏他们“辩论赛”中开源派的胜利,到第二代大数据罗韩梅关键时刻“壮士断腕”转投开源,当时历史关头向开源投下的信任票,冥冥中不都是为了这一天么?
唯一的瑕疵是,腾讯大数据系统在开源框架下,还有一些自研的模块(比如 TDbank),正是这些“黑盒子”引发客户的担忧。
这咋办?
把这些自研模块也开源出去,不就得了!
这个决策,甚至都不是大数据团队做出的,在“930变革”中,从最高负责人马化腾、刘炽平到腾讯云与智慧产业群(CSIG)负责人汤道生和腾讯技术工程事业群(TEG)负责人卢山,都已经协调一致,把“开源”定为了全腾讯的战略。(有关这段故事,可以和《腾讯在命运的棋盘上砸下一颗钉子》相互印证)
开源,就像把系统从黑盒子里拿出来。
其实,天天在开源社区里摩擦的大数据团队,早就理解了回馈开源社区的“百利而无一害”,已经实践很久了:
比如,在2014年,他们就把兼容 Oracle 语法的 TDW 开源了;在2017年,他们把第三代大数据平台的核心引擎 Angel 也开源,2018年还进一步把 Angel 捐献给了 Linux 基金会。
但这还远远不够。
蒋杰动员众将士:尽快做技术梳理,把代码审计得漂漂亮亮,然后“应开尽开”。
在2019年,大数据团队一口气又开源了四大平台:“数据车队”——TDBank 的核心搬运模块 InLong、“放羊系统”——GaiaStack 的升级版 TKEStack、腾讯版的 PostgreSQL 数据库数据库——Tbase、Java 开发环境 OpenJDK 的腾讯版——Kona JDK。
每一个平台都堪称是支撑腾讯海量数据运转的“定海神针”,直接标价“0元购”,白送给全世界。
开源社区曾经帮助腾讯大数据一步步走到今天,我们理应回馈开源社区;这和社会帮助腾讯走到今天,我们理应回馈社会是一样的道理。
蒋杰对我说。
2019年11月,蒋杰宣布大数据平台资源调度系统 TKE 和 数据库 Tbase 对外开源。
算了一下,截止2023年初,腾讯大数据团队开源的代码已经超过了1000万行。
仔细看看,这哪里是1000万行代码,而是老师傅们十多年掉的1000万根头发啊。。。
有了开源的操作垫底,腾讯云再去跟各个企业聊合作,那就无比硬气:
我们的核心系统,每一行代码都可以在网上看到,真材实料任你审计;
如果你有足够的经验和人才,甚至可以用这些开源代码自己搭建大数据系统;
如果你还想接受腾讯服务,学习多年积累的数据经验,那就可以和腾讯云合作;
哪怕有一天我们不再合作,市面上也有大量的开源人才可以支撑你继续前进!
如此,你还怕被绑定吗?
正所谓,1000万行可以验证的开源代码,胜过商务团队拍1000万次胸脯。
由此,客户名单开始慢慢变长:人社部、中国银行、中国银联、国家电网、中央广播电视总台、三一重工、中国商飞、贵州茅台、云南白药、广州地铁等等重磅的政企机构和大公司,都相继成为腾讯大数据平台的用户。
腾讯大数据同时给我看了一下他们的“客户墙”。
一个简单的道理:没有一棵参天大树会兀自生长在贫瘠的土地上。
只有把技术的甘泉灌注在整片平原,才会孕育出恒久茂盛的森林。
自2020年之后,无论是腾讯、百度、阿里、字节跳动,都达成了默契,努力用自己的技术帮助其他行业,在这个终极目标上,他们并非敌手,而是友军。也正是因为他们的努力,一片大数据森林正在中国缓慢而坚定地生长。
更让他们感到欣喜的是,团队的开源技术很快就走出国门,得到了全世界的认可。
例如美国电信巨头 AT&T 选择 Angel 来训练他们的人工智能,欧洲航天局使用 TBase 来支撑他们的数据分析。
在我们的行话里,流行一个词,叫“中国式报表”
虽然大数据系统源自美国,是西方的东西,但是经过我们多年的参与,在大数据技术中已经融入了很多东方思维和中国人解决问题的思路。
把这些东西开源出去,影响人类的技术进程,意义也许更为深远。
刘煜宏说。
他的这番话让我感慨良多。
虽说技术无国界,但技术人有祖国。一个技术人的祖国,也许不只是他的国籍和他生活的土地,更是他所生长的文化中所透露出来的思维逻辑和行动哲学。
千万行代码虽然由英文写就,但字里行间却闪烁着技术人的中国自信。
这,也许就是“中国式现代化”所要抵达的终究化境。
(八)更广阔的“命运剧本” 
2023年,老师傅们比过去还要忙。
赵重庆正在带队搞一个“智能运维系统”
一个故障出现,可以有一套智能系统自动分析“根因”在哪,然后从工具箱里选出合适的工具,直接修复故障;并且把这次事故作为学习资料训练 AI,让系统自己避免同样坑踩两次。
罗韩梅正在带人研发一个叫做“峰峦”的“究极放羊系统”
峰峦试图把“在线业务处理”、“大数据离线计算”和“AI训练”这些任务用一个统一的调度器进行调度,可以最大程度提高服务器的利用效率,降低每一个微观比特的计算成本。
陈鹏正带着大伙儿搞一个科幻的“自适应计算框架”
无论你想“分析”还是“圈人”还是“推荐”还是训练 AI,不用在不同的平台上操作,而是用一套标准语言来表达要求,大数据系统自动找到最适合的引擎给你跑,使得速度最快,效率最优。
而蒋杰此刻最关心的,是把腾讯所有的“大数据”“AI”和“云计算”以统一的标准融合起来。
由于历史原因,虽然大数据平台上接入了腾讯的主要数据,但仍有一些业务团队选择在自己的“体内”进行大数据计算;更有一些部门曾在公共大数据平台上独立建设自己的人工智能训练平台。
技术人总有自己的骄傲,但骄傲+骄傲,有时候就会相爱相杀。
过去几年,蒋杰周旋在各个团队之间,付出了巨大的代价才把人工智能底层训练平台全部统一到“太极平台”上。
在他看来这些代价是值得的——只有统一平台,才能劲儿往一处使,大大提高 AI 的训练效果。
抬眼观看,虽然平台层已经统一,但各个业务还在用自己的规范来使用数据、训练 AI——这些上层技术路线的离散,仍旧阻碍着数据发挥极致的价值。
前路漫长。
蒋杰之所以执拗地要做这件事,并不是为了自己,甚至不是为了腾讯,他希望给未来的技术世界留下一个稳固的、没有裂缝的、可以依赖的“云计算+大数据+人工智能”的砖石。
有了这样的砖石,后辈们才有机会建造出更宏伟的宫殿。这一代技术人在漫漫时光长河里的努力,才不会被辜负。
“技术的统一,什么时候才能完成呢?”我问。
“可能还需要很久,我也说不好。但正是因为这件事艰难而且值得做,我才一直在这里啊。有一天如果做成了,我可能就‘下岗’了吧。”蒋杰笑。
《孙子兵法》有云:“夫未战而庙算胜者,得算多也,未战而庙算不胜者,得算少也多。多算胜少算不胜,而况于无算乎?”
它的意思是说,开战之前就料到自己能取胜的军队,是因为计划缜密,计算周到;开战之前就觉得够呛,是因为计划得少,计算不周;多计算就会胜过少计算,何况不计算呢?
在我看来,圣人孙武如果能见到大数据系统,一定瞬间就爱上它——因为“计算”跨越千年,仍是制胜法宝。
有趣的是,回望腾讯的几段命运剧本,“计算”其实发生在两个地方。
第一层计算,当然发生在大数据系统内,燃烧的数据帮助腾讯攻城略地,帮助无数企业跨越人工智能的鸿沟,帮助我们的经济体在残酷的国际竞争中立于不败。
这是术。
第二层计算,发生在腾讯这群人的脑海里。在历史的岔路口,权衡所有信息,动用妥协精神和坦诚面对错误的勇气重写自己的命运剧本,把潜在的危险扼杀在萌芽之中,才让腾讯这群人劫波历尽,仍能站在这里讲述他们的故事。
这是道。
站在此刻向前看,腾讯第三版“命运剧本”才刚刚上路,结局未至,定论尚早。
但数据团队这些人,却穿越了十载迷雾,付出了真真切切的时光。
陈鹏回忆,最初的数据平台部,后来几经辗转,以各种形态分化出了腾讯的广告工程部、数据库研发部、机器学习平台部。昔日的同事们,也散落在或远或近的各个部门,或者加入其他公司,成为燎原星火,成为漫天星光。
他们从刚毕业的姑娘小伙,变成了如今的人母人父;从一脸清澈的学徒,成为了管理千百人团队的大牛;从只关心方寸屏幕的“码农”变成了心中挂念时代命运的“士”。
这些具体的人的故事,和我们都真切体会过的时代变迁相互缠绕,才变得血肉丰盈。
时间在我们身上平等地流逝,我们曾经见证了大数据计算炮弹穿梭于互联网战场,我们仍有机会见证大数据成为飞舞刀尖和旋转齿轮中的润滑剂,成为每个人手中松软的面包和清香的花朵。
也许到那个时刻,数据的铁甲才能变成温柔的笔触,写出属于这片土地的命运剧本。

文章来源: http://mp.weixin.qq.com/s?__biz=MzU0NDEwMTc1MA==&mid=2247521245&idx=1&sn=d089de532117c1031093b6e1399b3c5d&chksm=fb0397c4cc741ed2ae537fc5d4772b1314850ff063601c5b0a52b152d42d843ef945d20bf72f#rd
如有侵权请联系:admin#unsafe.sh