基于 Serverless 的端边云一体化媒体网络
摘要:视频在边缘的创新方向在哪?下一代视频云平台什么样?
文 / 卢志航
整理 / LiveVideoStack
本文分享自华为云社区《探讨视频云与边缘云平台的竞争力——基于Serverless的端边云一体化媒体网络》,作者:音视频大管家。
视频在边缘的创新方向在哪?下一代视频云平台什么样?本次 LiveVideoStackCon2021 北京线下峰会我们邀请到了华为云媒体服务 RTC 资深产品专家卢志航老师,从以 Serverless 为承载平台,以开放、专业的媒体处理能力为价值核心的方向,与大家探讨视频云与边缘云平台的下一代竞争力。
为什么会想与大家聊 Serverless 系统,主要与整个团队开发过程息息相关,云视频团队在华为云成立之初已成立,都是音视频专家进行业务开发。经过这几年的积累,逐步提供直播、点播、AR、VR、自由视角与 RTC 相关服务。随着业务的拓展,架构也在进化,部署位置从线下到线上,包括到现在的完全云原生,当前我们在做相关 Serverless 的探索共建,于是分享一些 Serverless 相关内容。分享将从四个方面进行,首先聊一聊 Serverless 前世今生,看一看 Serverless 将朝什么方向发展;其次在构建 Serverless 过程中遇到的坑,为 Serverless 平台关键要素做一些总结;然后将 Serverless 平台架构和其他关键特性作总结;最后做一个整体总结。
1、Serverless 正在朝着什么样的方向发展?
首先来看一看 Serverless 朝着什么方向发展。
业界关于 Serverless 的讨论也越来越多,那 Serverless 的定义是什么?CNCF 认为关键词有 3 个:函数、按需付费、弹性伸缩。
回顾一下软件行业在架构上的发展的历程。我们早期使用虚拟机部署业务,开发者需要自己部署操作系统,比如 centos 和 ubunutu,运行时,比如 JAVA 的 JRE,再搭配一套中间件,比如消息中间件 Kafka,最后再基于这一层层的能力来写业务代码,构建应用软件,完成最终需求。但是由于硬件异构,操作系统异构,版本也异构,很难做到应用的扩容、迁移、运维。所以,docker 和 k8s 应运而生,容器技术的产生使得开发者的开发模式完全变了,大家开始发现微服务框架配上容器使自己的部署变得简单了。从此,计算资源开始无处不在,能跑容器的地方就是应用可以运行的地方。
但程序员在“偷懒”这件事上是永无止境的,所以我们还不满意,就产生了 Serverless 技术,开发者连容器,运行时的中间件也不需要管了,一切应用需要的基础能力全部由底层统一提供,开发者只需要关注自己的应用逻辑即可。
一旦开发者不再关注基础资源,那么他的开发方式也就不需要考虑这些东西。所以 Serverless 也就成了新的开发范式。从资源的角度,Serverless 也无意中形成了一种新的计算范式。
Serverless 作为一种新的开发范式,软件的架构也一定随着这种新范式的出现而做出对应的变化。传统的单体是个完全封闭的架构,业务模块耦合,牵一发而动全身。微服务架构采用标准的接口来解耦各个业务模块,通过容器技术也使得开发更有效率,但是开发者仍需要关注容器的部署位置,需要 Devops 的紧密联动。Serverless 的架构进一步让开发者回归业务本质,免去非业务相关的运维,通过函数的方式来构建应用,使得应用解耦的颗粒度更小。
我们不仅在开发过程中可以更专注于业务,同时对冰山下的内容,从应用部署、算力亲和……异构并行到弹性伸缩,这一切都成为非业务相关运维,全部由 Serverless 平台处理。开发者只需要关心业务相关的运维。
虽然 Serverless 的好处显而易见,但 Serverless 的产品化之路也是一个漫长持续积累的过程。基于容器技术,公有云厂商把容器背后的计算资源弄成一个大池子,然后提供容器自动伸缩和按需计费的能力供开发者使用。尽管这样做省去了不少麻烦,却不能让开发者完全满意。我们期望它能够更便捷的使用已有的软件能力,快速构建应用,解决需求。因此,各个公有云厂商也开始将已有的各个云服务通过提供函数接口的方式将业务能力开放,使得各个云服务成为一个 Backend 即服务。开发者只需要在自己写的函数中调用 Backend 服务提供的函数接口,就可以满足业务诉求,也就是所谓的 Functions 即服务。
综上,在公有云厂商的已有成熟产品中,Serverless 的价值也朝着应用化的方向发展。
我们关注到 Serverless 不仅仅是面向公有云场景,在面向边缘场景、终端场景都有良好应用,这里所说不是 Serverless 的部署位置。可以看到在边缘场景上,Akamai 有很好的实现,通过把边缘 CDN 的接入逻辑和鉴权逻辑开放,实现用户更好接入。比如在终端上,华为消费者云通过 Wisefunction 把华为手机 HMScore 的业务能力在服务端也开放出来,举个例子:去年疫情初期,华为手机的负一屏实时显示各省的疫情情况,就是我们通过 Serverless 技术来构建的,在函数中写好 javascript 的业务逻辑、页面布局,三天时间直接上线运行。
总结一下,Serverless 在云、边、端已经形成了不同的产品形态。这些不同的产品形态,能让我们对于未来 Serverless 的发展方向有个基本判断。
面向云上,主要集中在以函数接口,事件式触发来串联起各个云服务,为构筑完整应用解决方案创造价值。
面向边缘,结合所处的音视频行业,我们认为:主要集中在云、边一体的全覆盖的媒体业务能力的开放,提供专业化、可定制的视频云服务,关键还是在于媒体能力的开放。
面向端,主要集中在前后端一体化开放框架,构建前端业务快速交付的能力。
2、视频云需要一个什么样的 Serverless 平台
看完了 Serverless 平台演进过程,就要讨论对于音视频业务本身需要怎样的 Serverless 平台更好发展音视频业务。
要回答音视频业务需要怎么样的 Serverless 平台,我们聚焦于视频的主要核心阶段:生产,处理和分发。
如果我们的视频业务是基于 Serverless 平台构建的,我们希望这个平台有足够计算资源,同时能执行良好的管理逻辑,方便生产和处理视频内容。
同时我们希望这个平台能够管理在统一的传输网络中,可以有效的传输 RTC、直播、点播等业务,可以根据我们对不同视频业务的 SLA 做动态调整。
最后我们希望这个平台能够基于全球一张网来实现,有效的屏蔽地域和运营商的差异给视频开发者造成的困扰,管理足够多的边缘节点,让视频更加贴切用户。能够满足视频云的这些特点,才能更好的助力视频业务发展。
除了外在的应用资源,我们对于内在的软件资源也有对应诉求,其中主要解决两方面的问题:一是运维成本;二是资源浪费。运维成本方面,希望在 Serverless 平台将集群和中间件、基础设施运维由统一平台进行管理,对外只开放应用代码运维。资源浪费方面,因为需要管理云端、边端海量的资源所以需要对应的带宽资源,举个例子白天和晚上根据业务不同对视频业务做削峰填谷,对于计算资源而言能在地域之间把高流量节点和高计算资源节点做到统筹分配,实现业务灵活调用,从而有效降低机房的 TCO 值。
说完内外在的要求,回到音视频业务本身,是所有业务中最丰富多彩和变化多端的,开发者对各种需求应接不暇,所以希望视频原子能力特别是已经对外提供服务的云服务的原子能力能够进行抽象,这些抽象出来的功能足够小的原子颗粒,能给开发者做快速的编排使用方法,举个例子:常见的 RTC 旁推直播,也就是主播连麦 PK 场景,希望 RTC 的流处理分流逻辑、RTMP 旁推逻辑和 CDN 播放鉴权逻辑抽象为对应的原子能力,从而快速灵活组成希望要的旁推直播场景。同样语言、字幕、会议纪要可以通过原子能力提炼形成开放。
所以,我们认为视频云的 Serverless 平台驱动架构解耦更加充分,让开发团队更快速适应需求的平台。我们以视频的完整生命周期为例,期望全生命周期的各个环境都是原子解耦的。比如音视频的采集源可以有多视角,自采集的能力。采集后的数据,可以做手势检测、ROI 检测、字幕检测、背景替换等前处理。在本地端,音视频数据可以做本地预览和渲染。处理后的数据,可以通过不同的编码方式编码,如 H264,H265,VP8 等。再经过不同的线路做分发传输,如公网 Overlay 的 RTN,专线等送到消费端。消费端选择合适的解码方式如硬解,软解等,最终再被后处理和渲染。后处理的时候,还可以采取适当的插帧来增加流畅度,去模糊来增强画质等。
我们期望视频的每一个环节在这个 Serverless 平台都可以构建原子能力。然后通过原子的组合能力编排,来解放生产力。
3、华为云—云原生媒体网络 Serverless 探索与构建
这张图是华为云视频基于 Serverless 平台构建的业务架构图。
首先是最底层的终端,包含 RTC 终端,Live 直播终端,行业视频 VIS 终端。
其次是平台层,平台层分为大云 Region 和边缘节点两种部署方式。Region 和边缘节点具有相同的功能,包括应用网关、沙箱、容器和调度控制。应用可以直接在沙箱内部署函数,也可以通过将容器镜像部署为函数。而函数的启动、停止、预热、扩缩等功能全部通过节点内的调度控制模块来管理。每个边缘节点还配置了应用网关,以便节点对外提供必要的 API 开放能力。而大云 Region 和边缘节点之间的数据协调,资源协调,函数部署等则由分布式的 ServerlessOS 来统一纳管。这个分布式 Serverless OS 的内核华为起名为元戎 OS,也就是统帅的意思,期望它能够完全统管整个云边一体的媒体网络。分布式 ServerlessOS 对使用者提供函数、工作流、统一的 IDE 工具(用于写函数,和编排函数)。运营做到无感知,其内部包含了全域调度(统管资源调度,节点弹缩管理)、分布式数据库、全局接入等能力。
最后是媒体函数层。我们把云视频的核心业务组件 RTC 的 SFU,直播的 LAS, 转码的 MPC,消息的 MBS 通过容器部署为函数的形式与元戎平台深度结合。在这些业务组件能力之上提供函数接口能力。通过函数接口,构建一个函数生态,有自建函数,也有第三方的函数都可以跑在我们的 ServerlessOS 平台之上。比如各种第三方的美颜算法就可以化为函数,落在我们的 MPC 上。
我们把这套架构,总结了 4 个关键词:EdgeNative; Serverless; No Ops; ApI Adatper。
这套端边云 Serverless 平台的关键特性一是核心云服务下沉边缘,实现云边业务协同。可以满足云边的数据同步、任务协同、管理协同、安全协同等等。如我们在华为云人工智能平台 EI 上的 ModelArts 训练出来的算法,可以直接下推到边缘节点进行应用。我们也可以把部分云上 Region 实时性要求不高的转码活动,下放到边缘节点去转码。通过云边协同,真正把边缘作为公有云的延伸,扩大公有云的服务范围资源使用率。
关键特性二是云边混合调度,流量+资源联合弹性。刚才架构图中我们提到元戎内核的全域调度能力。这个全域调度就是我们分布式 ServerlessOS 内核中的核心。他通过边缘节点的流量数据,结合媒体流业务特点,预测出媒体业务的未来趋势。将数据反馈给资源调度平台——瑶光系统,做资源调度的预测和统配计算。最终通过 Serverless 的基础平台来部署函数。实现精准的协调边缘节点的资源与服务 SLA 质量,使之达到平衡点。
关键特性三是一体化开发体验、快速迭代视频应用。其实这个特性,也是 Serverless 对开发者最直观的反馈。开发者通过一个 IDE 环境写出的业务函数,直接运行到 Region 和边缘,只要函数功能是原子的,就可以随意运行在 Region 或者边缘。同时,函数在运行时,为了函数达到毫秒级的启动,也为了更加适应业务突增陡降带来的资源变化,华为云 Serverless 有 3 个优化点:1、通过调度、代码缓存、预热等优化函数启动阶段,使得函数启动更快。2、提供函数与函数之间的通信框架,使得函数的调用更加灵活。3、函数的扩缩容参考函数类型,历史流量等动态执行。
关键特性四是媒体业务函数级灵活编排。最后一个特性,是把我们整个云视频的业务能力全部按照函数开放出来:如媒体流函数集专门用于做媒体流收发,智能分析函数集专门做 EI 相关处理,视频编辑函数集专门用于做视频剪辑,实时处理函数集专门做实时媒体流的增强处理等。我们通过合理的函数接口设计,让各个函数可以直接编排使用。通过开放的编排能力来完成视频业务的各个流程,达到快速满足定制化业务需求的目的。
举几个实际使用的案例。场景举例一:终端鉴权场景。基于这套架构,我们把接入鉴权功能做了调整。原先我们的接入鉴权是工程师把客户的接入鉴权规则编码到鉴权服务器内部,鉴权通过以后才能允许终端接入 SFU/LAS 等媒体服务器。通过 Serverless 平台,我们把这些鉴权规则写成函数,然后部署到边缘节点,终端通过边缘节点的应用网关接入后,会触发相应的鉴权函数被执行,一旦函数反馈鉴权通过,就允许接入到对应的媒体服务器。
场景举例二:实时语音字幕。这个案例是 RTC 团队与华为云会议团队联合开发的。因为字幕的实时性要求比较高,也并非所有的客户都需要这个功能,所以当前的字幕需求并不是一个标配,并且这个业务特性的波峰波谷特别明显。采用 Serverless 技术后,可以快速灵活的调整资源。我们通过分流函数从 SFU 分出一路音频,送入解码得到音频数据后、再送入 ASR 做语音文字解析、最后通过 MBS 将文本信息下发到端侧 SDK。从而既不增加原有音频流的时延,又满足字幕的需求。
创新案例三:边缘实时渲染能力
场景举例三:边缘实时渲染能力。现在的手机型号五花八门,能力也参差不齐。各个厂商费尽了心思去适配各种机型,为了满足渲染的一致性和屏蔽机型的差异,产生了在云端做渲染美颜的想法。我们通过在边缘 Serverless 平台做了一个 RTC 边缘实时渲染的案例。在边缘部署了相应的函数能力以后,通过端侧的信令做为触发条件,从 SFU 分流一路视频后,经过解码,美颜,编码再推流到 SDK 完成整个实时渲染的过程。这里我们还依赖与元戎做了不少深度的结合。比如需要元戎把宿主机的 GPU 卡的能力开放给我们的函数使用,完成 GPU 直通,直通后的 GPU 卡可以在不同容器内完成快速切换是元戎给我们解决的最大的一个问题。
在做测试同时也用对应秒表计算做对应测算,基本上端到端时延保证在 150ms 以内,有几组测算数据,在停住后可以看到数据更加明显一些。
4、总结
视频云的架构是随着云原生技术的演进不断演进的,当下与未来都将处在演进之中,我们对视频云的未来有几个想法分享给大家:
一、视频云的价值:既要支撑视频解决方案业务快速创新,也要带动周边服务大规模协同并发。
二、视频云的产品:构建媒体网络可编程平台,通过平台提供高级直播、RTC 业务处理能力、视频实时 AI 能力、可编程内容制作及媒体处理管线能力。再通过这些能力来驱动业务创新,实现新的价值。
三、视频云的核心技术:边缘 Serverless,高密度的 OS, 全域调度。通过核心技术来驱动性能提升,提升业务能力上限。
以上就是我的全部分享谢谢。
版权声明: 本文为 InfoQ 作者【华为云开发者社区】的原创文章。
原文链接:【http://xie.infoq.cn/article/213d1a5bafe4913186d441e78】。文章转载请联系作者。
评论