乐趣区

关于devops:干货分享细说双-11-直播背后的压测保障技术

简介:阿里云 PTS 站在双 11 伟人的肩膀上,是阿里全链路压测的延长。PTS 通过伸缩弹性,轻松发动用户百万级别的流量,免去机器、人力老本;PTS 对流量的管制,可能实时脉冲,精准管制;是应答视频直播疾速攀升的流量脉冲的优良计划。

作者:子矜

“往年 1 月到当初,淘宝直播的用户超过了 5 亿,到 8 月份流量也增长了 59%,在最外围的商家 GMV 上增长了 55%。双 11 是从 10 月 20 日晚开始的,咱们心愿淘宝直播作为主场去承接这件事件。”日前,淘宝事业群直播事业部负责人程道放在承受 21 世纪经济报道记者采访时走漏,过来一年的直播堪称冷落,往年会更加专业化。

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

直播的架构

咱们通常看到的有上面几种直播:

  1. 单人直播,例如淘宝直播, 通常随同着秒杀,弹幕,送火箭等业务逻辑;
  1. 多人同时直播,例如连麦,会议;
  1. 录播,对于局部直播场景如培训、会议等,须要将现场直播视频保留以进行流传、留存等应用,有对直播进行录制的需要。这种往往对实时性要求不高。

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

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

  1. 视频流推拉逻辑,如蓝色线所示
  1. 惯例的业务逻辑,如黄色线所示

能够看到有四个次要模块:

  1. 推流端:次要的作用在于采集主播的音视频数据推送到流媒体服务端;
  1. 流媒体服务端:次要作用在于把推流端传递过去的数据转换成指定格局,同时推送到播放端不便不同播放端用户观看,当然目前云产商也流媒体服务端的一整套解决方案;
  1. 业务服务端:次要解决一些常见的业务逻辑,如秒杀,弹幕等等;
  1. 播放端:播放端简而言之就是拉取音视频进行播放,把相应的内容出现给用户。

四个要害的模块的协定其实就是流媒体传输协定。大部分直播的构造都采取上图的格局,较大的区别是是否引入 CDN。一般来说,咱们倡议客户引入 CDN 来缩小直播流量对服务器的冲击。四个模块之间的协定并不着重强调一致性。

接下来,咱们沿着这个架构来讨论一下,在这其中比拟软弱的危险有哪些,以及咱们如何提前通过压测来排查这些危险点。

直播中的挑战

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

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

然而,危险就存在在霎时大量用户同时收看 CDN,CDN 大量回源的时候;这种脉冲流量,会给流服务端带来不可预计的成果。

咱们通常通过压测来提前验证链路的有效性,甚至能够通过压测,提前把视频在 CDN 预热。然而,传统的 HTTP 申请协定是无奈反对这种场景的,因为:

  1. 即便开源软件 srs_bench,以及 JMeter 都提供了一些插件来应用。然而这些开源软件须要用户对视频协定有比拟深刻的了解,应用门槛会稍微偏高;
  1. 视频压测自身对带宽的要求十分高,这就象征压测机器老本比拟高;
  1. 视频压测须要思考到地区对传输品质的影响。

针对以上问题,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!

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

退出移动版