节选自:得到头条 | 207期

先来看今天的第一条。本月中旬,京东发布了2021年年报。报告显示,京东在2021年保持了高增长,营业收入为9516亿元,同比增长27.6%。不过,京东开拓的特价电商平台“京喜”等新业务亏损超过百亿元,导致京东在2021年全年出现36亿元小幅亏损。再来看用户数据。2021年京东的活跃购买用户数增长了将近1亿人,其中70%来自下沉市场。到2021年年底,京东活跃购买用户数达到5.7亿,相当于40%的中国人都经常在京东上买东西。

消息就是这样,来看看能学到什么知识。

刚才说的5.7亿活跃购买用户数,是截至2021年12月31日的数据,不过到今天,这个数字肯定又出现了大幅增长。你肯定还记得,今年除夕看春晚的一大乐趣,就是全民上京东抢红包薅羊毛。据说京东在今年春晚一共发出了15亿元红包,是历年来春晚红包的最大手笔。春晚期间,抢红包的累计互动次数达到了691亿次,不但带来了大量新增用户,也带动京东整个春节期间的成交额同比增长50%以上。

不过,我们这些围观群众不知道的是,在我们冲进京东App忙着抢红包的时候,京东的技术团体经历了一次惊心动魄的大考。我之前读到著名科技记者史中的一篇报道,详细讲述了京东技术团队的“春晚战事”,非常精彩,我挑其中的重点给你说说。

你知道,今年春晚是在1月31日,而京东是什么时候拿到春晚红包赞助权的呢?1月3日。也就是说,从领到任务,到最后上战场,满打满算只有27天。往年其他大厂发红包,像腾讯阿里,都是提前三个月开始准备这场大战,最短的百度那年也有一个多月时间,留给京东的时间是史上最短的。所有部门瞬间进入紧急动员状态,这其中承受压力最大的,是负责搞定超大云计算力的“京东云”团队。

他们估算了一个数:春晚当天会有多少人来抢红包?答案是,最高可能有6亿。6亿是什么概念呢?前面说了,京东一年的活跃用户数是5.7亿,相当于这些人会在春晚4个小时之内全部涌进App。这个流量也相当于京东“618购物节”当天流量的6倍。

别的大厂是怎么扛过这一波超级流量的呢?办法说来也简单,就是买服务器。比如,百度在2019年春晚发红包,就临时紧急采购了5万台服务器,并创造了8小时安装完1万台服务器的世界纪录。所以,当京东云接到任务后,经历过春晚发红包的大厂友商告诉他们:当务之急,就是去把市面上有的服务器赶紧抢购回来,“有一台算一台,这东西能救命。”

据京东云团队估算,他们至少需要新增1.5万台服务器,才能勉强应对。然而没想到的是,他们给8家供应商挨个打了一圈电话,得到的回答一模一样:现在马上春节放假,而且“芯片荒”一直没解决,你掏多少钱我们也没货。

这下,整个团队彻底蒙了。当然,只是短暂地蒙了一会儿,接着就有技术大牛拿出了解决方案,分两步走:一是“极限腾挪”。假设,京东一共有5万台服务器,其中2.5万台用来处理前台的用户浏览、购物,2.5万台用来处理后台的会计、盘点等业务。当除夕夜几亿人涌进来领红包的时候,就从前台和后台共抽调1.5万台服务器,用来处理发红包;当抢红包高峰过去,再把这1.5万台服务器的算力还给前台和后台。

听起来很简单,对不对?这里的关键是,1.5万台服务器得借用多久?春晚四个半小时,是不是就借用四个半小时呢?不行。这么长的时间里,如果前台卖货和后台会计少了这么多算力,系统可能同样得崩掉。你抢到红包想顺便去京东下个单,结果发现下不了,那京东花这么大成本做的这波营销,效果就要大打折扣了。

最后的方案是“七借七还”,春晚发七次红包,就在每次抢红包洪峰的几分钟内借算力,然后马上还回去,下次发红包时再借。这就要求,1.5万台服务器,共计100万颗CPU核心,在两分钟之内切换工作内容,而且每颗CPU核心上的计算要平稳顺滑,不能抖动,技术上非常难。好在,京东云之前研发的“云舰”系统,刚好可以满足这个要求。

不过,光是这样,还是无法应对春晚当晚691亿次的抢红包互动。接下来还有第二招,就是“提前预埋”。在我们抢红包的时候,服务器返给我们的其实是两类数据:一类是提前设计好的静态数据,包括引导栏、商品图片等等,一类是必须等你点抢红包按钮之后,实时计算的动态数据,也就是你抢到的具体金额。

提前预埋,就是把可以提前做好的静态数据,事先传送到用户手机上的京东App里,这样在当晚抢红包的高峰时,服务器只需要传输很少的动态数据就可以了。 不过这样做的前提是,用户必须在春晚开始之前,打开京东App做一次系统升级。为此,京东可谓使出了洪荒之力,在春节前推出各种促销优惠活动,就为了让用户提前打开一次。

但就算是这样,也至少还有30%的用户,是在当晚抢红包的时候才现打开App。对这部分用户,怎么办?京东去买了很多CDN资源,也就是遍布全国各地的小机房节点,专门用来给附近的用户传送图片、视频等大文件。春晚当晚,就由这些机房节点向用户传送红包静态数据。这也意味着,所有资源必须提前一周部署到CDN节点上,不允许临时更改。

做完这两步,京东还做了很多应急预案:比如,万一出现网络严重拥堵,那么就“丢卒保帅”,次重要的业务,比如某些监控数据,就不要了。再比如,红包服务器集中的北京和廊坊两座机房之间如果高速网线突然断掉,要在一分钟之内就要找到新的绕行路线,重新连接。还有,京东和运营商沟通,请求他们绝对不要春节当晚在机房旁边施工,以防一铲子挖断网线。京东还给各家手机厂商沟通,给手机应用商店多准备一点资源,以防春晚当天人们冲进去下载京东App,让应用商店宕掉,等等。

你看,在我们顺畅抢红包背后,是一场艰苦而缜密的系统保卫战。史中在报道的最后说,京东用史上最“抠门”的方式完成了一次春晚发红包。而抠门的背后,是京东一直强调的“刀锋利润”:最低廉的成本,完成最极致最稳定的服务。