谢邀。作为淘宝直播背后的官方技术团队本队,我们来解释一波。
(点击头像关注我们账号,别错过更多阿里工程师一线技术干货)
——————————————————————————————————————
初看这个题目,看似问得很不专业。
直播间人数多少又不会影响买家的网络和服务,怎么会影响抢货呢?但仔细一想,这里面还真有很多细节。
直播购物会用到视频传输、消息信令、交易系统,这里面每一个环节,都需要各个系统能支撑大规模用户才行,并且保证这样大规模用户的购物体验。
作为淘宝&淘宝直播背后的技术官方,我们来唠一唠这背后这三块儿是个啥原理。
首先,大家都知道,我们上网,会经过运营商,例如电信、移动、联通。那运营商网络有没有可能存在容量不足,导致看直播或下单失败?
理论上运营商会根据当地网民使用情况,预留足够多的网络带宽。但也会出现一些特殊情况,例如城中村里共享一条宽带,造成大量设备网络容易拥塞。有分析数据表明,目前全国城中村数量大概有5万个。当这些地区有非常集中的大规模用户来直播购物时,会影响到同网络的其他人。
其次,从平台角度看,直播通常是通过CDN(Content Delivery Network,内容分发网络)传播的,理论人数上限很高,一般不会触达到这个上限。像阿里云、腾讯云对外宣称,CDN总容量超过100T。100T是个什么概念?每秒能够传输10的14次方个二进制位。
以薇娅的直播为例,薇娅的直播是720P(像素量为1280×720),经过编解码后,在网络上传输的带宽估计需要1~2M(1M为每秒需要传输10的6次方个二进制位)。这么一算,阿里云或腾讯云宣称的CDN容量是可以支持5000万~1亿个观众在线的。
但是,阿里云和腾讯云宣称的CDN带宽也是从运营商购买来的,在不需要这么多带宽时,不用购买这么多的带宽储备。因此当有带宽突发时,就需要提前向运营商采购。
例如在LOL各个赛季比赛时、双十一大促时等情况,需要的带宽突然大幅增加,都需要提前向运营商采购带宽。现在的公司,要预测个数据不是难事。平时直播购物没有什么突发,留一定余量就可以了。大促一般都会提前预测好在线人数,提前向运营商采购。
所以我们基本感知不到人数多少对直播购物产生的影响。
题主提的问题是薇娅直播,那应该讲的是我们淘宝直播平台。目前淘宝直播已经不是使用传统的直播CDN传输了,是基于RTC(Real-time Communications,实时通信)传输的超低延时直播。
大家可以试试,淘宝直播的延时确实很低,可以到1秒左右(这个会因为网络环境的不同而有差异)。你和主播的问答互动基本是即时性的,而其他很多直播平台延时都是在6秒以上。
如果你经常看淘宝直播,可能会对李佳琦薇娅看“321上链接”的声音很熟悉。看似简单的一个操作,如果上链接时间跟观众听到的时间差异很大,体验就不好了。“秒杀”的场景,对音视频传输的延时要求很高。
那基于RTC的直播是否有人数上限呢?
RTC 技术以往只用在通话或会议上,常见技术架构有Mesh、SFU、MCU,我们看看这些架构是怎么做的。
Mesh方案是多个终端两两连接,形成一个全连接网络(Full Connected Network,任意两点间都有连接的网络)。由于每一个终端都需要连接多个终端,需要发送或接收多份数据,导致这种架构的在线人数非常有限。如果用于直播,例如薇娅的上行带宽有100M,也最多只能支持50~100个人在线。
SFU(Selective Forwarding Unit,纯透传的音视频路由器)方案由服务器纯透传的中转音视频数据,可以在会议中实现只发送一份数据,接收多路数据。SFU方案的服务器通常放在DC(Data Center,数据中心),数据中心的外网带宽规模通常比CDN小很多,带宽也贵很多,导致规模不能做到很大。
MCU(Multipoint Conferencing Unit)方案在SFU方案基础之上,实现了服务器合流,只需要发送和接收一路数据即可。MCU需要大量的服务器计算资源,但这里限制直播在线规模的原因,跟SFU一样,都是因为部署在DC里面。以往RTC服务场景中,人数比较多的是教育大班课,估计也就10万人的级别,很难支持更高的在线。
然而淘宝直播另辟蹊径,是将RTC融入到CDN里面,看起来是在CDN里面实现了SFU能力,因此理论上,上限跟CDN一致。
淘宝直播通过自研GRTN(Global Realtime Transport Network,全球实时传输网络),将SFU放到CDN里面的每一个节点,实现了从主播推流到观众观看全链路都是用RTC协议传输,将基于RTC的直播变成CDN标准服务。同时在CDN调度算法上也做了颠覆式改进。以往的CDN调度是树状结构,从CDN中心机房往下,一级一级传输,一般是标准的3层结构。改进后的结构是网状结构,每次请求都是动态分配路径,如果跟主播在同地域同运营商,可以在主播同一个节点上回源,如果跨运营商或跨地,则通过双机中转,如果规模很大或距离非常远,则有可能通过更多层级来分发。通过去中心化改造后,在成本、质量上都会更好。
直播流媒体传输占了整个服务最大的网络带宽,但建立音视频传输链接,必先协商播放地址,这个协商过程就需要信令服务。
信令跟在线的人数关系不大,跟同时进出的人关系比较大。
因为一般进出才会需要跟信令服务器打交道。我不清楚薇娅房间每秒的进出量有多少,我们假定题主说的1000万人在1分钟内进入,假设每次进入需要请求3次服务器,即服务器需要处理1000万/60秒*3=50万qps(Query Per Second)。这些请求可能有大有小,我们按比较大的来估,例如每个请求有1KB(1千字节,1字节含8个二进制位)大小(网络传输有个不成文的规定,当网络上发送的包超过1.5KB,有可能被一些路由器丢弃掉,考虑到1.5KB还包含包头,所以一般的应用程序会把MTU(Maximum Transmission Unit,最大传输单元)设置为1KB或1.2KB,超过MTU的包会被拆分发送)。所以服务器每秒要处理的带宽为50万*1KB*8=4Gb。
现在很多服务器都是千兆网卡或万兆网卡。千兆网卡表示网络吞吐量为每秒处理1000Mb的网络数据,即1Gb,所以只需要4台机器满载就可以提供服务。万兆网卡表示网络吞吐量为10Gb,一台机器足以。考虑到机器不能跑满,预留50%安全水位,8台千兆网卡或1台万兆网卡足以。
当然,这里只评估了薇娅一个主播,淘宝直播里面还有很多主播,假设薇娅的在线是淘宝直播的1%(薇娅双十一成交53亿,淘宝直播双十一成交4982亿),并且假设刚刚好其他主播的粉丝也都是这一分钟进来,那么服务器需要处理的请求数需要乘上100倍。
所以800台千兆网卡或100台万兆网卡能够满足需求。这点机器对大公司来说,就是九牛一毛。但我们评估都是按最坏打算来估的,例如实际的请求可能只有几十字节,从概率上讲,全网的粉丝不会这么巧都在这段时间进入,在正常情况下不需要这么多机器。
最后是交易,在这个场景下大家关注的可能更多的是下单和能不能成功支付,淘系内部的对交易的定义实际上包含了购物车,下单,支付,订单管理,逆向等贯穿了售前售后,包含整个商品跟消费者产生连接的一个完整的生命周期。
简单就下单来讲,同学们看到是点击一下,提交订单,实际上后面系统在背后做的事情可多了,要去查一下商品信息,查一下库存是否还充足呀,查一下优惠能不能被使用呀,查一下物流是否能配送呀,交易系统就像一个信息中转站,所有信息都要从我这里过,同时她也是一个挑战巨大的分布式一致性体系,我们既要保证分布式系统间的数据是正确无误一致的,同时也要保证消费者在下单环节的顺滑体验,像题主所说的卡住这种情况绝对是不能接受的;拒不完全统计,一次下单依赖的下游业务多达数十个,这数十个被依赖的业务大量的使用集中式和本地式缓存来减轻交易应用对下游查询的压力,最终日常情况下大家进入下单页的服务端平均RT会稳定在在100ms左右,在高峰期,比如秒杀,大促零点的情况下,我们还有很多特殊的性能优化的措施和预案来保障交易的顺滑。当然,下游依赖多,必然会带来分布式一致性问题,大家都知道分布式调用都有失败率,比如今天,下单的时候库存扣减了,但是优惠突然失效了的情况,还能不能继续支付呀?扣减的库存怎么办呀?交易体系有一套完整的保障措施来对这些异常情况做一些合理的处理。
对于直播场景的交易来说,还是有挺大区别的,在直播间主播卖货一般有自己的节奏,也时常放出一些高性价比的商品来吸引人气、拉动气氛,往往这种商品一放出,整个直播间的用户都在抢,所以交易系统会面临一波波的交易峰值,并且这些交易峰值很有爆发力,通常会集中在某个/几个单品上,大家关注双11的技术同学会知道,这两年双11 零点交易可以支撑到50-60万笔/s的交易创建能力,但是这50万是分布在全网几十上百万热销的商品上的,放在前些年的话,针对这种类似秒杀性质的场景我们可能都要用专门的交易产品和简化链路来支撑的,但是淘系电商技术演进到现在,现在我们已经能在业务无影响的情况下很好的支撑这类交易的瞬时爆发。
PS:
最后的最后,题主有个数据,薇娅直播间几千万人在线,这个描述其实是不准确的。
淘宝直播上显示的数字叫PV(page view,页面浏览量),是单场直播历史观看数的总和,不是同时在线的概念。我们通常讲观看在线是指同一个时刻正在观看的人的数量。
————————————————————————————————————————
阿里巴巴集团淘系技术部官方账号。淘系技术部是阿里巴巴新零售技术的王牌军,支撑淘宝、天猫核心电商以及淘宝直播、闲鱼、躺平、阿里汽车、阿里房产等创新业务,服务9亿用户,赋能各行业1000万商家。我们打造了全球领先的线上新零售技术平台,并作为核心技术团队保障了11次双十一购物狂欢节的成功。详情可查看我们官网:阿里巴巴淘系技术部官方网站
点击下方主页关注我们,你将收获更多来自阿里一线工程师的技术实战技巧&成长经历心得。另,不定期更新最新岗位招聘信息和简历内推通道,欢迎各位以最短路径加入我们。