摘要:视频在边缘的创新方向在哪?下一代视频云平台什么样?

本文分享自华为云社区《探讨视频云与边缘云平台的竞争力——基于Serverless的端边云一体化媒体网络》,作者/卢志航,整理 / LiveVideoStack。

视频在边缘的创新方向在哪?下一代视频云平台什么样?本次LiveVideoStackCon 2021北京线下峰会我们邀请到了华为云媒体服务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把华为手机HMS core的业务能力在服务端也开放出来,举个例子:去年疫情初期,华为手机的负一屏实时显示各省的疫情情况,就是我们通过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和边缘节点之间的数据协调,资源协调,函数部署等则由分布式的Serverless OS来统一纳管。这个分布式Serverless OS 的内核华为起名为元戎OS,也就是统帅的意思,期望它能够完全统管整个云边一体的媒体网络。分布式ServerlessOS 对使用者提供函数、工作流、统一的IDE工具(用于写函数,和编排函数)。运营做到无感知,其内部包含了全域调度(统管资源调度,节点弹缩管理)、分布式数据库、全局接入等能力。

最后是媒体函数层。我们把云视频的核心业务组件RTC的SFU,直播的LAS, 转码的MPC,消息的MBS 通过容器部署为函数的形式与元戎平台深度结合。在这些业务组件能力之上提供函数接口能力。通过函数接口,构建一个函数生态,有自建函数,也有第三方的函数都可以跑在我们的ServerlessOS平台之上。比如各种第三方的美颜算法就可以化为函数,落在我们的MPC上。

我们把这套架构,总结了4个关键词:Edge Native; 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。从而既不增加原有音频流的时延,又满足字幕的需求。

3.1 创新案例三:边缘实时渲染能力

场景举例三:边缘实时渲染能力。现在的手机型号五花八门,能力也参差不齐。各个厂商费尽了心思去适配各种机型,为了满足渲染的一致性和屏蔽机型的差异,产生了在云端做渲染美颜的想法。我们通过在边缘Serverless平台做了一个RTC边缘实时渲染的案例。在边缘部署了相应的函数能力以后,通过端侧的信令做为触发条件,从SFU分流一路视频后,经过解码,美颜,编码再推流到SDK完成整个实时渲染的过程。这里我们还依赖与元戎做了不少深度的结合。比如需要元戎把宿主机的GPU卡的能力开放给我们的函数使用,完成GPU直通,直通后的GPU卡可以在不同容器内完成快速切换是元戎给我们解决的最大的一个问题。

在做测试同时也用对应秒表计算做对应测算,基本上端到端时延保证在150ms以内,有几组测算数据,在停住后可以看到数据更加明显一些。

4 总结

视频云的架构是随着云原生技术的演进不断演进的,当下与未来都将处在演进之中,我们对视频云的未来有几个想法分享给大家:

一、视频云的价值:既要支撑视频解决方案业务快速创新,也要带动周边服务大规模协同并发。

二、视频云的产品:构建媒体网络可编程平台,通过平台提供高级直播、RTC业务处理能力、视频实时AI能力、可编程内容制作及媒体处理管线能力。再通过这些能力来驱动业务创新,实现新的价值。

三、视频云的核心技术:边缘Serverless,高密度的OS, 全域调度。通过核心技术来驱动性能提升,提升业务能力上限。

以上就是我的全部分享谢谢。

点击关注,第一时间了解华为云新鲜技术~

基于Serverless的端边云一体化媒体网络的更多相关文章

  1. 旷视等Oral论文提出GeoNet:基于测地距离的点云分析深度网络

    基于网格曲面的几何拓扑信息可以为物体语义分析和几何建模提供较强的线索,但是,如此重要的连接性信息在点云中是缺失的.为此,旷视西雅图研究院首次提出一种全新的深度学习网络,称之为 GeoNet,可建模点云 ...

  2. 飞猪基于 Serverless 的云+端实践与思考

    作者 | 王恒飞(承荫) 本文整理自飞猪旅行前端技术专家--王恒飞(承荫)在[阿里云 Serverless Developer Meetup 上海站]上的分享.点击查看直播回放:https://dev ...

  3. 云开发如何解决serverless对端的最后一公里问题

    前端圈从来不缺少新的技术.点子和话题,有些留下来了而有些则转瞬即逝.在决定一种新技术是否能够长久的所有因素里,最核心的必然是自身实力过硬能够经受住实践检验.而除此之外,这项技术所解决问题的广泛程度.受 ...

  4. 从 FFmpeg 性能加速到端云一体媒体系统优化

    7 月 31 日,阿里云视频云受邀参加由开放原子开源基金会.Linux 基金会亚太区.开源中国共同举办的全球开源技术峰会 GOTC 2021 ,在大会的音视频性能优化专场上,分享了开源 FFmpeg ...

  5. 微软云平台媒体服务实践系列 2- 使用动态封装为iOS, Android , Windows 等多平台提供视频点播(VoD)方案

    文章微软云平台媒体服务实践系列 1- 使用静态封装为iOS, Android 设备实现点播(VoD)方案  介绍了如何针对少数iOS, Android 客户端的场景,出于节约成本的目的使用媒体服务的静 ...

  6. 【原创】基于Docker的CaaS容器云平台架构设计及市场分析

    基于Docker的CaaS容器云平台架构设计及市场分析 ---转载请注明出处,多谢!--- 1 项目背景---概述: “在移动互联网时代,企业需要寻找新的软件交付流程和IT架构,从而实现架构平台化,交 ...

  7. Midway Serverless 发布 2.0,一体化让前端研发再次提效

    作者 | 张挺 来源 | Serverless 公众号 自去年 Midway Serverless 1.0 发布之后,许多业务开始尝试其中,并利用 Serverless 容器的弹性能力,减少了大量研发 ...

  8. 微软云平台媒体服务实践系列 1- 使用静态封装为iOS, Android 设备实现点播(VoD)方案

    微软的云平台媒体服务为流媒体服务提供了多种选择,在使用流媒体服务为企业做流媒体方案时,首先需要确认要流媒体接收目标,如针对广大iOS, Android移动设备,由于它们都支持HLS 格式的流媒体,基于 ...

  9. 视频私有云实战:基于Docker构建点播私有云平台

    私有云是为一个客户单独使用而构建的,因而提供对数据.安全性和服务质量的最有效控制.前置条件是客户拥有基础设施,并可以使用基础设施在其上部署应用程序.其核心属性是专有的资源.本篇文章将会结合网易云信的实 ...

  10. MaxCompute,基于Serverless的高可用大数据服务

    摘要:2019年1月18日,由阿里巴巴MaxCompute开发者社区和阿里云栖社区联合主办的“阿里云栖开发者沙龙大数据技术专场”走近北京联合大学,本次技术沙龙上,阿里巴巴高级技术专家吴永明为大家分享了 ...

随机推荐

  1. 堆优化模拟退火(List-Based Simulated Annealing|List-Based SA|LBSA|模拟退火) 算法

    图炸了的话请多刷新几次(upd:8.9) 堆优化模拟退火(List-Based Simulated Annealing) 算法 引入 堆优化模拟退火(List-Based Simulated Anne ...

  2. eclipse安装velocity插件(转)

    http://www.jspxcms.com/knowledge/46.html http://blog.csdn.net/superbeck/article/details/5721382 插件地址 ...

  3. JavaScript 简介与引用

    作者:WangMin 格言:努力做好自己喜欢的每一件事 我们通常写好的HTML网页是处于一个静态的效果,在用户体验这一方面就不是很好,给人一种死板的感觉.这里我们就可以用到JavaScript来为网页 ...

  4. Python利用pandas进行数据合并

    当使用Python中的pandas库时,merge函数是用于合并(或连接)两个数据框(DataFrame)的重要工具.它类似于SQL中的JOIN操作,允许你根据一个或多个键(key)将两个数据框连接起 ...

  5. [MDP.NetCore] 使用AzureAD+服務主體,快速建立兩個服務之間的Service身分認證

    MDP.AspNetCore.Authentication.AzureAD.Services for Service Principal MDP.AspNetCore.Authentication.A ...

  6. C语言水仙花数

    #include<stdio.h> void main() { int i, j, k, n=100;//分别设置三个数和一个三位数 for(i=1;i<=9;i++) //一个一个 ...

  7. JAVAweek7

    本周学习[函数][数组] 什么是函数: 函数就是定义在类中的具有特定功能的一段独立小程序.函数也称为方法. 函数的格式: ·修饰符 返回值类型 函数名(参数类型 形式参数) { 执行语句: retur ...

  8. 【uniapp】【外包杯】学习笔记day07 | 微信小程序轮播图、分类导航、楼层图的开发与实现

    1.创建home分支 2.配置网络请求 由于平台的限制,现需要建立uni-app中使用第三方包请求网络数据请求 在 uni-app 项目中使用 @escook/request-miniprogram  ...

  9. JavaWeb项目中web.xml配置文件<servlet-class>…</servlet-class>中的路径出现问题以及服务器错误的解决办法

    问题如图 原因: 1.改变了 WEB-INF 文件夹下 lib 文件夹下 servlet-api.jar 的路径2.缺失lib文件夹下的 servlet-api.jar,没有添加到库中 解决办法: 不 ...

  10. 【Javaweb】jsp | 简单学习【笔记保存】

    什么是jsp,它有什么用? jsp的全称是java server pages.Java的服务器界面. jsp的主要作用是代替Servlet程序回传html页面的数据 因为Servlet程序回传html ...