抖音里会动的爱心怎么弄的(你在抖音上点的“小红心”到底去哪了)

首页教程更新时间:2023-05-22 06:59:02

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(1)

文 | 史中

作为祖国四化建设的接班人,张三睡前喜欢在抖音上刷搞笑,不不不,科普短视频。

看到一个不错的视频,他按捺不住冲动,野性双击点了个赞。看着那个小红心从屏幕上飘出来,一闪即散。

张三暗暗点头,仿佛和屏幕里的主播心意相通,指尖顺势一滑准备看下一个视频。

诶,不许动!就在这个普通得不能再普通的日常瞬间,中哥按一下暂停,问你一个问题:你知道这颗“小红心”后来去哪儿了吗?

小红心当然没有随风飘散,而是开启了一场冒险之旅——论路途,它接下来要走的路,也许比玄奘西行还要曲折;论结局,它将汇入奔涌的数据洪流,组成数字世界赖以运转的“真经”。

我们今天的故事,就讲讲这颗小红心的“硬核奇幻漂流”。

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(2)

(一)对“小红心”最为礼遇的人

在讲小红心的冒险之前,请原谅我稍稍多交代几句背景——说一个坏消息和一个好消息。

先说坏消息吧。

罗永浩早年在吉林大学演讲时曾对孩子们说过这样一段话:

如果你的一生没有做出伟大的事业,没有赚到钱也没有出名,但是一生耿直刚正不阿,拼着老命把家人照顾好了,梗着脖子去世了,你这一生有没有改变世界?还是改变了,因为这个世界上多了一个好人。

我时常想起这句话,不仅因为它会在我邪念萌发的时候勉励我做个好人,更因为它背后藏着一个有趣的模型:

我们每个人的脑袋瓜里都有一个“投票器”,无论大事小情,只要面对岔路口,都会用“投票器”抉择一下。

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(3)


一个人一生几亿次投票汇总下来,其实就是他的墓志铭;而无数人的墓志铭汇总起来,就是我们世界的历史线。

如此看来,我们颅内的每一次渺小“投票”都像是给世界输入了一个“数据”,最终会导致这个世界输出的“结果”有一丝丝偏转。

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(4)

可坏消息来了:我们的物理世界是没有“存证机制”的。

你做了好事不一定被人看到,被人看到不一定被理解,被理解不一定被赞扬,被赞扬不一定被效仿,被效仿时又不一定被下一个人看到。。。于是,这种“数据”的传递慢得惊人,留存准确度也低得惊人。

以至于,“善恶有报”这件事情虽然在逻辑上隐约成立,却在一个人的生命跨度里基本无法被观测到。

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(5)

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(6)

接下来说好消息吧。

2022年的我们,不是全无选择——除了破旧的物理世界,还有崭新的数字世界。

在数字世界里,事情就大快人心得多。每一个字节的数据都可以被分毫不爽地高速传递,进而确定性地、可以量化地对这个世界造成改变。

这么说有点抽象,举个栗子吧:

在物理世界,你看到一个人扶起了摔倒的老奶奶,你对着他比了一个赞,然后就没有然后了。

可是在抖音上,你看到一个人扶起了摔倒老奶奶的视频,你点了一个赞,这个赞就会像一枚钢印刻在数据库里,推动系统把这个视频推荐给更多人看,最终成为更多人心头的一个善念。

你看,正是有了数据,数字世界才有了比现实世界更大的演化动力。所以,把数据称为数字世界的石油简直不要太合适。

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(7)

遗憾的是,纵然数据是个宝,但不同人对它的态度是不同的。

就像石油一样:在原始部落看来这就是黑乎乎的沼泽,弃之如敝履,因为他们无法利用;但对于工业体系完善的国家来说,就会对石油颇为“礼遇”,因为他们懂得如何冶炼它。

那么此时此刻的数字世界,对数据最为礼遇,最会从数据中提炼能源的是谁呢?

要我说,四舍五入就是抖音的母公司,字节跳动。

我认识的字节跳动的老师傅不算多。但这些人却有一点出奇地相似,就是他们都极其尊重数据,甚至说“信仰数据”也不过分。你看,2012年他们起名的时候就把公司直接叫成了数据的计量单位“字节”,可见从第一集就奔着西天取经去了。。。

这几年字节的老师傅们开发了好多有趣的技术,目的就是“三最”——用最高的规格,把数据冶炼成最纯的能源,为用户发挥出最大的价值

这些技术,组成了一个“旅行社”,把小红心的旅途安排得明明白白。

好了,估计你已经对小红心的奇幻之旅有那么一点好奇了~~为了深刻体会数据技术的历史脉络,我决定带你重走一遍老师傅的取经路。

咱们先坐上时光机,回到2015年吧。

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(8)

(二)老师傅的“开挂系统”

2015年,抖音还没出生。但没关系,它的大哥今日头条已经诞生了。假设有人给某篇头条文章点了赞,也会产生一颗小红心。

这颗“小红心”的旅程可能是酱的:

1、它睁开了双眼,还没来得透过屏幕仔细看清主人的模样,就嗖地一下被甩到空中。空中的基站像弹弓一样,迅雷不及掩耳盗铃地把它弹射到轰鸣的服务器中。

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(9)

2、在服务器中,小红心见到了和它一样的来自各地的数据,它们列队整齐,被安排入住在一个叫做”数据库“的巨大酒店里。

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(10)

3、这个大酒店里好吃好喝,但就是有些寂寞,各个数据也相互不见面。小红心本以为自己就要在这里颐养天年了。但是,几天之后,它却收到邀请,要去参加一个有趣的游戏。

原来,字节的老师傅们写了一个系统,用来把“A组文章”和“B组文章”的阅读情况分别进行汇总。

我们的主角小红心恰恰属于A组文章的点赞数据,于是,它和其他众多数据抱在一起,坐在了数据工厂的流水线上,从另一端出来时,它变了模样,成为报表的一部分。

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(11)

你可能有点懵,这是在玩啥?

不瞒你说,这是字节这群老师傅在练绝招:“A/B测试”。

当时的情况大概是:今日头条刚刚开发出两种文章的推荐策略,可这两种策略哪种能把文章*更精准*地推荐给想看它们的人呢?

不知道。

不知道不要紧,事实是检验真理的唯一标准。

老师傅们选定两组用户,先分别用A、B两个策略为他们推荐文章,然后把这两组文章的点赞、阅读时长等等数据汇总起来,哪个策略返回的数据更好,不就说明它干活儿更棒么?

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(12)

看到这,你可能撇嘴:这不就是简单的对比实验么,算啥绝招?

客官有所不知,“A/B测试”从实验设计到数据汇总,是一个贼拉费劲儿的事情。

你遇到“午饭吃麦当劳还是肯德基”这样的抉择,肯定不会做个实验,把两家的汉堡薯条都买来,对比谁家的薯条多,谁家的汉堡大,你最多扔个鞋决定一下也就完事儿了,只有遇到重大抉择才会想到用“A/B”来严肃地解决。

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(13)

图片来自“毕导”,他曾经真的测试过哪种快餐更合算。。。文章链接我放在最后吧。

可字节这群人却都是“A/B狂人”,买汉堡前先做实验这种事儿他们没准还真能干出来。。。

在字节公司内部,流传着一个“黑话”——遇事不决用A/B

大到推荐引擎的策略调整,小到App里一个按钮的位置摆放,各种改进,总要设计个实验看看回收数据才能放心,可见“数据测试”已经写入这帮人的DNA了。。。

如果把做今日头条比作打一场游戏,那么每一次“A/B测试”就相当于一个“存档点”。

在AB两种策略里选优就相当于——“这里打得不好,读档重来再打一次”,每次都在“打得好的那一版”的基础上继续往前打。

最终,一点点优势累计,就必然形成数学上的巨大胜率。相比其他一条命拼到死的竞争对手,你说它不胜出谁胜出?

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(14)

所以,“用A/B”不是绝招,“总用A/B”才是绝招。

可字节跳动这帮人“开挂”也不是没有代价。还是刚才说的,实验设计太太太太太费功夫。。。

我们把刚才几张图拼成完整的流程,你感受一下:

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(15)

如今字节数据平台负责人罗旋在2014年加入公司。

他还记得那个“震撼”景象:所有的数据报表都是同事们用邮件传来传去,手动比对分析。

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(16)

这种小米加步枪的状态下,负责技术的老师傅就比较惨:

今天A团队为了把这堆数据捞回来,要请技术老师傅写一堆代码;明天B团队要把那堆数据捞回来,又得请老师傅重新写一堆代码。。。

老师傅长期被“请”,疲于奔命,秀发早晚不保啊。。。

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(17)

不行,老师傅们一合计,得赶快开发出一套“A/B测试工具”——甭管是哪个团队,想测啥事儿,直接把系统拿去用,最好别霸占俺们的“肉身”。

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(18)

Albert,就在这个“秀发保卫战”前不久加入字节,负责开发这个名叫“Libra”(天平)的A/B测试工具。

造这个工具的难点是啥呢?

你看,A/B测试最早是用在推荐算法的改进上,推荐算法团队的同学肯定是懂代码的,所以设计给他们用的A/B测试系统并不难;

可是后来,App 的设计团队也想用A/B测试来改进 App 的外观和逻辑,他们就不是那么懂底层代码了;

再后来,运营推广团队也想用A/B测试,决定哪种推广策略拉新效果更好,他们就完全不懂代码了。。。

所以,为了照顾所有人的使用,Libra 的界面就得尽量傻瓜,最好用鼠标拖拽的方式就能创造一个实验。

Albert 回忆。

于是,一群搞底层代码开发出身的老师傅坐在一起,把数据接入、实验设置这些核心功能搞定后,还得围成一圈开始研究怎样做出一个易用的界面。毕竟不是科班出身,搞出来的第一版界面蠢萌蠢萌的。

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(19)

当时的界面找不到了,给你们看看现在的界面吧(局部)

很快,各个团队就七嘴八舌地对界面和逻辑提出了各种改进意见——底层数据怎么调度他们不太关心,但是界面和逻辑改进他们很有心得。

在各个团队的“威逼”下,Albert 他们只好硬着头皮继续改进,甚至还专门招聘了前端工程师。

一个给内部用的产品,真的值得在易用性上下这么大功夫么?

可能连 Libra 团队自己也没想到,这恰恰会演变成为后来故事的一个重要伏笔,我们一会儿再说。

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(20)

随着团队们用 Libra 越来越熟练,一个哲学命题猝不及防地浮出水面:

我们刚才一直在说,A/B测试的目的是选择两个方案里更“好”的那个。可是,究竟什么是“好”,恐怕才是更根本的问题吧?

比如,什么是好的“文章推荐策略”呢?

点进去的人多,就是好策略吗?恐怕不是吧。标题党文章点击多,但用户很可能点进去就退出来,没准还会骂两句。

那么,阅读完成度高,就是好策略吗?似乎也不能这么绝对,很多不太高雅的内容可以吸引读者看完,可这种文章没营养,长期来看读者也不会满意。

Albert 解释。

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(21)

Albert

那肿么办?

哲学问题,不妨从哲学家那里借鉴答案。哲学家陈嘉映专门写过一本书,就叫《何为良好生活》。

他的结论当然很复杂,但是从技术层面来理解,所谓良好生活其实是“一系列复杂指标的总和”,包括快乐、品行、智识、自我实现等等。

那么以此类推,一个良好的推荐策略也不能只考察“点击量”、“点赞数”或“留存率”这样的单一指标,而是应该把好几个维度的数据集合起来,形成更复杂的指标。

Albert 回忆,当时各个团队可以放开手脚随意做实验之后,很快就意识到在指标上的“囊中羞涩”。

那段日子,无论是推荐策略团队,还是产品团队,还是运营推广团队,都绞尽脑汁开始设计奇奇怪怪的指标。

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(22)

于是,这又引出了新的难题

指标是由无数“小红心”这样的底层数据计算而成的。指标越复杂,就要调度越多的底层数据。

我们不妨把各个团队用来生成报表的各种“数据工厂”想象成炼油厂,把存在数据库的原始数据想象成地底的原油。

在炼油厂规模比较小的时候,也许一口简易油井就足够供应;

可是,现在炼油厂发展壮大,需要综合冶炼各种类型的原油,油井的性能就妥妥成了瓶颈。就是下图中闪烁的红色剪头。

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(23)

结果就是,2017年时分析师要查一个指标的历史变化情况,大概要等20秒钟才能看到结果。

20秒虽说不长,可分析师不是一天只看一个指标啊,他的工作就是每时每刻看指标。这一天下来,光等就等到颓废。。。

历史喜欢开玩笑——就在工具不怎么凑手的档口,却偏偏来了个大活儿!

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(24)

(三)“查数”神器

2017年,抖音火了,火到不能再火。

打南边来了一亿用户,每人都要上传视频;打北边来了两亿用户,每人都要观看、点赞、评论——汹涌人潮中,“小红心和它的数据朋友们”比从前翻了成千上万倍。

注意,这个时候,如果炼油厂(数据应用)需要原油(数据)的时候,还现场从油田(数据库)里抽取肯定是来不及了。

合理的办法是:创造出一个大仓库,把原油提前整理好放在那里,需要的时候可以第一时间抓取,这个仓库就叫“数仓”

就像下面这样:

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(25)

建造一个牛X的数仓,刻不容缓。

摆在老师傅面前的技术方案有四五个,就像东邪西毒南帝北丐那样各有千秋。

可挨个尝试了之后,结局很残酷——大多数技术路线都无法满足这么大规模数据的高速调取。。。

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(26)

如今的数仓团队技术负责人 Carl,正是在这个危急时候加入团队的。

Carl 刚加入没几天,大伙就告诉他噩耗:东邪西毒南帝北丐都顶不住,目前就剩一个“郭靖”看起来还是个苗子。

这就是当时最新的开源分析型数据库 ClickHouse

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(27)

“虽然但是,啥。。。啥是 ClickHouse?”在数据库领域纵横八年的老司机 Carl 有些尴尬地问。。。

其实这不怪 Carl,在2017年,ClickHouse 诞生不久,刚开始在社区里流行,还没有哪个像样的江湖大佬敢冒险选用这个年轻的“郭靖”,没听说过也再正常不过。

可邪门的是,经过进一步测试,ClickHouse 读写数据的性能总是名列前茅,就像一个闪闪发光的急速机械臂,老师傅越看越爱。

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(28)

Carl 他们一合计,没人吃螃蟹,并不等于螃蟹不好吃啊。拍拍胸脯,我们先用呗!

老师傅们就这样冲进了战场,用了两个月就基于 ClickHouse 搞出第一版数仓,交给一些敢于尝鲜的规模小一点的业务团队去用。

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(29)

Carl

可是,吃螃蟹的代价很快就来了。

刚才说过,ClickHouse 就像一个机械臂。可是一个完整的数仓,仅仅有机械臂还不行,还需要有系统负责多个机械臂之间的配合,还要有一系列措施保证机械臂的故障维修。

就像下面这样:

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(30)

可是,ClickHouse 自己都是初出茅庐,和它相配套的系统更没有经过大规模磨合检验,暗藏着五花八门的坑。。。

当时一个大的数仓里能达到400-500个 ClickHouse 集群,集群之间要实现“高可用”,靠的是 Zookeeper 系统。

这么多集群满负荷运行,压力就会集中在 Zookeeper 身上,弄不好就会挂掉。。。

Carl 回忆。

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(31)

要命的是,当时有些团队已经开始依赖这套系统,他们吃着火锅唱着歌查着数据,突然系统崩溃,那种感觉就像被麻匪劫了一样慌。

Carl 他们也惊出一身冷汗,把伙伴置于危险境地那妥妥有损技术人的尊严啊,这种事儿决不能发生——他们当即使出单身30年的手速,写了一套临时脚本硬生生扛住。

脚本就像临时缠上的胶带,毕竟不是长久之计。

他们只能左右开弓:

左手维护脚本,右手开始写一套永久的高可用方案。

几周之后,新方案火速上线替换掉临时脚本,才算灭火成功。。。

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(32)

用几个机器人把 Zookeeper 的任务分担下来。

可是,汗还没来得及擦,新的“险情”又来了。

虽说数仓的建立本来就是为了让人查询各种奇怪的数据。可有些业务团队的脑洞过大,查数据的姿势堪比瑜伽——总让机械臂去够架子边缘的箱子。。。

数仓又不可能躺在椅子上翘腿说:“你查的这个数据太怪了,我不想给你找。”

它只能勉为其难去查,这一下不要紧,机械臂触发 Bug “扭了腰”,整个系统就被搞挂了。

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(33)

Carl 他们一开始的想法是,预测一下大家都会用什么怪姿势使用数仓,后来他发现自己天真了:

调用数仓的这群人脑洞可太大了,老师傅根本猜不到他们会怎么出牌,只能遇到一个问题修复一个问题——Bug 难免有,及时修好下次不犯就是好同志。

数仓挂掉,业务团队多少是能容忍的,可伴随而来的另一件事儿他们却忍不了:

每一次数仓“因病”去世(挂掉),再投胎转世(重启)都需要十来分钟,这等不起啊。。。

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(34)

Carl 他们猛然意识到,数仓的“重启速度”这种细节,也妥妥是性能的重要组成部分!

老师傅赶紧研究,他们发现数仓重启之所以需要转圈圈那么久,就是因为读取“元信息”的过程比较繁琐,干脆一不做二不休,专门写了一套程序把这些信息存盘管理起来。

需要重启的时候,直接读取这一整套数据,又干净又卫生。

你发现没,那个阶段 Carl 他们做的事情,好像哪件都说不上惊天动地。但是,如果没有几百个核心业务每天在数仓上反复摩擦,你还真没办法把这些问题都发现,也没办法解决得这么圆润。。。

这个“圆润”,同样为未来埋下了伏笔,我们一会儿再说。

我们的故事快进到2018年,此时 Carl 他们已经陆续给 ClickHouse 增加了几百项大小改动,使得“字节版”的 ClickHouse 已经和母胎的“社区版”有很大区别了,于是他们决定给自己的 ClickHouse 起个新名,叫做 ByteHouse

这一年,也是 Carl 最开心的一年。因为随着 ByteHouse 肉眼可见越来越好用,公司内很多团队的数据工厂都纷纷把 ByteHouse 数仓作为自己数据处理的重要一环。

更让 Carl 高兴的是,在业界很多大公司也纷纷开始选择 ClickHouse 作为数仓核心组件。

这种感觉,就像你在网易云发现了一首评论寥寥的宝藏歌曲,几年后却发现评论已经十万加,所有人都在听——一种“老子就是有眼光”的感觉油然而生。

ByteHouse 出场之后,我们不妨再来看我们的主角“小红心”,它的“奇幻旅程”就和前几年明显不同了。

张三给一个视频点了小红心,小红心诞生之后,会先入住数据库这个“宾馆”;

然后它会从宾馆出来,进入 ByteHouse 这个硕大的“仓库”,和来自其他“宾馆”的数据汇合在一起;

接下来,小红心才会根据调遣进入功能各异的数据工厂,用自己的身躯组成报表;

当然,如果有必要,一些报表会继续进入那个“A/B测试”的神器 Libra,最终为这个数字世界里的每一个决策提供依据。

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(35)

注意,我画的这个旅游线路是“极简版”。

在实际的“数据旅行”中,计算一个数据没有这么简单。

小红心很可能要在“宾馆”(数据库)“仓库”(数仓)和工厂“数据应用”中来回穿梭,中途要换好几次“大巴”,还要和不同的数据“组团”——一趟旅途分成几百段都很正常。

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(36)

参加过旅行团的浅友都有过这样的经历:集体坐大巴的时候,总有个别人因为五花八门的理由迟到,一车人只好坐在那里干等,这会大大降低旅行团的行进效率。。。

没错,在“数据旅行团”中,这种事儿同样会发生。。。

就在2018年,随着数据处理流程越来越复杂,老师傅们发现,数据该出现不出现,该发车不发车的情况越来越多。

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(37)

比如,抖音规定有些报表早晨9点就要计算出来,可是前面的数据没出来,指标就填不进去——将军看不到地图,这仗难道要“盲打”了吗?

数据旅行团的问题,也可以从现实旅行团身上借鉴答案。

没错,数据旅行团需要一个“导游”,而且是一个严厉的导游,谁迟到就打谁屁屁的那种!

(四)数据旅行团的“导游”

“字节有一个很牛的文化,你知道是什么吗?是拉群。”Brian 笑着给我讲。

“当年,遇到‘数据流程卡住’的问题,你只要把相关负责人拉到一个群,他们就会神奇地行动起来,自己协商出办法把问题给解决!自驱力杠杠的。”

可问题就在于,“一腔热血”不能解决所有问题。

拉群办事,靠的毕竟是肉身,就像在数据流程的水管破口上用手指头按住那样↓↓↓

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(38)

可随着数据应用变多,发现的破口越来越多——每次出问题就多拉一个群,到后来,相关负责人手机里的群已经密密麻麻,老师傅们的手指头不够用了↓↓↓

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(39)

结论很明显:靠人力解决“数据治理”的难题,长远来看根本不可取。

这里,就是 Brian 和他的同事们展现实力的时刻了。

哦还没给你介绍,Brian 是字节跳动数据治理工具 DataLeap 的负责人。这个 DataLeap,就是刚才我们说的“数据旅行团”里的“导游”

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(40)

Brian

具体来说,DataLeap 保证数据流程的方法,是通过各方签署“SLA”(服务级别协议 Service-Level Agreement)来实现的。

啥是 SLA?

我们还是沿用之前的例子:

假如A团队必须在早晨9点把一个报表准时提交给抖音的负责人,那么B团队就要在早晨6点前把所有指标算出来;

以此往前推,C团队就要在凌晨3点前把计算指标所需的数据都准备好;

再往前推,C团队计算所需的更底层数据在凌晨1点就要由D团队准备好。

在这个共识的基础上,A、B、C、D 四个团队就在 DataLeap 上签字画押,也就是签署 SLA。

这下,数据链路上重要节点的责任就被“铁路警察,各包一段”了。

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(41)

在字节内部,每天都会新增一些“数据旅行线路”——用 DataLeap 来建立线路的时候,就可以同时签署相应的 SLA。

假如以后遇到问题,数据卡在了C团队那里,DataLeap 会直接给C团队弹出报警,让他们赶快处理,如果没有即使修复,事故责任就落在了C团队头上。

就像一个有趣的“击鼓传锅”游戏。(开玩笑的,大家很友好不会甩锅,DataLeap只是帮各个团队明晰了权责。)

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(42)

Brian 特别提醒我,不要把 DataLeap 想象成冰冷的“签字画押”工具,它还有很多温馨的黑科技。

比如,老师傅在 DataLeap 里内置了一个算法,可以根据表现自动给一条数据链路的“健康度”打分。

如果某个数据传输节点设置不合理,或者给存储计算分配的资源太抠门,或者历史上出现了多次延时,都会影响这条数据链路的分数。

相关团队只要经常关注各条数据链路的分数,就能把问题消灭在萌芽中了。

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(43)

再比如,DataLeap 还可以设定每条数据链路的“优先级”。

假设抖音每天需要1000个数据流来产生1000种报表,那么,万一遇到不可抗力,计算资源吃紧,在规定时间内只能算出40%的报表。

这时候应该肿么办呢?

这是个经典的“吃自助餐”问题:肚子有限,怎么才能吃回本?肯定是先吃最值钱的龙虾!

所以,抖音团队也应该先挑最重要的报表计算——他们可以在 DataLeap 里提前规定好:

100个“一级任务”;

300个“二级任务”;

600个“三级任务”。

这样遇到问题的时候,DataLeap 就可以自动保证数据按照轻重缓急的顺序被计算,最大程度减小损失。

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(44)

故事发展到这个阶段,我们的主角小红心的“奇幻旅途”又升级了。

在它穿梭在数据库、数仓、数据分析系统的过程中,旁边会时刻站着一个导游(DataLeap),絮絮叨叨苦口婆心地帮它安排行程,催它一个个赶通告。

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(45)

至此,字节这群老师傅花了几年时间精心构建出来的“数据豪华旅行团”,就已基本呈现在你面前。

请注意,“豪华”这两个字不是我随意加的修饰,其实在2018年,每颗小红心旅行一趟下来,总体花费的成本比现在高不少,堪称豪华。

但这种“豪华”没啥骄傲的,这其实代表着性价比不那么极致。

在2018年以后,一方面全球经济形势都遇到了寒潮,大家都不富裕;另一方面,人们对数字世界的依赖却只增不减,要处理的小红心还是越来越多。

Albert 算了算,如今 Libra 上每天新增的实验有2000个,同时进行中的实验数更是数以万计。

进入A/B测试的就有这么多,那么每时每刻产生的总报表数就更多了,进而,底层的数仓和数据库被调用的次数就更更更多了。

这种情况下,老师傅反倒比以前压力更大,各个环节都被倒逼要优化“数据旅行”的支出——又让马儿跑,又得马儿不吃草。

小红心必须得“穷游”了↓↓↓

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(46)

(五)穷游的小红心

“问你个问题,每个A/B实验应该选择多少样本做对比,才能得出科学的结果?”Albert 问我。

“那。。。应该是越多越好吧。”我说。

首先,测试是非常耗费计算资源的,如果实验规模过大,同时上这么多实验,Libra 肯定撑不住。

再说,如果一个 App 有1亿用户,测试样本就把1亿用户分成两个5000万,那就不是实验,而是实际发生了。如果A策略有缺陷,就会对A策略覆盖的5000万用户都都造成不可逆的负面影响。

他说。

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(47)

“要这么说,样本数量就不能太大,选1万人。”我说。

“1万人测试出来的结果,一定会和1亿人测试的结论相同吗?”他反问。

“那就。。。每次实验选1万人,连续做5次实验,5次结果相互印证,会不会好一点?”我有点心虚。

“你看,这就是问题所在。当样本规模变小的时候,这就变成了一个统计科学问题了。告诉你答案,从统计学的角度来看,‘5万人做5次’的结果并不比‘5万人做1次’的结果更准确。”Albert 笑。

“等等,让我捋捋。。。”话聊到这儿,我已经在晕菜的边缘徘徊了。

“其实,我们这些做代码工程出身的,一开始统计学知识也不够。但是从2018年开始,我们意识到自己的局限性,引进了很多数据科学家,我讲的这些结论是跟他们学习以后才明白的。”Albert 安慰脆弱的我。

看我的表情还残存一丝倔强,Albert 又给我讲了几个栗子:

比如“样本污染问题”

很多团队每次做“A/B测试”,都会一直选择ID是奇数的用户为A组,ID是偶数的用户为B组。

这就有问题了,假如两次*本应独立*的实验用的分组情况完全相同,甲实验就会干扰乙实验。

乙实验观察到“A策略比B策略好”,这很可能是因为在甲实验里的A策略比B策略好,由于样本选取不科学,这个“好”在第二次实验里仍然在发挥作用。。。

也就是说,两次实验发生了“交叉污染”。。。

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(48)

再比如“分组干扰问题”

你在重庆挑选了A、B两组用户做拉新,介绍一个新用户注册抖音就给一包火锅底料(这是随便编的策略)。

但是很可能A、B两组用户在真实世界里本来就有关系,是同事、家人、朋友,会口耳相传。

两个策略就会相互干扰,呈现出失真的结果。

所以,必须让 A、B两组用户越不认识越好。

但是,你又不能一组选在重庆一组选在新疆。因为这样两组样本本身差异太大,新疆人爱吃大盘鸡,不想要你的火锅底料。。。

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(49)

你看,这些问题五花八门,但说到底他们要做的就是一件事儿——在“成本可控”的情况下,尽量保证“决策卫生”,从而把测试结果准确率无限推进到“理论极致”

所以,从2018年开始,数据科学家们在 Libra 里面内置了很多保证“决策卫生”的流程和功能。它们就像一个个“安全气囊”,保证不太懂统计科学的新手司机也能上秋名山飚车。。。

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(50)

显然,要实现全流程“穷游”,数据仓库同样需要技术升级。

可是,数仓这东西非常精密,所有组件都紧紧咬合在一起,牵一发动全身,没办法“微整形”,要整就整“大手术”。

在2020年左右,ByteHouse 的各种小优化已经做到极致,拱不动了。Carl 他们咬咬牙——与其逃避命运,不如主动出击——决定对 ByteHouse 进行两场大手术。

这第一台手术就是“存算分离”

我们回到前面的比喻,把 ByteHouse 看做一个仓库。原本这个仓库是每一个货架(存储资源)旁边都站着一个固定机械臂(计算资源),需要这个货架上的数据,它就拿下来。

但是可想而知,如果仓库规模不断变大,机械臂数量也会线性增多。

然而,不是每个货架上的数据时刻都需要存取——大部分时间机械臂(计算资源)都在闲置中,资源浪费。

所谓存算分离,就是把机械臂变成移动的,需要哪个货架上的数据,就过去拿。可想而知,这样的改造不仅能节省很多“机械臂”,还能腾出“货架”的空间。

就像下面这样↓↓↓

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(51)

第二台手术就是“并行处理”

原本 ClickHouse 的任务分配模式是“树状”的:

一个查询任务来了,就需要一个“工头”把任务分配给很多机械臂,它们把数据找来,再汇总给工头。可这样有个明显的缺点,就是工头一个人成为了系统的瓶颈,尤其是在数据汇总的时候,大家都把数据给它,它就会忙不过来。

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(52)

所谓“并行处理”,就是让机械臂们自己分别汇总,然后把汇总后的结果报给工头,就能大大缩短计算的时间。

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(53)

别看这两台手术从逻辑上听上去不难理解,但是要完成改造,需要深入数仓内部的最细节代码,相当于把每一颗螺丝都进行改造,再精巧地封装回去,难度直逼开颅手术——Carl 他们整整干了两年。

就在 ByteHouse 做手术的时候,DataLeap 也没闲着。

Brian 给我介绍了一个字节独创的理念,叫“数据的分布式自制”

这是啥呢?

举个例子,像抖音、今日头条这样的顶流业务,对数据的要求就是“变态级”的,哪怕数据晚到一秒钟,可能都是事故。可是对于字节内部刚刚孵化的小业务,就没必要这么较真,数据晚半个小时似乎也没问题。

于是,DataLeap 就加入了一个功能,可以根据大家不同的容忍程度,自助调整数据链条的“松紧”。

“干嘛要调,不是数据传递越快越好吗?”我问。

因为时间就是金钱。

对数据要求严格,就必须在全链路的计算、存储、监控都下足本钱,成本自然就高;

反之如果对数据时效要求不高,就可以坐慢车,大大节省成本。

他说。

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(54)

就像这样,飞机火车汽车随便挑。

Brian 他们搞出的“抠门”操作还有很多。

比如,有些没人用的就数据会一直占据存储空间,可是团队却不舍得删,就像不敢扔家里的旧书,生怕哪天还要看。

可是,存储用的硬盘却是实打实的成本啊!眼看每天都有新数据源源不断进来,存储资源成本越来越高。。。

DataLeap 一看,这个事儿我能帮忙啊!

因为所有的数据链路都在 DataLeap 上创建,它就自然能知道哪些数据访问量比较高,哪些数据一直在“万年冷宫”。根据数据的热度,DataLeap 就能精准建议团队删除一些最冷的数据。

这样一来,不仅存储成本大大降低,数据也可以在合适的机会被销毁。

故事讲到这,我们的主角小红心的“数据旅行团”又有了新升级。

首先,它的整个旅途在保证质量的情况下,会变得更便宜

其次,在完成所有旅程之后,它最终还会回归自然。直到这一刻,小红心才真正走完了它“驱动世界”的旅途。

给你看下全景图吧:

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(55)

刚才我为了方便你理解,一直在强调“穷游”,好像老师傅都很抠门似的。但,这样磨炼极致的数据处理体系,难道仅仅是为了省钱吗?

当然不是。

别忘了,数据是数字世界的石油——不仅仅是字节跳动需要数据石油,也不仅仅是互联网行业需要数据石油,我们现实世界里的工厂、饭店、机场、银行,千行百业全部都在源源不断地产生数据,他们当然也有权力使用数据石油。

可问题在于:不同行业的“数据密度”是不同的。互联网行业天生泡在数据石油里,如中东土豪一样;但一些传统行业就像贫油国,有些数据并不丰富,有些开采难度较大。

这种情况下,还要斥巨资建设数据处理体系,他们就没有动力了。。。

换句话说,只有一个性价比足够高的数据处理体系,才能融入千行百业,帮助他们来开采自己的石油。

字节这群老师傅忽然抬头,发现整个江湖之上,自己对于数据技术的处理已经到了得心应手的地步。于是,高层慎重讨论,准备把这些年积累下来的各种技术开放出来,服务广大企业。

这就是后来大名鼎鼎的“火山引擎”

(六)成为“利器”

2021年,数据老师傅们来了个一秒变装——从服务公司内部业务,转向服务衣食住行、千行百业。

字节这些系统也来了个一秒变装——A/B 测试系统 Libra 改名为 DataTester,用户增长分析系统TEA 改名为 DataFinder,数据洞察工具风神改名为 DataWind、客户数据平台 Mirror 改名为 VeCDP,一起装在了叫做“VeDI”的数智平台里。

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(56)

就像这样(点击可以看大图)

其实,各行各业建设数据体系,本质上就是把字节走过的路重走一遍,火山引擎的价值恰恰是——字节踩过的10086个坑,不要再让其他公司踩。

老师傅发现,他们要做的还是老三样:

1、帮助企业建立“收集小红心”的能力;

2、帮助企业建造小红心的“仓库”和“工厂”;

3、帮助企业给小红心的旅途配备“导游”。

举几个栗子吧。

有很多非互联网企业,还没有自己的 App,或者 App 功能设计不完善。

他们最急需的,就是第一步——收集“小红心”的能力

字节的一位同学告诉我,他们刚刚帮助领克汽车改进了 App 的设计,让领克的车主可以不用说话,仅仅通过在 App 里的各种操作就展现出他们的诉求,就像今日头条和抖音所做的那样。

收集到了小红心,领克就可以做“A/B测试”,从而一点点改进对车主的服务。

你看,数据链条就这样缓慢地转动起来。

估计浅友里肯定有领克的车主,不知道你最近体验到变化没。

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(57)

领克还用火山引擎做了更多数据加工,篇幅有限就放在图里了。(点鸡可以变大)

有了小红心,就到了第二步——建造小红心的“仓库”和“工厂”

2021年,Levi’s(李维斯)已经完成了用户数据库的建立,他们就让字节的老师傅们把数据接入了数据工厂——VeCDP(管理客户数据的平台)。

这样一来,Levi’s 就把自己的客户分为六大人群体系,然后对每一类客户进行个性化的推荐和营销。

这样不仅减少了对很多非核心用户的打扰,还能集中精力服务真正的目标用户。

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(58)

仓库和工厂都有了,接下来就是第三步——给小红心配“导游”。

能走到第三步的企业,已经算是数据领域的佼佼者了,因为这说明他们的数据基础已经完备,开始考虑数据治理的问题了。(你还记得吧,字节也是在数据基础链路建设完整之后才重点搞数据治理的。)

讲实话,目前这样的企业还真不多,“得到”就是其中之一。

得到是很多爱智求真的小伙伴(比如我)手机里的C位 App。

客观上来说,这些客户的消费能力还挺强的,所以他们使用得到 App 时产生的小红心(数据)的价值也很高,必须被重视,必须得到及时的响应。

所以,得到对数据链路的 SLA 要求贼高,数据决不能迟到。

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(59)

这不正好是 DataLeap 的用武之地么?

2021年的时候,字节老师傅帮得到建设了 DataLeap 的数据体系,从此,数据不到位的情况大大减少。

字节的同学还给我讲了好多案例,篇幅有限我就不给你转述了。

草灰蛇线伏脉千里,你还记得我们之前的那些伏笔么?

很多客户没有专业的数据分析师,这时候 Libra 的傻瓜式操作就非常合适;

各行各业使用数据的模式千奇百怪,ByteHouse 早年被锻炼出来的圆润皮实就发挥了作用;

各个公司的数据发展水平不同,有的对数据质量要求高,有的对数据质量容忍度高,这个时候 DataLeap 的分布式治理功能恰恰能派上用场。

他们当年费力做了这么多细节功能,更多是出于纯粹的数据信仰。可是“纯粹”恰恰是改造世界最锋利的武器。

那些默默的努力如今一下子灵魂附体。大概正如那歌词:“人生没有白走的路,每一步都算数”。

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(60)

(七)没有尽头的数据长征

熟悉中哥的人都知道,我是一个“数据技术信仰者”。

原因其实也很简单,中国总体地大物“薄”,人均来看各种能源都谈不上丰富,漫长的时间里,我们可以依靠的只有每个人的勤劳和忍耐。

正是这样的历史,造就了巨大的人口和统一的市场。而这两样,恰恰是数据的温床,孕育了最丰富的未来能源。

从这个角度看来,我们终究得到了历史的一些眷顾。

在未来几十年,大概率会爆发一场波澜壮阔的“数据技术普及浪潮”,每一个公司都可以用低廉的价格购买一个高效的“数据处理引擎”,就像现在我们买汽车一样简单。

也只有到了数据引擎遍地开花的时候,我们才真正拍胸脯说自己是奔跑在数据上的国家。

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(61)

坏消息是,我们目前的数据处理效率,还不能支撑那样的未来。

好消息是,老师傅们仍在继续努力。

Carl 告诉我,最近 ByteHouse 正准备研究一个智能化的黑科技:

你还记得我们刚才说过,一个任务到达 ByteHouse 之后,要有一个工头来进行任务分配的吧。

面对一个任务,究竟应该召唤出多少个“机械臂”去执行子任务呢?如果太多就会浪费算力,如果太少就会拖延时间。

当前的解决方案比较粗暴,就是手动设定的默认值。

可未来 ByteHouse 进一步渗入各行各业,计算任务会变得更加五花八门,都采用“默认任务分配策略”就不合适了。

所以,黑科技就是:根据现场情况,自动测算最合适的“并行度”来分配任务。

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(62)

这种润物细无声的“智能化”还发生着在很多地方。

比如在 DataTester(Libra) 里,目前所有的指标都是分析师自己凭脑袋瓜想出来的。

但 Albert 告诉我,他们正在尝试研究一种技术,可以通过历史数据和行业属性自动向分析师推荐:“要不要试试这样构建指标?”

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(63)

这样的智能建议如果足够靠谱,那么各行各业就会进一步摆脱对专业分析师的依赖,利用数据的门槛随之大幅下降。

DataLeap 也有类似的黑科技。

Brian 说,过去的 DataLeap 在发现某个数据流卡住的时候(一般是半夜),都会马上打电话叫醒响应团队的方方面面好几位负责人,但很多情况下能解决问题的就是其中一个人

所以 DataLeap 正在研究的黑科技就是:

通过数据智能研判这个拥堵具体是由那个小分队造成的,直接给这一个人负责人来精准的“夺命连环 Call”,别人该睡还睡。

“提升大家的幸福感嘛!”Brian 笑。

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(64)

举了这三个例子,可能你已经看出来了,未来数据技术发展的一大方向就是“数据处理的智能化”

智能化浪潮的意义,堪比汽车从手动挡进化成自动挡一样,瞬间让很多没信心开车的人也能学开车了。

除了“智能化”,未来数据处理还会越来越“实时化”

以前的“小红心旅行”短则几个小时,长则几天,但是在很多场景下,我们等不了这么久:

比如,你搜索了一件衣服,下一秒你就希望电商马上给你推荐相似的款式;

比如,火电厂周围的风向变了,就需要马上调整空冷岛风扇的转速,补偿风向对散热的影响;

比如,居民的用电情况发生改变,就需要马上调整电网输送功率,保持供电用电平衡。

实时报表的要求越来越高,小红心整个旅途可能在几秒内就得完成。(可以参考我写过的《你在被窝里刷手机岁月静好,一个“神秘引擎”却在远方和时间赛跑》

当延迟以毫秒计数,数据就会组成一条奔腾的大河。而在大河两岸,新的文明得以被滋养。

就像下面这张完整版大图:

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(65)

虽然有点俗,但我的梦想就是通过产品化的方式,让未来更多的人能够用到数据。

人做的事情越来越少,自动化越来越多,直到人类从一条条数据链路中被完全解放出来。

Brian 说。

我想了半天:“你这梦想已经不俗了吧?”

告别字节的老师傅们,我忍不住掰着手指头计算。

20多年前,互联网出现;10多年前,智能手机普及;而建立在这些基础之上数据世界,仍是蹒跚的孩子。

一个孩子已经如此强悍,我有理由相信,更多奇迹已经预定了我们的未来。

但成长从来并非易事。

从荒芜到轰鸣,如今数字世界的一切都由一行行微小而具体的代码堆砌而成,过去走到现在并无捷径。由此想见,由现在走到未来也没有捷径。

这可能是一场漫长的数据长征。老师傅只能前赴后继,用一行行代码代替脚步,去丈量大地。

但好在,代码是数字世界的砖石,它一旦创生,就再也不会消逝,我们每向前走一步,就离终点更近一步。

抖音里会动的爱心怎么弄的,你在抖音上点的“小红心”到底去哪了(66)

延伸阅读:

《你在被窝里刷手机岁月静好,一个“神秘引擎”却在远方和时间赛跑》

《我遇到一群想把机器人训练成艺术家的人》

《薯条大份更划算??狂买KFC/麦当劳/汉堡王后,我整理出了终极省钱攻略…》

再自我介绍一下吧。我叫史中,是一个倾心故事的科技记者。我的日常是和各路大神聊天。如果想和我做朋友,可以转角遇见微信公众号:浅黑科技。

,
图文教程
相关文章
热门专题
推荐软件
奇热小说
奇热小说
下载
QQ2019手机版
QQ2019手机版
下载
王者荣耀
王者荣耀
下载
百度浏览器迷你版
百度浏览器迷你版
下载
2345浏览器手机版
2345浏览器手机版
下载
网易邮箱
网易邮箱
下载
爱奇艺
爱奇艺
下载
网易云音乐
网易云音乐
下载
WPSOffice
WPSOffice
下载
优酷
优酷
下载
谷歌浏览器(Chrome)
谷歌浏览器(Chrome)
下载
迅雷看看播放器
迅雷看看播放器
下载
UC浏览器
UC浏览器
下载
QQ音乐
QQ音乐
下载
阿里旺旺买家版v9.12.10C官方版
阿里旺旺买家版v9.12.10C官方版
下载
360安全卫士v12.1官方版
360安全卫士v12.1官方版
下载
猜你喜欢
极道市长
极道市长
下载
青丘赋
青丘赋
下载
悟饭趣玩app
悟饭趣玩app
下载
饥荒海难三围状态显示mod
饥荒海难三围状态显示mod
下载
奇艺通讯
奇艺通讯
下载
天天链讯
天天链讯
下载
街机魔法学院手机版
街机魔法学院手机版
下载
邻檬圈
邻檬圈
下载
HeroStrike3D
HeroStrike3D
下载
萌三国无双志
萌三国无双志
下载
DiscountCalculatorMac版V1.0.0
DiscountCalculatorMac版V1.0.0
下载
昂达n78c主板驱动Forxp
昂达n78c主板驱动Forxp
下载
批量正则文本替换工具(MultiRE)1.0绿色版
批量正则文本替换工具(MultiRE)1.0绿色版
下载
微财讯app
微财讯app
下载
百分浏览器v4.1.7.182官方版(32位/64位)
百分浏览器v4.1.7.182官方版(32位/64位)
下载
水墨修真
水墨修真
下载