乐趣区

关于腾讯云:腾讯云-Serverless-支撑新东方核心业务算力资源

谈起 Serverless 计算,在技术圈热度很高 —— 所有人都在说 Serverless,大家都宣称在做 Serverless,但每个 Serverless 又不一样。咱们不禁想问,Serverless 是不是只是一个炒热度的空洞热门词?

其实不然,Serverless 作为一种更易用、低成本、免运维的通用计算服务,曾经在互联网外围业务中承当重要的算力角色,实用于各种计算利用场景。也正是因为其作为通用计算撑持,场景泛滥,业内应用 Serverless 计算的场景笼罩宽泛,随处可见。

纵观国内 Serverless 畛域,腾讯云 Serverless 已在泛滥互联网计算服务场景中施展重要的作用。腾讯云 Serverless 技术已广泛应用于数百家企业,成为企业外围业务的撑持,是早曾经成熟的技术。咱们熟知的 58 短信、百视通、新东方、腾讯地图等企业的视频转码计算的业务,曾经齐全基于腾讯云 Serverless 计算服务撑持。

在新东方的外围业务 —— 课程视频转码计算的业务中,曾经基于腾讯云 Serverless 计算服务落地。个别的业务场景对资源的需要通常有两类,一类是计算密集型,须要弱小的计算力反对;一类是 I/O 密集型,偏重于网络和存储。对于新东方来说,随着在线教育行业的炽热,线上教育正逐步成为新东方的外围业务。而新东方的外围业务中的视频转码局部就是计算密集型业务,须要性能弱小又经济耐用的算力解决方案。

背景

在视频利用、社交利用等场景下,用户上传的图片、音视频的总量大、频率高,对解决零碎的实时性和并发能力都有较高的要求。传统的容器服务,须要用户本人保护容器集群,弹性伸缩效率较低。

如果应用腾讯云 Serverless 云函数,当用户上传的视频短片,能够应用多个云函数对其别离解决,对应不同的清晰度, 例如:1080p、720p 等,能够满足不同场景下用户的需要,同时,也满足挪动网络带宽较小且不稳固的个性。

腾讯云 Serverless 云函数在视频利用、社交利用等场景下的外围价值:

  1. 高效整合:凭借云函数 (SCF) 的弱小联动能力,将视频上传、视频解决、图片解决、存储场景有机地整合为一体。
  2. 灵活处理:用户能够自定义转码函数,帮忙客户疾速搭建定制化工作解决能力,补救以后独自云服务的性能盲点。
  3. 平滑迁徙:能够把 ffmpeg 业务不便地从物理机、云主机或容器中移植到云函数。
  4. 老本低廉:腾讯云首发 1 毫秒计费粒度,真正实现了按理论用量计费,绝对传统计算服务,帮忙用户取得显著的老本劣势。

运行原理

应用云函数 + ffmpeg 和 COS 联动做音视频转码的运行原理如下图:

比照劣势(和传统容器服务)

如上图所示:在实现方面,两者差异不大;开发流程上,云函数更加简略高效;云函数自带能力较欠缺,如果须要对接自建平台,起 agent 不如容器计划简略。在运维方面,云函数更加易用和省心,在费用方面,云函数相比容器服务可节俭费用 30% 以上。

应用腾讯云 Serverless 云函数实现音视频转码服务的劣势:

  • 云函数提供规范运行环境,并且保障资源的高可用和弹性伸缩,无需专人保护;
  • 云函数基于理论业务耗费免费,不存在资源节约;
  • 云函数的开发调试流程效率会更加高效,依赖和业务解耦,能够别离独自更新,反对实时热更新;
  • 运行环境隔离,单次申请失败不影响其余申请的失常执行。

当然,当现有业务引入云函数时,须要留神以下两点:

  • 云函数的引入,须要对接现有 CI/CD 流程,开发方式上有肯定的转变;
  • 现有业务代码须要做肯定的革新:次要在 ffmpeg 的编包上(云函数能够提供编包工具、提供相干)。

客户案例:新东方

上面咱们以新东方为例,看看新东方是如何实现业务迁徙,应用腾讯云 Serverless 云函数的。

背景

在每年暑期的时候,都会有大量的学生在新东方的平台学习。以前新东方都是在自建的机房里基于服务器和 NFS 来实现音视频课程的存储和转码逻辑。然而因为暑期流量比拟大,IDC 里的服务器不肯定能满足计算需要,同时自建服务的硬件洽购周期较长,于是冀望寻找一种弹性的办法,既可能反对疾速业务部署,又能高效的实现转码性能。

过程实现

凭借腾讯云云函数 (SCF) 的弱小联动能力,新东方将视频上传、视频解决、图片解决、存储场景有机地整合为一体。腾讯云 Serverless 云函数反对自定义转码函数,帮忙新东方疾速搭建定制化工作解决能力,补救以后独自云服务的性能盲点,把 ffmpeg 业务不便地从物理机、云主机或容器中移植到云函数。

技术计划上,在云上采纳云函数 + COS 的形式,能够反对弹性伸缩,即便把本地流量全副切到云上,也能有全副承载。那么新的业务流程,就会退出任务调度模块,当业务流量过去的时候,能够主动或者手动把流量别离导入自研服务和云上服务,并在流程里退出了很多高可用的技术,比方通过工作 TraceID 进行全链路追踪、云端计算失败本地从新计算一次等。新的计划里,云端服务开发起来很简略,且不须要投入太多的运维精力。

最初,费用方面绝对也很低,用多少付多少的云函数计费形式,帮忙新东方节俭了老本。

部署实际

上面通过一个简略的实际 Demo,一起来体验一下吧!

前置条件

以广州地区为例:

  1. 提前在对象存储管制台上创立好 COS Bucket,Bucket 权限设置为私有读公有写。
  2. (可选)提前在文件存储管制台上开明 CFS 服务(当视频文件大于 500MB 时须要用到),用于扩大云函数的本地存储空间。
  3. 登录拜访治理控制台,新建云函数的运行角色,授予该角色 COS 的读写权限、CFS 的读写权限,用于受权云函数拜访相应服务。

参考文档

  • CFS 配置及应用文档可参考:挂载 CFS 文件系统,如果视频文件小于 500MB,能够不必操作该步骤。
  • 云函数运行角色应用阐明可参考:创立函数运行角色。

1. 创立云函数

登录云函数控制台,抉择地区后,新建函数,抉择运行环境 Python 3.6,搜寻「转码」,选中模板函数后,点击「下一步」。

在页面开端左下方,点击「高级设置」

配置环境变量,并启用运行角色。
target_bucket:转码后的视频,上传到已创立好的对象存储 bucket 中。
target_path: 转码后的视频,上传到 bucket 的指定目录中。
运行角色:云函数在运行时,会应用运行角色换取长期秘钥,操作读取和写入 COS Bucket 的资源。

点击「实现」,实现函数创立。

2. 创立 COS Bucket 触发器

在函数侧边栏「触发器治理」,创立 COS Bucket 触发器,如果用的同一个 Bucket 存储源视频和转码后的视频,肯定要在触发器这里配置前缀过滤规定,如 demo/。

3. 配置 CFS 挂载(可选)

如果曾经开明了 CFS 挂载服务,则能够在侧边栏「函数治理」->「函数配置」-> 编辑,同时启用公有网络和文件系统挂载能力。如果启用了 CFS 挂载,则须要在代码中批改文件上传门路,正文掉 76 行代码,增加 77 行,把 /tmp/new- 改成 /mnt/new-,如下所示:

测试性能

在 COS 控制台对应的 Bucket 目录下,上传视频文件,并到对应的转码目录下查看是否生成压缩的视频文件。

依据视频大小不同,压缩工夫也不同,如果视频过大,压缩工夫会比拟久,须要较长的工夫能力查看到新视频。

在云函数控制台查看函数运行日志,如下:

在函数管制台上还能够查看监控和配置告警,如下:

扩大能力

基于本 Demo,还能够扩大反对自动化 CDN 刷新 / 预热的能力,比方转码后的视频在回传 COS Bucket 时,还能够触发新函数执行 CDN 刷新 / 预热性能,该性能能够在 COS 管制台上一键开启。

ffmpeg 是十分弱小的转码工具,除了转码、视频压缩等,还能够做视频切片等,通过批改代码里的命令参数,能够十分不便的实现该能力。甚至和云上的 AI 接口联合,实现视频加字幕等性能。

感兴趣的同学还能够借助云函数的高并发能力,实现疾速转码或者切片性能。如函数 A 做任务调度,函数 B 做理论的转码 / 切片工作。这里能够借助 CFS 挂载能力,轻松实现跨函数的文件共享性能。

One More Thing

立刻体验腾讯云 Serverless Demo,获取收费试用额度 ???? serverless/start

欢送拜访:Serverless 中文网!

退出移动版