突然资讯网
首页 >> 科技 >> 正文

轻松构建基于 Serverless 架构的弹性高可用音视频处理系统

日期:2019-12-14 16:24:49 来源:互联网 编辑:小狐 阅读人数:154

前言

随着计算机技术和 Internet 的日新月异,点播技术因其良好的人机交互性和流媒体传输技术倍受教育、娱乐等行业青睐,而在当前, 云计算平台厂商的产品线不断成熟完善, 如果想要搭建点播类应用,告别刀耕火种, 直接上云会扫清硬件采购、 技术等各种障碍,以阿里云为例:

轻松构建基于 Serverless 架构的弹性高可用音视频处理系统(图1)

这是一个非常典型的解决方案, 对象存储 OSS 可以支持海量存储,采集上传的被转码以适配各种终端,CDN 加速终端设备播放的速度。此外还有一些内容安全需求, 比如鉴黄、鉴恐等。

而在点播解决方案中, 转码是最消耗计算力的一个子,虽然您可以使用云上专门的转码服务,但在很多情况下,您会选择自己搭建转码服务。比如:

您已经在虚拟机/容器平台上基于 FFmpeg 部署了一套处理服务,能否在此基础上让它更弹性,更高的可用性?

您的需求只是简单的转码需求,或是一些极其轻量的需求,比如获取 OSS 上前几帧的 GIF、获取或者音频的时长,自己搭建成本更低。

各种格式的音频转换或者各种采样率自定义、音频降噪等功能

您有更高级的自定义处理需求,比如转码完成后, 需要记录转码详情到数据库, 或者在转码完成后, 自动将热度很高的预热到 CDN 上, 从而缓解源站压力。

您有并发处理大量的需求。

您的源文件存放在 NAS 或者 ECS 云盘上,自建服务可以直接读取源文件处理,而不需要将它们再迁移到 OSS 上。

如果您的处理有上述需求,或者您期望实现一个 弹性高可用低成本免运维灵活支持任意处理逻辑 的处理,那么本文则是您期待的最佳实践方案。

Serverless 自定义处理

在介绍具体方案之前, 先介绍两款产品:

函数计算 :阿里云函数计算是事件驱动的全托管计算服务。通过函数计算,您无需等基础设施,只需编写代码并上传。函数计算会为您准备好计算资源,以弹性、可靠的方式运行您的代码,并日志查询、性能监控、报警等功能。

函数工作流:函数工作流(Function Flow,以下简称 FnF)是一个用来协调多个分布式任务执行的全托管云服务。您可以用顺序,分支,并行等方式来编排分布式任务,FnF 会按照设定好的步骤可靠地协调任务执行,跟踪每个任务的状态转换,并在必要时执行用户定义的重试逻辑,以确保工作流顺利完成。

免费开通函数计算,按量付费,函数计算有很大的免费额度。

免费开通函数工作流,按量付费,函数工作流有很大的免费额度。

函数工作流对相应的函数进行编排, 比如第一步的函数是转码, 第二步的函数是转码成功后,将相应 meta 数据库写入数据库等。

至此,您应该初步理解了函数计算的自定义处理能力 + 函数工作流编排能力几乎满足您任何自定义处理的需求,接下来,本文以一个具体的示例展示基于函数计算和函数工作流打造的一个弹性高可用的 Serverless 处理,并与传统方案进行性能、成本和工程效率的对比。

简单处理

假设您是对短进行简单的处理, 架构方案图如下:

轻松构建基于 Serverless 架构的弹性高可用音视频处理系统(图2)

如上图所示, 用户上传一个到 OSS, OSS 触发器自动触发函数执行, 函数调用 FFmpeg 进行转码, 并且将转码后的保存回 OSS。

OSS 事件触发器, 阿里云对象存储和函数计算无缝集成。您可以为各种类型的事件设置处理函数,当 OSS 捕获到指定类型的事件后,会自动调用函数处理。例如,您可以设置函数来处理 PutObject 事件,当您调用 OSS PutObject API 上传到 OSS 后,相关联的函数会自动触发来处理该。

您可以直接基于示例工程部署您的简单处理服务, 但是当您想要处理大(比如 test_huge.mov ) 或者对小进行多种组合操作的时候, 您会发现函数很大概率会执行失败,原因是函数计算的执行环境存在一些限制, 比如最大执行时间为 10 分钟, 最大内存为 3G。

为了突破函数计算执行环境的限制,引入函数工作流 FnF 去编排函数实现一个功能强大的全功能处理。

全功能处理

轻松构建基于 Serverless 架构的弹性高可用音视频处理系统(图3)

如上图所示, 假设用户上传一个 mov 格式的到 OSS,OSS 触发器自动触发函数执行, 函数调用 FnF,并行进行提取音频文件,同时进行 avi,mp4,flv 格式的转码。 所以您可以实现如下需求:

当有多个文件同时上传到 OSS,函数计算会自动伸缩, 并行处理多个文件。

对于每一个,先进行切片处理,并行转码切片,最后合成,通过设置合理的切片时间,可以大大加速较大的转码速度。

所谓的切片,是将流按指定的时间间隔,切分成一系列分片文件,并生成一个索引文件记录分片文件的信息

结合 NAS + 切片, 可以解决超大(大于 3G )的转码。

示例效果:

函数计算 + 函数工作流 Serverless 方案 VS 传统方案

卓越的工程效率

弹性伸缩免运维,性能优异

轻松构建基于 Serverless 架构的弹性高可用音视频处理系统(图4)

函数计算 + 函数工作流 Serverless 方案转码性能表

轻松构建基于 Serverless 架构的弹性高可用音视频处理系统(图5)

实验为是 89s 的 mov 文件 4K : 4K.mov,云服务进行 mov -> mp4 普通转码需要消耗的时间为 188s, 将这个参考时间记为 T

性能加速百分比 = T / FC转码耗时

轻松构建基于 Serverless 架构的弹性高可用音视频处理系统(图6)

更低的成本

具有明显波峰波谷的处理场景(比如只有部分时间段有处理请求,其他时间很少甚至没有处理请求)选择按需付费,只需为实际使用的计算资源付费。

没有明显波峰波谷的处理场景,可以使用预付费(包年包月)成本仍然极具竞争力。

函数计算成本优化最佳实践文档。

假设有一个基于 ECS 搭建的转码服务,由于是 CPU 密集型计算, 因此在这里将平均 CPU 利用率作为核心参考指标对评估成本,以一个月为周期,10 台 C5 ECS 的总计算力为例, 总的计算量约为 30% 场景下, 两个解决方案 CPU 资源利用率使用情况示意图大致如下:

轻松构建基于 Serverless 架构的弹性高可用音视频处理系统(图7)

由上图预估出如下计费模型:

ECS 计算型 C5 (2vCPU,4GB)+云盘: 包月219 元

函数计算按量付费占整个计算量的占比 <= 10%,费用约为 3×864×10% = 259.2 元,3G 规格的函数满负载跑满一个月费用为:0.00011108×3×30×24×3600 = 863.8,详情查看计费

在这个模型预估里面,可以看出 FC 方案具有很强的成本竞争力,在实际场景中, 基于 ECS 自建的转码服务 CPU 利用甚至很难达到 20%, 理由如下:

轻松构建基于 Serverless 架构的弹性高可用音视频处理系统(图8)

可能只有部分时间段有转码请求

为了用户体验,转码速度有一定的要求,可能一个转码就需要 10 台 ECS 并行处理来转码, 因此只能预备很多 ECS

因此,在实际场景中, FC 在处理上的成本竞争力远强于上述模型。

即使和云厂商转码服务单价 PK, 该方案仍有很强的成本竞争力

经实验验证, 函数内存设置为3G,基于该方案从 mov 转码为 mp4 的费用概览表:

480P.mov 720P.mov 1080P.mov 4K.mov

格式转换

成本下降百分比 = (云处理费用 - FC 转码费用)/ 云处理费用

轻松构建基于 Serverless 架构的弹性高可用音视频处理系统(图9)

云处理,计费使用普通转码,转码时长不足一分钟,按照一分钟计算,这里计费采用的是 2 min,即使采用 1.5 min 计算, 成本下降百分比也在 80% 左右

从上表可以看出, 基于函数计算 + 函数工作流的方案在计算资源成本上具有显著优势。

操作部署

免费开通函数计算,按量付费,函数计算有很大的免费额度。

免费开通函数工作流,按量付费,函数工作流有很大的免费额度。

免费开通文件存储服务NAS, 按量付费

详情见各自示例工程的 README

总结

基于函数计算 FC 和函数工作流 FnF 的弹性高可用处理天然继承了这两个产品的优点:

无需采购和等基础设施,只需专注处理业务逻辑的,大幅缩短项目交付时间和人力成本

日志查询、性能监控、报警等功能快速排查故障

以事件驱动的方式触发应用响应用户请求

免运维,毫秒级别弹性伸缩,快速实现底层扩容以应对峰值压力,性能优异

成本极具竞争力

最后一一回答一下之前列出的问题:

Q1: 您已经在虚拟机/容器平台上基于 FFmpeg 部署了一套处理服务,能否在此基础上让它更弹性,更高的可用性?

A: 如工程示例所示,在虚拟机/容器平台上基于 FFmpeg 的服务可以轻松切换到函数计算, FFmpeg 相关命令可以直接移值到函数计算,改造成本较低, 同时天然继承了函数计算弹性高可用性特性。

Q2:您的需求只是简单的转码需求,或是一些极其轻量的需求,比如获取 OSS 上前几帧的 GIF 等。 自己搭建成本更低。

A: 函数计算天生就是解决这些自定义问题, 你的代码你做主, 代码中快速执行几个 FFmpeg 的命令即可完成需求。

Q3: 您有更高级的自定义处理需求,比如转码完成后, 需要记录转码详情到数据库, 或者在转码完成后, 自动将热度很高的预热到 CDN 上, 从而缓解源站压力。

A: 详情见全功能处理(函数计算 + 函数工作流方案)after-process 中可以做一些自定义的操作, 您还可以基于此流程再做一些额外处理等, 比如:

再增加后续流程

最开始增加 pre-process

Q4: 您有并发同时处理大量的需求。

A: 详情见全功能处理(函数计算 + 函数工作流方案) 当有多个文件同时上传到 OSS, 函数计算会自动伸缩, 并行处理多个文件。详情可以参考 全功能处理 (FnF + FC) 压测

Q6: 您的源文件存放在 NAS 或者 ECS 云盘上,自建服务可以直接读取源文件处理,而不需要将他们再迁移到 OSS 上。

A: 函数计算可以挂载 NAS, 直接对 NAS 中的文件进行处理

-----------------------------------

本文相关词条概念解析:

转码

视频转码技术将视频信号从一种格式转换成另一种格式。它具有两个面向不同领域的重要功能。首先是在传统设备和新兴设备之间实现通信。例如,许多现有的视频会议系统是基于旧的视频编码标准H.263而建立,而最新的视频会议系统采用了H.264基线规范。因此,实时视频转码技术是实现两者之间通信的必不可少因素。 按媒体格式分为、音频转码、视频转码。

延伸 · 推荐

大数据时代构建高可用分布式系统利器—Java高性能NIO通信首选

大数据时代构建高可用分布式利器—Java高性能NIO通信首选框架:NettyNettyNetty 是一个 NIO 客户端框架,使用它可以快速简单地网络应用程序,比如和客户端的协议。Netty 大大简化...

基于Redis设计一个百万级用户的高并发系统

目录抽奖的背景引入结合具体业务需求分析抽奖一个未经过优化的架构负载均衡层的限流Tomcat线程数量的优化基于Redis实现抽奖业务逻辑发放环节进行限流削峰架构设计总结一、抽奖的背景引入比如抽奖,有一种...

Serverless,在介绍相关的大规模数据处理示例之前

在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来!前言当您第一次接触 Serverless 的时候,有一个不那么明显的新使用方式:与传统的基于的方法相比,Serverless 服务平台可以...

网友评论