{"componentChunkName":"component---src-templates-best-practice-detail-tsx","path":"/best-practice/2020-08-04-serverless-xindongfang","result":{"data":{"currentBlog":{"id":"6d507007-0b1d-550a-b9b6-91c027567053","frontmatter":{"thumbnail":"https://img.serverlesscloud.cn/202084/1596530264670-1596526072902-%E7%AE%97%E5%8A%9B.jpg","authors":["Mason"],"categories":["best-practice"],"date":"2020-08-04T00:00:00.000Z","title":"腾讯云 Serverless 支撑「新东方」核心业务算力资源","description":"腾讯云 Serverless 无服务器计算，强计算型核心业务的算力保障。","authorslink":null,"translators":null,"translatorslink":null,"tags":["ffmpeg","Serverless"],"keywords":"Serverless, Serverless Framework","outdated":null},"wordCount":{"words":418,"sentences":67,"paragraphs":67},"fileAbsolutePath":"/opt/build/repo/content/best-practice/2020-08-04-serverless-xindongfang.md","fields":{"slug":"/best-practice/2020-08-04-serverless-xindongfang/","keywords":["serverless","云函数","函数","转码","Serverless","视频","serverlesscloud","新东方"]},"html":"<p>谈起 Serverless 计算，在技术圈热度很高 —— 所有人都在说 Serverless，大家都声称在做 Serverless，但每个 Serverless 又不一样。我们不禁想问，Serverless 是不是只是一个炒热度的空洞热门词？</p>\n<p>其实不然，Serverless 作为一种更易用、低成本、免运维的通用计算服务，已经在互联网核心业务中承担重要的算力角色，适用于各种计算应用场景。也正是因为其作为通用计算支撑，场景众多，业内使用 Serverless 计算的场景覆盖广泛，随处可见。</p>\n<p>纵观国内 Serverless 领域，腾讯云 Serverless 已在众多互联网计算服务场景中发挥重要的作用。腾讯云 Serverless 技术已广泛应用于数百家企业，成为企业核心业务的支撑，是早已经成熟的技术。我们熟知的 58 短信、百视通、新东方、腾讯地图等企业的视频转码计算的业务，已经完全基于腾讯云 Serverless 计算服务支撑。</p>\n<p>在新东方的核心业务 —— 课程视频转码计算的业务中，已经基于腾讯云 Serverless 计算服务落地。一般的业务场景对资源的需求通常有两类，一类是计算密集型，需要强大的计算力支持；一类是 I/O 密集型，偏重于网络和存储。对于新东方来说，随着在线教育行业的火热，线上教育正逐渐成为新东方的核心业务。而新东方的核心业务中的视频转码部分就是计算密集型业务，需要性能强大又经济耐用的算力解决方案。</p>\n<h2 id=\"背景\"><a href=\"#%E8%83%8C%E6%99%AF\" aria-label=\"背景 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>背景</h2>\n<p>在视频应用、社交应用等场景下，用户上传的图片、音视频的总量大、频率高，对处理系统的实时性和并发能力都有较高的要求。传统的容器服务，需要用户自己维护容器集群，弹性伸缩效率较低。</p>\n<p>如果使用腾讯云 Serverless 云函数，当用户上传的视频短片，可以使用多个云函数对其分别处理，对应不同的清晰度,例如：1080p、720p 等，可以满足不同场景下用户的需求，同时，也满足移动网络带宽较小且不稳定的特性。</p>\n<p>腾讯云 Serverless 云函数在视频应用、社交应用等场景下的核心价值：</p>\n<ol>\n<li>高效整合：凭借云函数(SCF)的强大联动能力，将视频上传、视频处理、图片处理、存储场景有机地整合为一体。</li>\n<li>灵活处理：用户可以自定义转码函数，帮助客户快速搭建定制化任务处理能力，弥补当前单独云服务的功能盲点。</li>\n<li>平滑迁移：可以把 ffmpeg 业务方便地从物理机、云主机或容器中移植到云函数。</li>\n<li>成本低廉：腾讯云首发 1 毫秒计费粒度，真正实现了按实际用量计费，相对传统计算服务，帮助用户获得显著的成本优势。</li>\n</ol>\n<h2 id=\"运行原理\"><a href=\"#%E8%BF%90%E8%A1%8C%E5%8E%9F%E7%90%86\" aria-label=\"运行原理 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>运行原理</h2>\n<p>使用云函数 + ffmpeg 和 COS 联动做音视频转码的运行原理如下图：</p>\n<p><img src=\"https://img.serverlesscloud.cn/202083/1596455043470-1596200528483-4a3a6cd0b2dafafc.png\"></p>\n<p>对比优势（和传统容器服务）</p>\n<p><img src=\"https://img.serverlesscloud.cn/202083/1596455087429-1596200446750-5303da097ed5a371.png\"></p>\n<p>如上图所示：在实现方面，两者差别不大；开发流程上，云函数更加简单高效；云函数自带能力较完善，如果需要对接自建平台，起 agent 不如容器方案简单。在运维方面，云函数更加易用和省心，在费用方面，云函数相比容器服务可节省费用 30% 以上。</p>\n<p>使用腾讯云 Serverless 云函数实现音视频转码服务的优势：</p>\n<ul>\n<li>云函数提供标准运行环境，并且保障资源的高可用和弹性伸缩，无需专人维护；</li>\n<li>云函数基于实际业务消耗收费，不存在资源浪费；</li>\n<li>云函数的开发调试流程效率会更加高效，依赖和业务解耦，可以分别单独更新，支持实时热更新；</li>\n<li>运行环境隔离，单次请求失败不影响其他请求的正常执行。</li>\n</ul>\n<p>当然，当现有业务引入云函数时，需要注意以下两点：</p>\n<ul>\n<li>云函数的引入，需要对接现有 CI/CD 流程，开发方式上有一定的转变；</li>\n<li>现有业务代码需要做一定的改造：主要在 ffmpeg 的编包上（云函数可以提供编包工具、提供相关）。</li>\n</ul>\n<h2 id=\"客户案例：新东方\"><a href=\"#%E5%AE%A2%E6%88%B7%E6%A1%88%E4%BE%8B%EF%BC%9A%E6%96%B0%E4%B8%9C%E6%96%B9\" aria-label=\"客户案例：新东方 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>客户案例：新东方</h2>\n<p>下面我们以新东方为例，看看新东方是如何实现业务迁移，使用腾讯云 Serverless 云函数的。</p>\n<h3 id=\"背景-1\"><a href=\"#%E8%83%8C%E6%99%AF-1\" aria-label=\"背景 1 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>背景</h3>\n<p>在每年暑期的时候，都会有大量的学生在新东方的平台学习。以前新东方都是在自建的机房里基于服务器和 NFS 来实现音视频课程的存储和转码逻辑。但是由于暑期流量比较大，IDC 里的服务器不一定能满足计算需求，同时自建服务的硬件采购周期较长，于是期望寻找一种弹性的方法，既能够支持快速业务部署，又能高效的完成转码功能。</p>\n<h3 id=\"过程实现\"><a href=\"#%E8%BF%87%E7%A8%8B%E5%AE%9E%E7%8E%B0\" aria-label=\"过程实现 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>过程实现</h3>\n<p>凭借腾讯云云函数 (SCF) 的强大联动能力，新东方将视频上传、视频处理、图片处理、存储场景有机地整合为一体。腾讯云Serverless 云函数支持自定义转码函数，帮助新东方快速搭建定制化任务处理能力，弥补当前单独云服务的功能盲点，把 ffmpeg 业务方便地从物理机、云主机或容器中移植到云函数。</p>\n<p>技术方案上，在云上采用云函数+ COS 的方式，可以支持弹性伸缩，即使把本地流量全部切到云上，也能有全部承载。那么新的业务流程，就会加入任务调度模块，当业务流量过来的时候，可以自动或者手动把流量分别导入自研服务和云上服务，并在流程里加入了很多高可用的技术，比如通过任务 TraceID 进行全链路追踪、云端计算失败本地重新计算一次等。新的方案里，云端服务开发起来很简单，且不需要投入太多的运维精力。</p>\n<p>最后，费用方面相对也很低，用多少付多少的云函数计费方式，帮助新东方节省了成本。</p>\n<h2 id=\"部署实践\"><a href=\"#%E9%83%A8%E7%BD%B2%E5%AE%9E%E8%B7%B5\" aria-label=\"部署实践 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>部署实践</h2>\n<p>下面通过一个简单的实践 Demo ，一起来体验一下吧！</p>\n<h3 id=\"前置条件\"><a href=\"#%E5%89%8D%E7%BD%AE%E6%9D%A1%E4%BB%B6\" aria-label=\"前置条件 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>前置条件</h3>\n<p>以广州地域为例：</p>\n<ol>\n<li>提前在对象存储控制台上创建好 COS Bucket，Bucket 权限设置为公有读私有写。</li>\n<li>（可选）提前在文件存储控制台上开通 CFS 服务（当视频文件大于 500MB 时需要用到），用于扩展云函数的本地存储空间。</li>\n<li>登录访问管理控制台，新建云函数的运行角色，授予该角色 COS 的读写权限、CFS 的读写权限，用于授权云函数访问相应服务。</li>\n</ol>\n<blockquote>\n<p>参考文档</p>\n<ul>\n<li>CFS 配置及使用文档可参考：<a href=\"https://cloud.tencent.com/document/product/583/46199?from=10680\">挂载 CFS 文件系统</a>，如果视频文件小于 500MB ，可以不用操作该步骤。</li>\n<li>云函数运行角色使用说明可参考：<a href=\"https://cloud.tencent.com/document/product/583/41755?from=10680\">创建函数运行角色</a>。</li>\n</ul>\n</blockquote>\n<h3 id=\"1-创建云函数\"><a href=\"#1-%E5%88%9B%E5%BB%BA%E4%BA%91%E5%87%BD%E6%95%B0\" aria-label=\"1 创建云函数 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>1. 创建云函数</h3>\n<p>登录云函数控制台，选择地域后，新建函数，选择运行环境 Python 3.6，搜索「转码」，选中模板函数后，点击「下一步」。</p>\n<p><img src=\"https://img.serverlesscloud.cn/202083/1596455051653-10.png\"></p>\n<p>在页面末尾左下方，点击「高级设置」</p>\n<p>配置环境变量，并启用运行角色。\ntarget<em>bucket：转码后的视频，上传到已创建好的对象存储 bucket 中。\ntarget</em>path: 转码后的视频，上传到 bucket 的指定目录中。\n运行角色：云函数在运行时，会使用运行角色换取临时秘钥，操作读取和写入 COS Bucket 的资源。</p>\n<p><img src=\"https://img.serverlesscloud.cn/202083/1596455051504-10.png\"></p>\n<p>点击「完成」，完成函数创建。</p>\n<h3 id=\"2-创建-cos-bucket-触发器\"><a href=\"#2-%E5%88%9B%E5%BB%BA-cos-bucket-%E8%A7%A6%E5%8F%91%E5%99%A8\" aria-label=\"2 创建 cos bucket 触发器 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>2. 创建 COS Bucket 触发器</h3>\n<p>在函数侧边栏「触发器管理」，创建 COS Bucket 触发器，如果用的同一个 Bucket 存储源视频和转码后的视频，一定要在触发器这里配置前缀过滤规则，如 demo/。</p>\n<p><img src=\"https://img.serverlesscloud.cn/202083/1596455051551-10.png\"></p>\n<h3 id=\"3-配置-cfs-挂载（可选\"><a href=\"#3-%E9%85%8D%E7%BD%AE-cfs-%E6%8C%82%E8%BD%BD%EF%BC%88%E5%8F%AF%E9%80%89\" aria-label=\"3 配置 cfs 挂载（可选 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>3. 配置 CFS 挂载（可选)</h3>\n<p>如果已经开通了 CFS 挂载服务，则可以在侧边栏「函数管理」->「函数配置」-> 编辑，同时启用私有网络和文件系统挂载能力。如果启用了 CFS 挂载，则需要在代码中修改文件上传路径，注释掉 76 行代码，添加 77 行，把 <code class=\"language-text\">/tmp/new-</code> 改成 <code class=\"language-text\">/mnt/new-</code>，如下所示：</p>\n<p><img src=\"https://img.serverlesscloud.cn/202083/1596455051637-10.png\"></p>\n<h3 id=\"测试功能\"><a href=\"#%E6%B5%8B%E8%AF%95%E5%8A%9F%E8%83%BD\" aria-label=\"测试功能 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>测试功能</h3>\n<p>在 COS 控制台对应的 Bucket 目录下，上传视频文件，并到对应的转码目录下查看是否生成压缩的视频文件。</p>\n<p>根据视频大小不同，压缩时间也不同，如果视频过大，压缩时间会比较久，需要较长的时间才能查看到新视频。</p>\n<p><img src=\"https://img.serverlesscloud.cn/202083/1596455051609-10.png\"></p>\n<p><img src=\"https://img.serverlesscloud.cn/202083/1596455641403-0cietqbklf.png\"></p>\n<p>在云函数控制台查看函数运行日志，如下：</p>\n<p><img src=\"https://img.serverlesscloud.cn/202083/1596455051839-10.png\"></p>\n<p>在函数控制台上还可以查看监控和配置告警，如下：</p>\n<p><img src=\"https://img.serverlesscloud.cn/202083/1596455053587-10.png\"></p>\n<h3 id=\"扩展能力\"><a href=\"#%E6%89%A9%E5%B1%95%E8%83%BD%E5%8A%9B\" aria-label=\"扩展能力 permalink\" class=\"anchor\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>扩展能力</h3>\n<p>基于本 Demo，还可以扩展支持自动化 CDN 刷新/预热的能力，比如转码后的视频在回传 COS Bucket 时，还可以触发新函数执行 CDN 刷新/预热功能，该功能可以在 COS 控制台上<a href=\"https://cloud.tencent.com/document/product/436/45597?from=10680\">一键开启</a>。</p>\n<p>ffmpeg 是非常强大的转码工具，除了转码、视频压缩等，还可以做视频切片等，通过修改代码里的命令参数，可以非常方便的实现该能力。甚至和云上的 AI 接口结合，实现视频加字幕等功能。</p>\n<p>感兴趣的同学还可以借助云函数的高并发能力，实现快速转码或者切片功能。如函数 A 做任务调度，函数 B 做实际的转码/切片工作。这里可以借助 CFS 挂载能力，轻松实现跨函数的文件共享功能。</p>\n<hr>\n<hr>\n<div id='scf-deploy-iframe-or-md'></div>\n<hr>\n<blockquote>\n<p><strong>传送门：</strong></p>\n<ul>\n<li>GitHub: <a href=\"https://github.com/serverless/serverless/blob/master/README_CN.md\">github.com/serverless</a></li>\n<li>官网：<a href=\"https://serverless.com/\">serverless.com</a></li>\n</ul>\n</blockquote>\n<p>欢迎访问：<a href=\"https://serverlesscloud.cn/\">Serverless 中文网</a>，您可以在 <a href=\"https://serverlesscloud.cn/best-practice\">最佳实践</a> 里体验更多关于 Serverless 应用的开发！</p>","tableOfContents":"<ul>\n<li><a href=\"/best-practice/2020-08-04-serverless-xindongfang/#%E8%83%8C%E6%99%AF\">背景</a></li>\n<li><a href=\"/best-practice/2020-08-04-serverless-xindongfang/#%E8%BF%90%E8%A1%8C%E5%8E%9F%E7%90%86\">运行原理</a></li>\n<li>\n<p><a href=\"/best-practice/2020-08-04-serverless-xindongfang/#%E5%AE%A2%E6%88%B7%E6%A1%88%E4%BE%8B%EF%BC%9A%E6%96%B0%E4%B8%9C%E6%96%B9\">客户案例：新东方</a></p>\n<ul>\n<li><a href=\"/best-practice/2020-08-04-serverless-xindongfang/#%E8%83%8C%E6%99%AF-1\">背景</a></li>\n<li><a href=\"/best-practice/2020-08-04-serverless-xindongfang/#%E8%BF%87%E7%A8%8B%E5%AE%9E%E7%8E%B0\">过程实现</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/best-practice/2020-08-04-serverless-xindongfang/#%E9%83%A8%E7%BD%B2%E5%AE%9E%E8%B7%B5\">部署实践</a></p>\n<ul>\n<li><a href=\"/best-practice/2020-08-04-serverless-xindongfang/#%E5%89%8D%E7%BD%AE%E6%9D%A1%E4%BB%B6\">前置条件</a></li>\n<li><a href=\"/best-practice/2020-08-04-serverless-xindongfang/#1-%E5%88%9B%E5%BB%BA%E4%BA%91%E5%87%BD%E6%95%B0\">1. 创建云函数</a></li>\n<li><a href=\"/best-practice/2020-08-04-serverless-xindongfang/#2-%E5%88%9B%E5%BB%BA-cos-bucket-%E8%A7%A6%E5%8F%91%E5%99%A8\">2. 创建 COS Bucket 触发器</a></li>\n<li><a href=\"/best-practice/2020-08-04-serverless-xindongfang/#3-%E9%85%8D%E7%BD%AE-cfs-%E6%8C%82%E8%BD%BD%EF%BC%88%E5%8F%AF%E9%80%89\">3. 配置 CFS 挂载（可选)</a></li>\n<li><a href=\"/best-practice/2020-08-04-serverless-xindongfang/#%E6%B5%8B%E8%AF%95%E5%8A%9F%E8%83%BD\">测试功能</a></li>\n<li><a href=\"/best-practice/2020-08-04-serverless-xindongfang/#%E6%89%A9%E5%B1%95%E8%83%BD%E5%8A%9B\">扩展能力</a></li>\n</ul>\n</li>\n</ul>"},"previousBlog":{"id":"d2255c44-05c8-5daa-b9fa-d3bdf84b36ce","frontmatter":{"thumbnail":"https://img.serverlesscloud.cn/202087/1596785478341-%E4%B8%89%E8%A1%8C_%E7%B4%AB%E8%89%B2.jpg","authors":["Mason"],"categories":["best-practice"],"date":"2020-08-06T00:00:00.000Z","title":"腾讯云 Serverless 云函数实现 CKafka 数据转存到 ES","description":"内附部署实战步骤，欢迎体验！","authorslink":null,"translators":null,"translatorslink":null,"tags":["CKafka","ES"],"keywords":"Serverless, Serverless Framework, CKafka","outdated":null},"wordCount":{"words":204,"sentences":51,"paragraphs":51},"fileAbsolutePath":"/opt/build/repo/content/best-practice/2020-08-07-ckafka.md","fields":{"slug":"/best-practice/2020-08-07-ckafka/","keywords":["serverless","无服务器","云函数","函数","Ckafka","serverlesscloud"]}},"nextBlog":{"id":"40b4ebd6-7c3e-5418-9203-3222d32b7b90","frontmatter":{"thumbnail":"https://img.serverlesscloud.cn/2020731/1596192531300-1596186208253-%E4%BC%81%E4%B8%9A%E5%BE%AE%E4%BF%A1%E6%88%AA%E5%9B%BE_15961861933543.jpg","authors":["粟俊娥"],"categories":["best-practice"],"date":"2020-07-31T00:00:00.000Z","title":"腾讯云 Serverless CI/CD 自动化部署实战","description":"本文将为大家讲解 Serverless 工作原理、架构优势和 Serverless 应用的开发流程，以及如何使用 Serverless CI/CD 能力进行自动化部署。","authorslink":["https://github.com/June1991"],"translators":null,"translatorslink":null,"tags":["CI/CD","Meetup"],"keywords":"Serverless, ServerlessDays, Serverless DevOps","outdated":null},"wordCount":{"words":246,"sentences":47,"paragraphs":47},"fileAbsolutePath":"/opt/build/repo/content/best-practice/2020-07-31-serverless-cicd.md","fields":{"slug":"/best-practice/2020-07-31-serverless-cicd/","keywords":["serverless","无服务器","云函数","Serverless","开发","serverless","部署","video"]}}},"pageContext":{"isCreatedByStatefulCreatePages":false,"blogId":"6d507007-0b1d-550a-b9b6-91c027567053","previousBlogId":"d2255c44-05c8-5daa-b9fa-d3bdf84b36ce","nextBlogId":"40b4ebd6-7c3e-5418-9203-3222d32b7b90"}}}