细说双11直播背后的压测保障技术(代码片段)

阿里云云栖号 阿里云云栖号     2023-02-03     464

关键词:

简介: 阿里云 PTS 站在双 11 巨人的肩膀上,是阿里全链路压测的延伸。PTS 通过伸缩弹性,轻松发起用户百万级别的流量,免去机器、人力成本;PTS 对流量的控制,能够实时脉冲,精准控制; 是应对视频直播快速攀升的流量脉冲的优秀方案。

作者:子矜

“今年 1 月到现在,淘宝直播的用户超过了 5 亿,到 8 月份流量也增长了 59%,在最核心的商家 GMV 上增长了 55%。双 11 是从 10 月 20 日晚开始的,我们希望淘宝直播作为主场去承接这件事情。”日前,淘宝事业群直播事业部负责人程道放在接受 21 世纪经济报道记者采访时透露,过去一年的直播可谓热闹,今年会更加专业化。

如此大的用户体量下,直播类应用给后端服务带来了一些什么不一样的挑战呢?我们今天来介绍一些直播的架构,以及针对这个架构,给我们的应用架构带来的挑战。

直播的架构

我们通常看到的有下面几种直播:

1. 单人直播,例如淘宝直播,通常伴随着秒杀,弹幕,送火箭等业务逻辑;

2. 多人同时直播,例如连麦,会议;

3. 录播,对于部分直播场景如培训、会议等,需要将现场直播视频保存以进行传播、留存等使用,有对直播进行录制的需求。这种往往对实时性要求不高。

而当用户观看直播时,如果服务接入了 CDN,若接入 CDN,播放端选择就近的 CDN 节点进行拉流播放,此时拉流压力在 CDN;若未接入 CDN,播放端从直播源站进行拉流。

下图是一个比较常见的视频流的架构和两条数据走向:

1. 视频流推拉逻辑,如蓝色线所示

2. 常规的业务逻辑,如黄色线所示

可以看到有四个主要模块:

1. 推流端:主要的作用在于采集主播的音视频数据推送到流媒体服务端;

2. 流媒体服务端:主要作用在于把推流端传递过来的数据转换成指定格式,同时推送到播放端方便不同播放端用户观看,当然目前云产商也流媒体服务端的一整套解决方案;

3. 业务服务端:主要处理一些常见的业务逻辑,如秒杀,弹幕等等;

4. 播放端:播放端简而言之就是拉取音视频进行播放,把相应的内容呈现给用户。

四个关键的模块的协议其实就是流媒体传输协议。大部分直播的结构都采取上图的格式,较大的区别是是否引入 CDN。一般来说,我们建议客户引入 CDN 来减少直播流量对服务器的冲击。四个模块之间的协议并不着重强调一致性。

接下来,我们沿着这个架构来讨论一下,在这其中比较脆弱的风险有哪些,以及我们如何提早通过压测来排查这些风险点。

直播中的挑战

挑战一:视频流给流媒体服务端的压力

在这个推拉的逻辑中,由于涉及视频的流量较大,经过的路线较长,对流媒体服务器都会造成冲击;通场的做法是引入 CDN,当用户开始收看视频的时候,会先就近去 CDN 拉取流,如果这个时候视频内容还没有缓存在 CDN 的时候,CDN 就回源到流媒体服务端。

但是,风险就存在在瞬间大量用户同时收看 CDN,CDN 大量回源的时候;这种脉冲流量,会给流服务端带来不可预计的效果。

我们通常通过压测来提前验证链路的有效性,甚至可以通过压测,提前把视频在 CDN 预热然而,传统的 HTTP 请求协议是无法支持这种场景的,因为:

1. 即使开源软件 srs_bench,以及 JMeter 都提供了一些插件来使用。但是这些开源软件需要用户对视频协议有比较深入的理解,使用门槛会略微偏高;

2. 视频压测本身对带宽的要求非常高,这就意味压测机器成本比较高;

3. 视频压测需要考虑到地域对传输质量的影响。

针对以上问题,PTS 加入了 RTMP/HLS 协议,并且结合压测场景做了抽象,让用户可以界面化的使用不同协议的压测。

除此以外,PTS 还提供丰富的编排模式,可以方便自如的对场景进行编排;更重要的是,还可以利用 PTS 全国定制的模式,模拟客户从不同的地方发起请求,更快捷的探测出问题。 

挑战二:低延时的互动协议

和传统的大促不一样,直播往往追求和线下客户的互动。例如弹幕,评论,聊天,秒杀等等。主持人聊的 热火朝天,用户毫无反应,这就是一次失败的直播了。而普通的 HTTP 请求无法满足对时效的需求;因此,通常这些功能用WebSocket来实现的。因为 HTTP 是一种无状态的、无连接的协议,WebSocket 则通过服务端/客户端建立长链,来保证消息的实时性、以及降低性能开销。

每建立一个 WebSocket 连接时,在握手阶段都会发起 HTTP 请求。通过 HTTP 协议协定好 WebSocket 支持的版本号、协议的字版本号、原始地址,主机地址等内容给服务端。报文的关键地方在于 Upgrade 的首部,用于告诉服务端把当前的 HTTP 请求升级到 WebSocket 协议,如果服务端支持,则返回的状态码必须是 101:

HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept:xxxxxxxxxxxxxxxxxxxx

有了上述返回,Websocket 连接才建立成功,接下来就是完全按照 Websocket 协议进行了数据传输了。

针对 WebSocket 的通信过程,JMeter 提供了插件来模拟整个过程,但是它也需要用户理解协议的玩法,使用起来相对晦涩。PTS 通过抽象业务含义,用户通过场景配置和施压配置,仅需要配置压测 url 等基本配置、出参设置、检查点设置等几个简单参数,就能够把复杂协议玩起来。

除了在直播中使用,Websocket 也广泛应用于在线游戏、股票基金、体育实况更新、聊天室、弹幕、在线教育等实时性要求非常高的场景。

挑战三: 高并发的脉冲流量

不同于普通应用,直播类应用的使用时间段非常的集中,因此在这短短几小时之间,会涌入大量的用户,一次大 V 的直播通常就会造成百万级的用户登录,故直播系统对应脉冲流量的能力要求也变得很高。而且在抢货的时候,和传统的秒杀不同,往往是主播进行到某个时间突然发起秒杀的--这个时间往往无法非常精确--同时脉冲流量对系统的要求极高,很多平时不会出现的问题,例如懒加载,jit 预热,冷热数据切换等传统大流量不会出现的问题,都会出现。

这两点特性,要求压测工具能够瞬间发起大流量。这除了需要较多的机器引擎,还需要对流量的有精准控制--满足流量快速攀升的诉求。

而这两点,正是阿里云 PTS 的强项。阿里云 PTS 站在双 11 巨人的肩膀上,是阿里全链路压测的延伸。PTS 通过伸缩弹性,轻松发起用户百万级别的流量,免去机器、人力成本;PTS 对流量的控制,能够实时脉冲,精准控制; 是应对视频直播快速攀升的流量脉冲的优秀方案。

最后

PTS 针对视频、直播行业的变化,对 PTS 支持的协议做了全面升级。它不光支持传统的 HTTP 请求,更是引入了 HTTP 2、流媒体、MQTT 等多种协议,让用户可以 Test Anywhere!

原文链接
本文为阿里云原创内容,未经允许不得转载。 

技术文章|系统稳定性保障核武器——全链路压测

 为什么要做全链路压测?对阿里巴巴而言,每年最重要的一天莫过于双11。这是因为在双11的零点,系统会遭遇史无前例的巨大洪峰流量冲击,保证双11当天系统的稳定性对高可用团队来说是巨大的挑战。在这个挑战中会有很... 查看详情

字节跳动双11电商直播技术大揭秘

点击上方“LiveVideoStack”关注我们近几年来,电商直播已经成为了双11促销活动中的重要形式。作为国内电商直播中的佼佼者,双11刚过,抖音便公布了“抖音双11好物节数据报告”。从报告来看,10月27日至11月11日... 查看详情

日新进用户200w+,解密《龙之谷》手游背后的压测故事

2017年3月,腾讯正式于全平台上线了《龙之谷》手游,次日冲到了AppStore畅销排行第二的位置,并维持到了现在。上线当日百度指数超过40万,微信游戏平台数据显示预约数780多万,而据内部人员透露当日新进用户200W+,这就是《... 查看详情

全链路压测(12):生产压测必不可少的环节

...叫做叫做生产全链路压测,那肯定少不了在线上生产环境的压测实践。这篇文章,为大家介绍下在生产环境都是如何开展压测的,以及压测过程要注意哪些事项。 在生产环境开展全链路压测,相对于测试环境来说风险和成本... 查看详情

日新进用户200w+,解密《龙之谷》手游背后的压测故事

2017年3月,腾讯正式于全平台上线了《龙之谷》手游,次日冲到了AppStore畅销排行第二的位置,并维持到了现在。上线当日百度指数超过40万,微信游戏平台数据显示预约数780多万,而据内部人员透露当日新进用户200W+,这就是《... 查看详情

推荐一款es轻量级的压测工具(代码片段)

...多参数,主要是读写的速度。有一点,这是基准的压测,不能很好的模拟线上的同事读写某个比例的情况。二loadgen相对于esrally 查看详情

独家|2021双11背后的数据库硬核科技

...阿里云数据库团队再次递交了诚意满满的年度答卷在双11背后,凝聚着无数同学努力的身影为所有奋战在前线的数据库小伙伴们打Call!除了保障稳定顺滑的基本盘今年,阿里云数据库全面云原生化持续通过技术创新赋... 查看详情

双11是结束了,但这场没有硝烟的“战争”却没有结束(代码片段)

...术、运营还有产品同学上上下下共同努力的成果。当然,背后也有网易安全部和网易云易盾的同学参与进来,做各种安全保障工作。生活中到处都有黄牛,网络上也同样存在着黄牛,他们被称为羊毛党。这群人对商家的促销和 查看详情

开发的压测文档能有多小心谨慎~(代码片段)

压测文档一、测试内容二、测试方法三、测试目标四、测试环境五、性能测试结果与分析1、同时发送测试性能截图:2、分开发送请求测试:性能总览:第一组对比测试:线程组配置:旧列表压测性能:聚... 查看详情

mysql:8在数据库的压测过程中,观察机器性能(代码片段)

...f0c;知道发现数据库的QPS和TPS上不去了。注意:在不停的压测获取更高的QPS和TPS时,还要同步对机器性能表 查看详情

阿昌教你在数据库的压测过程中,如何360度无死角观察机器性能(代码片段)

阿昌教你数据库的压测过程中,如何360度无死角观察机器性能一、前言之前的文章,我们使用sysbench这个工具非常方便的去对数据库进行压测;那我们如果在压测的同时,查看直接机子的性能情况呢???二... 查看详情

阿里巴巴2016双11背后的技术(不一样的技术创新)

...里技术的大阅兵和创新能力的集中检阅。2016年的“双11”背后,更是蕴藏了异常丰富的技术实践与突破。 历经1个月的编写,最终27篇精华技术文章入册《不一样的技术创新-阿里巴巴2016双11背后的技术》(以下简称《不一样... 查看详情

jmeter-----随机生成手机号后8位并去重,来进行注册手机号的压测(代码片段)

  要求:对注册接口进行100000次压测,手机号已126开头,后面的8位数不限  前言:在进行测试中,我们需要对注册接口进行压测100000次,那么就要求手机号码每次填写的不一致,否则手机号使用一次后会出现该手机号码已... 查看详情

双11个性化推荐背后,阿里云“舜天”如何应对百亿次挑战?

摘要:2018天猫双11在技术世界,创下不少新记录,其中有一个记录是11日当天阿里全平台共为用户做个性化推荐453亿次,这些推荐的图片长度加起来可以绕地球70圈。当你在天猫/手淘上买买买的时,图片会以不同格式或分辨率来... 查看详情

阿里云异构计算产品是如何保障双11业务的

...会,人脸识别,图片搜索,字符识别,语音识别,8K视频直播,智能推荐,语音助手等最先进的技术手段被广泛使用,为大促的各个环节保驾护航。作为IT基础设施的基石,阿里云ECS为阿里集团双十一业务提供了强有力的计算保... 查看详情

压测中的精准测试探讨(代码片段)

...需要对哪些功能模块进行压测?对于每一个功能模块的压测,如何把控压测用例的颗粒度?评估的压测范围是不是太多了?例如好友模块里的“拉黑好友”,也需要进行压测吗?这个功能会有很多人用吗&#x... 查看详情

最佳实践当前疫情下火爆的直播应用,你了解背后的技术架构吗?(代码片段)

这场疫情让线下零售降至冰点,但是却带火了直播应用。直播电商、直播教育等各类直播应用可谓赢得了历史性的机会,很多大众开始接受并认可这种新型应用的便利和价值,个人感觉随着5G的普及,『直播+垂... 查看详情

最佳实践当前疫情下火爆的直播应用,你了解背后的技术架构吗?(代码片段)

这场疫情让线下零售降至冰点,但是却带火了直播应用。直播电商、直播教育等各类直播应用可谓赢得了历史性的机会,很多大众开始接受并认可这种新型应用的便利和价值,个人感觉随着5G的普及,『直播+垂... 查看详情