谈起 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 支撑「新东方」核心业务算力资源相关推荐

  1. 案例 | 沃尔玛 x 腾讯云 Serverless 应用实践,全力保障消费者购物体验

    深耕零售,没有比中国更好的地方,也没有比现在更好的时间.1996 年,国际零售巨头沃尔玛进入中国,在深圳开设了第一家山姆会员商店.25 年后的今天,山姆会员商店拥有 数百万付费会员,成为 国内遥遥领先 ...

  2. 沃尔玛腾讯云 Serverless 应用实践,全力保障消费者购物体验

    深耕零售,没有比中国更好的地方,也没有比现在更好的时间.1996 年,国际零售巨头沃尔玛进入中国,在深圳开设了第一家山姆会员商店.25 年后的今天,山姆会员商店拥有 数百万付费会员,成为国内遥遥领先的 ...

  3. wordcount代码_通过腾讯云 Serverless Regsitry 快速开发与部署一个 WordCount 实例

    在学习 MapReduce 的过程中,不少人接触的第一个项目就是单词计数.单词计数通过两个函数 Map 和 Reduce,可以快速地统计出文本文件中每个单词出现的个数,它虽然简单,但也是最能体现 Ma ...

  4. 腾讯云 Serverless Stable Diffusion 应用免费名额限量放送,试用申请开启!

    近半年,AIGC 领域惊喜接踵而至.除了 Chatgpt,在AI绘图方面 Stable Diffusion 也大放异彩.网上的教程五花八门,有很多小伙伴根本不知如何下手,苦不堪言. 现在腾讯云 Ser ...

  5. 谷歌公布云游戏平台「Stadia」 预计2019年上线

    在今天举行的 GDC 演讲上,谷歌正式公布了此前预告已久的全新云游戏平台「Stadia」.谷歌称这是一个不受硬件限制,能够将全世界所有玩家真正聚在一起的,随时随地游玩任何游戏的新服务. 「Stadia ...

  6. 营收下滑,腾讯游戏还能保持「王者」地位吗?

    作者 | 曾响铃 文 | 响铃说 国内游戏市场,面临发展瓶颈.腾讯游戏这个「行业巨头」也未能幸免. 最新财报数据显示,二季度腾讯游戏本土与海外市场总营收约为425亿,相比去年同期(营收430亿)和今年 ...

  7. 腾讯云技术复盘「数据丢失事件」,为什么业务上云还要再做云备份?

    众多惨痛的云事故告诉了我们一个几乎无法规避的现实,那就是云也会宕机,也会丢失数据-. [CSDN 编者按]近两日,因腾讯云损坏了北京一家创业公司的文件系统元数据,导致后者的业务经营.甚至融资进程,都受 ...

  8. 腾讯自研HIDS「洋葱」后台上云架构演进实践

    腾讯洋葱EDR团队 Louis.Jaylam 导语 "洋葱"系统是腾讯自研的主机入侵检测系统(HIDS),能够实时采集服务器上的各种行为并进行实时关联分析和落地存储,承载公司所有的 ...

  9. 【SCF CLI实践】腾讯云serverless + 企业微信群机器人,轻松解决告警通知问题

    市面上有什么好用的从服务器推报警和日志的工具?之前私下用的是[Server酱]的服务,非常方便. 但是考虑到安全原因,这个服务如果用在生产环境心里还是有点慌(虽然我相信Server酱是很有节操的). ...

最新文章

  1. FPGA之道(40)HDL的语法结构
  2. Learning hard C#学习笔记 孤军深入
  3. Fiddler本机调试的方法
  4. Vue 单文件元件 — vTabs
  5. IT增值服务实践心得体会:企业客户的钱比个人客户好赚得多
  6. java调用webservice_笃学私教:Java开发网站架构演变过程-从单体应用到微服务架构详解...
  7. 【转载】#323 - A Generic Class is a Template for a Class
  8. Redis学习笔记(三)
  9. 蓝桥杯 BASIC-7 基础练习 特殊的数字
  10. Unity——浅谈AB包(AssetBundle)
  11. 【持续更新】1996-2022历代AMD Radeon桌面显卡列表,Radeon显卡发布日期
  12. ES新语法ES7、ES8、ES9、ES10新特性
  13. 用什么擦地最干净脑筋急转弯_100个脑筋急转弯,很多人困在了第8题,赶快考考孩子吧...
  14. 第三次个人作业——关于K米(Andorid)的案例分析
  15. 文献标识码与参考文献
  16. Vim文件和日历操作
  17. 黎想深度访谈腾讯顶级产品经理的进阶之路——第五篇《匠心》
  18. python24点游戏
  19. C++ 中read和write函数
  20. tl-wdr7300虚拟服务器怎么设置,TP-Link TL-WDR7300路由器无线桥接怎么设置?

热门文章

  1. 操作系统:虚拟地址翻译为物理地址的过程
  2. 已解决:火狐浏览器书签工具栏添加有道云笔记网页剪报
  3. Java-公交车行驶(★☆☆☆☆)
  4. 武汉大学计算机学院乒乓球室,武汉大学2018年研究生乒乓球比赛报名
  5. python变量隔一个数取出来_Python(二):变量、常量,字符串操作
  6. 期待美的风扇带给我们幼时的自然风_三木_新浪博客
  7. labuladong的一些刷题记录
  8. booth乘法器 c语言,二进制乘法器的FPGA实现(常规和Booth乘法器)
  9. 自控原理与计算机控制实验系统
  10. python 分类 投票_邻居来投票:机器学习之快速掌握K-近邻算法分类(Python实战)...