工程的博客

如何为流媒体视频服务构建服务质量分析解决方案

分享这篇文章

请按以下连结浏览及下载QoS笔记本本文将在下面讨论。

内容

流媒体视频服务质量的重要性

和传统付费电视一样继续停滞不前在美国,内容所有者已经接受了直接面向消费者(D2C)的订阅和广告支持的流媒体,以实现内容库的货币化。对于那些整个商业模式都围绕着生产优质内容,然后将其授权给分销商的公司来说,向拥有整个玻璃对玻璃体验的转变,需要新的能力,比如建立媒体供应链,将内容交付给消费者,支持各种设备和操作系统的应用程序,以及执行客户关系功能,如计费和客户服务。

由于大多数vMVPD(虚拟多频道视频节目分发器)和SVOD(流媒体视频点播)服务每月更新一次,订阅服务运营商需要每月/每周/每天向订阅者证明其价值(观看者离开AVOD(广告支持的视频点播)的障碍甚至更低——只需打开不同的应用程序或频道)。流媒体视频的总体质量问题(包括缓冲、延迟、像素化、抖动、丢包和黑屏)对业务有重大影响,无论是否增加用户流失视频参与度降低

当你开始使用流媒体时,你会发现有很多地方可能会出现中断,观众的体验可能会受到影响,无论是在源服务器上还是在云服务器上;在CDN级别或ISP级别或观众的家庭网络中传输;或者在玩家/客户问题的玩法层面。在nx10处什么会坏4并发流不同于在n x 10处中断的流5或者n x 106.没有任何预发布测试能够完全复制真实世界的用户,以及他们在频道浏览、点击进出应用、从不同设备同时登录等情况下,甚至将最冗余的系统推向极限的能力。由于电视的性质,在吸引最多观众的最重要、最引人注目的事件中,事情会出问题。如果你开始在社交媒体上收到投诉你怎么知道这些问题是某个用户独有的,还是地区性或全国性的问题?如果是全国性的,它是针对所有设备还是仅针对某些类型(例如,OEM可能在较旧的设备类型上更新了操作系统,最终导致与客户端的兼容性问题)?

当你考虑到用户数量、他们正在采取的操作数量以及体验中的传递数量(服务器到CDN到ISP到家庭网络到客户端)时,识别、补救和防止观看者体验质量问题成为一个大数据问题。服务质量(QoS)有助于理解这些数据流,这样您就可以了解哪里出了问题,以及为什么出了问题。最终,你可以进行预测分析,了解可能出现的问题以及如何在出现问题之前进行补救。

Databricks QoS解决方案概述

该解决方案的目的是为任何想要改善其QoS系统的流媒体视频平台提供核心。bob体育客户端下载它是基于AWS流媒体分析解决方案我们在AWS实验室的基础上添加了Databricks作为统一的数据分析平台,提供实时洞察和高级分析功能。bob体育客户端下载

通过使用数据库,流媒体平台可以bob体育客户端下载获得更快的洞察始终利用由健壮可靠的数据管道提供支持的最完整和最新的数据集,缩短上市时间对于通过使用支持管理端到端机器学习生命周期的协作环境加速数据科学的新功能,降低运营成本通过为数据工程和数据科学提供统一的平台,跨越软件开发的所有周期。bob体育客户端下载

视频QoS解决方案架构

考虑到像低延迟监控警报和高峰视频流量所需的高度可伸缩的基础设施这样的复杂性,最直接的架构选择是Delta架构——Lambda和Kappa架构等标准大数据架构在维护多种类型管道(流和批处理)所需的操作工作方面存在缺点,并且缺乏对统一的数据工程和数据科学方法的支持。

Delta架构是下一代范式,它使您组织中的所有类型的数据角色更高效:

  • 数据工程师能否以经济高效的方式持续开发数据管道,而不必在批处理和流处理之间做出选择
  • 数据分析师可以获得接近实时的洞察和更快的BI问题的答案
  • 数据科学家是否可以使用更可靠的数据集开发更好的机器学习模型,并支持时间旅行,以促进可重复的实验和报告

Delta流媒体视频QOS架构采用“多跳”方式进行数据管道

图1数据管道使用“多跳”方法的Delta体系结构

使用Delta架构编写数据管道遵循了具有多层“多跳”方法的最佳实践,我们逐步向数据添加结构:“青铜”表或摄入表通常是原生格式(JSON, CSV或txt)的原始数据集,“银”表表示为报告或数据科学准备的清理/转换的数据集,“金”表是最终的表示层。

对于纯流用例,在中间Delta表中物化dataframe的选项基本上只是延迟/ sla和成本之间的权衡(例如实时监控警报与基于新内容的推荐系统更新)。

流视频QOS架构仍然可以在Delta表中实现数据帧的物化

图2在Delta表中物化数据帧时仍然可以实现流结构

这种方法中的“跳”的数量直接受到下游消费者的数量、聚合的复杂性(例如,结构化流对链接多个聚合施加了一定的限制)以及操作效率的最大化的影响。

QoS解决方案架构专注于数据处理的最佳实践,而不是一个完整的VOD(视频点播)解决方案——一些标准组件,如“前门”服务Amazon API Gateway,在高级架构中被避免,以保持对数据和分析的关注。


QoS平台的高级体系结构bob体育客户端下载

图3 QoS平台的高级架构bob体育客户端下载

让你的数据为分析做好准备

QoS解决方案中包含的两个数据源(应用程序事件和CDN日志)都使用JSON格式,非常适合数据交换——允许您表示复杂的嵌套结构,但作为数据湖/分析系统的存储格式不可扩展且难以维护。

为了使整个组织的数据可以直接查询,“从青铜到白银”管道(“让所有人都可以使用您的数据”管道)应该将任何原始格式转换为Delta格式,并包括任何监管机构要求的所有质量检查或数据屏蔽。

视频应用活动

基于这种架构,视频应用程序事件被直接推送到Kinesis Streams中,然后只被摄取到Delta追加表中,而不需要对模式进行任何更改。

由Databricks QoS解决方案捕获的应用程序事件的原始格式。

图4应用事件的原始格式

使用这种模式允许大量的下游消费者在流范式中处理数据,而不必扩展Kinesis流的吞吐量。作为使用Delta表作为接收器(支持优化! ),we don’t have to worry about the way the size of the processing window will impact the number of files in your target table - known as the “small files” issue in the big data world.

从JSON事件中提取时间戳和消息类型,以便能够对数据进行分区,并允许使用者选择他们想要处理的事件类型。同样,将事件的单个Kinesis流与Delta“events”表结合起来可以降低操作复杂性,同时使在高峰时段的扩展变得更容易。

所有细节都是从Silver表的JSON中提取出来的

图5 . Silver表的所有细节都是从JSON中提取出来的

CDN日志

CDN日志被发送到S3,因此处理它们最简单的方法是Databricks Auto Loader,它在新数据文件到达S3时增量地、高效地处理它们,而不需要任何额外的设置。

auto_loader_df = spark.readStream。格式“cloudFiles”) \.option (“cloudFiles.format”“json”) \.option (“cloudFiles.region”,地区)\.load (input_location)Anonymized_df = auto_loader_df.select(‘*’ip_anonymizer (“requestip”) .alias (“知识产权”)) \.drop (“requestip”)\.withColumn (“起源”, map_ip_to_location(坳(“知识产权”)))
              
              anonymized_df。writeStream \.option (“checkpointLocation”checkpoint_location) \格式“δ”) \.table (silver_database +“.cdn_logs”

由于日志包含ip(根据GDPR法规被视为个人数据),“让所有人都能获得您的数据”管道必须包括匿名步骤。可以使用不同的技术,但我们决定只从IPv4中剥离最后八位,从IPv6中剥离最后80位。最重要的是,数据集还丰富了原产国和ISP提供商的信息,这些信息稍后将用于网络运营中心的本地化。

创建仪表板/虚拟网络操作中心

流媒体公司需要尽可能实时地监控网络性能和用户体验,追踪到个人层面,并能够在细分层面进行抽象,轻松定义新的细分市场,如由地理位置、设备、网络和/或当前和历史观看行为定义的细分市场。对于流媒体公司来说,这意味着从电信网络中采用网络运营中心(NOC)的概念,在宏观层面上监控用户的流媒体体验状况,及早发现并响应任何问题。最基本的是,noc应该有仪表板,将用户的当前体验与性能基线进行比较,以便产品团队能够快速轻松地识别和处理任何服务异常。

在QoS解决方案中,我们合并了一个砖仪表板.BI工具也可以毫不费力地连接,以构建更复杂的可视化,但基于客户反馈,内置仪表板在大多数情况下是向业务用户展示洞察的最快方式。

NoC的聚合表基本上是Delta体系结构的Gold层——CDN日志和应用程序事件的组合。

示例网络操作中心Dashboard for Databricks视频QoS解决方案。

图6网络运营中心仪表板示例

仪表板只是一种可视化地打包SQL查询或Python / R转换结果的方法——每个Notebook都支持多个仪表板,因此在多个终端用户有不同需求的情况下,我们不必重复代码——作为奖励,刷新也可以被安排为Databricks作业。

Databricks流视频QoS解决方案中SQL查询结果的可视化。

图7 SQL查询结果的可视化

视频的加载时间(到第一帧的时间)可以更好地了解CDN的各个位置的性能(在本例中是AWS CloudFront Edge节点),这对您改善该KPI的策略有直接影响,可以通过在多个CDN上分散用户流量,也可以在使用AWS CloudFront的情况下实现动态源选择(电子邮件保护)

Databricks流媒体视频Qos解决方案的视频加载时间可视化示例

未能理解高水平缓冲的原因-以及它带来的糟糕的视频质量体验-对用户流失率有重大影响。最重要的是,广告商不愿意把钱花在降低观众参与度的广告上,因为他们在上面增加了额外的缓冲,所以广告业务的利润通常也会受到影响。在这种情况下,从应用程序端收集尽可能多的信息是至关重要的,这样不仅可以在视频级别进行分析,还可以在浏览器甚至应用程序类型/版本上进行分析。

Databricks流视频QoS解决方案的黄油时间数据可视化示例。

在内容方面,应用程序的事件可以提供有关用户行为和整体体验质量的有用信息。有多少人暂停了视频实际上已经看完了那集/视频?停止内容质量的原因是什么,还是有交付问题?当然,进一步的分析可以通过将所有来源(用户行为,cdn / isp的性能)联系在一起来完成,不仅可以创建用户档案,还可以预测用户流失。


通过Databricks流媒体视频QoS解决方案提供用户行为的示例数据可视化。

创建(接近)实时警报

在处理数百万并发用户在视频流中生成的数据的速度、数量和种类时,仪表板的复杂性可能会使NOC的人工操作员更难专注于当前最重要的数据,并集中于根本原因问题。使用此解决方案,您可以在性能超过某些阈值时轻松设置自动警报,这些阈值可以帮助网络的人工操作员,并通过Lambda函数设置自动补救协议。例如:

  • 如果CDN的延迟远远高于基线(例如,如果延迟比基线平均延迟超过10%),启动自动CDN流量转移。
  • 如果超过[某个阈值,例如,5%]的客户端报告播放错误,请提醒产品团队,特定设备可能存在客户端问题。
  • 如果某个ISP上的浏览者有高于平均水平的缓冲和像素问题,请提醒一线客户代表有关响应和减少问题的方法(例如,降低流质量)。

从技术角度来看,生成实时警报需要一个能够实时处理数据和发布-订阅服务来推送通知的流引擎。

Databrick流媒体视频QoS解决方案采用Amazon SNS和Amazon SQS集成微服务

图8利用Amazon SNS和Amazon SQS集成微服务

QoS解决方案实现集成微服务的AWS最佳实践通过使用Amazon SNS及其与Amazon Lambda的集成(参见下面的web应用程序更新)或Amazon SQS为其他消费者提供服务。的自定义foreach写入器Option使得编写基于基于规则的引擎的管道发送电子邮件通知(例如,在一段时间内验证每种类型的应用程序的错误百分比)非常简单。

defsend_error_notification):Sns_client = boto3.client(“社交”、地区)error_message ='应用程序的错误数量已超过阈值{}'格式(行“比例”])
              Response = sns_client.publish(TopicArn = < TopicArn >,消息= error_message,主题= <消息>,MessageStructure =“字符串”#结构化流作业getKinesisStream (“player_events”)\.selectExpr (“类型”“app_type”)\.groupBy (“app_type”)\苹果(calculate_error_percentage) \其中("percentage > {}"格式(阈值))\.writeStream \.foreach send_error_notification \.start ()< /消息> < / topicarn >

图9使用AWS SNS发送邮件通知

在基本的电子邮件用例之上,Demo Player包括三个使用AWS AppSync实时更新的小部件:活跃用户数量,最受欢迎的视频,同时观看视频的用户数量。

Delta流媒体视频QOS架构采用“多跳”方式进行数据管道

图10实时聚合结果更新应用程序

QoS解决方案应用了类似的方法——结构化流和Amazon SNS——来更新所有值,允许使用AWS SQS(必须增强和分析大量事件时的常见模式)插入额外的消费者——预聚合一次数据,并允许每个服务(消费者)在下游做出自己的决策。

下一步:机器学习

手动理解历史数据很重要,但也非常缓慢——如果我们想在未来能够做出自动化决策,我们必须集成机器学习算法。

作为一个统一的数据分析平台,Databricks使数据科bob体育客户端下载学家能够使用ML Runtime等内置支持来构建更好的数据科学产品Hyperopt/Horvod/AutoML或者与端到端机器学习生命周期管理工具MLFlow的集成。

我们已经在我们的客户群中探索了一些重要的用例,同时关注QoS解决方案的可能扩展。

故障点预测和修复

随着D2C拖流的用户越来越多,即使是短暂的服务损失成本也会增加。ML可以通过预测可能出现问题的地方并在出现问题之前进行补救,帮助运营商从报告转变为预防(例如,并发查看者的激增导致cdn自动切换到容量更大的cdn)。

客户流失

发展订阅服务的关键是保持现有的订阅用户。通过理解个人层面的服务质量,您可以在客户流失和客户生命周期价值模型中添加QoS作为变量。此外,您还可以为那些有视频质量问题的客户创建客户队列,以测试主动消息传递和保存报价。

Databricks流媒体视频QoS解决方案入门

在流媒体视频体验中提供一致的质量在这一点上是一个赌注,可以让善变的观众有足够的娱乐选择留在你的平台上。bob体育客户端下载通过这个解决方案,我们试图为大多数流媒体视频平台环境创建一个快速启动,以一种方式嵌入这个QoS实时流分析解决方案:bob体育客户端下载

  • 适用于任何规模的观众
  • 在分发工作流的关键部分快速标记质量性能问题
  • 足够灵活和模块化,可以根据您的受众和需求轻松定制,例如创建新的自动警报或使数据科学家能够测试和推出预测分析和机器学习。

要开始,请下载数据流视频QoS解决方案.有关如何将批处理和流数据统一到单个系统的更多指导,查看Delta体系结构网络研讨会。

免费试用Databricks
看到所有工程的博客的帖子