使用HLS的内容转向机制提高全球流媒体服务可用性

2021-07-29 15:54:43 浏览数 (1)

本文来自WWDC21的演讲Improve global streaming availability with HLS Content Steering,演讲人为 HLS 流媒体团队的工程师Zheng Naiwei,演讲主要介绍了苹果公司为了提高全球性流媒体服务的可用性而提出的内容转向( Content Steering)机制。

今天的网络连接是在全球性的,流媒体提供商在世界各地提供他们的内容。然而,在全球范围内交付内容带来了行业必须解决的大量挑战,苹果公司的 HLS 流媒体团队,也认识到这些具有挑战性的问题,并不断努力提供解决方案。

本次演讲中演讲者关注了可用性问题具体为网络拥塞缓解和错误恢复。假设亚洲有一家受欢迎的流媒体提供商在以下三个国家部署了 CDN 基础设施:中国、日本和新加坡,在完美工作状态下,中国的CDN服务器为中国用户服务,日本的 CDN 服务器为日本用户服务,并且这两个 CDN 网络的性能都能够满足现有的需求。一段时间后,假设中国 CDN 服务器使用的用户数大幅增加,以至于 CDN 网络变得过载。使用现有的 HLS 技术很难完全解决这类网络拥塞的问题,因为即使我们可以将新用户分配到不同的 CDN,但是很难使得现有客户端去使用不同的 CDN 服务网络,从而现有用户流量依旧会使 CDN 过载。借助苹果公司新提出的 HLS 内容转向机制,内容提供商可以通过通过部署内容转向服务器来解决此问题,内容转向服务器会与所有的 HLS 客户端建立侧通道,以便将最新的 CDN 策略应用到客户端上,例如可以用这样的方式更新中国 30% 客户端的CDN选取策略以切换到日本的 CDN 网络,这30%的客户端在接受更新策略之后将其网络流量重定向到日本 CDN 网络,从而中国 CDN 中的网络拥塞得到缓解。

网络拥塞只是众多可用性问题之一,当网络中断时会发生什么?假设从日本用户到日本 CDN 的网络路径经历了区域中断,使用苹果的 HLS 技术,内容提供商可以在主播放列表中列出后备变体流,因此客户端可以尝试遍历列表,直到它选取到一个有效的 CDN,这种方法简单但并不有效,因为内容提供商无法实时更改主播放列表中列出的 CDN 的优先级。但是,在转向服务器的帮助下,客户端将近乎实时地获得最新的 CDN 优先级。在网络中断之前,日本的客户端会定期从转向服务器获取 CDN 优先级列表,假设在最新一次的更新中,日本的客户收到以下 CDN 优先级列表,其中日本 CDN 的优先级最高,其次是新加坡,然后是中国,当发生网络中断时,日本 CDN 的优先级会下降,客户端将移至优先级列表中的下一个 CDN,在本例中为新加坡的 CDN,并重定向其网络流量,从而日本的用户将能够不间断地继续观看他们的节目。

HLS的内容转向机制十分容易被理解,演讲者也展示了这一个机制是如何实现的。通过不同的 CDN URL 可以指向不同的CDN服务网络,没有引入内容转向机制之前,各个URL之间的优先级是无法被内容提供者所改变的,在内容转向机制下,每个变体流的URL多出了一个PATHWAY-ID 属性,该属性将变体流分组到不同的路径中,其中每个路径通常对应一个 CDN,当客户端选取了一个路径时,只有该路径对应的流才有资格被选取。在使用流媒体服务期间,客户端会向内容转向服务器定期发出Steering Manifest请求,该请求实际上是一个HTTP GET请求,转向服务器将会针对当前的客户端的情况,向客户端发送一个转向清单即CDN服务的优先级,客户端在收到来自转向服务器的转向清单后,将依据转向清单内容进行评估,以确定是否切换到不同的路径。此外在Steering Manifest请求的返回内容中还有一个 TTL 字段,该字段表示多少时间内安排下一个 Steering Manifest 请求,转向服务器向每个客户端的 TTL 值注入一些随机性可以服务器负载不至于过大。可以看到HLS内容转向机制的实现方式较为简单,这也使得该机制下的HLS服务可以较好地向后兼容。

0 人点赞