在计算资源的调度上 , 函数计算进行了大量优化 , 面对用户请求的突增 , 可以在毫秒级拉起大量的计算资源来并行工作 , 确保用户体验 。
通过函数计算进行视频处理基于函数计算的特性 , 搭建一套视频处理系统就非常简单 , 只需要配置一个OSS触发器 , 并将视频处理的核心代码上传到函数计算 , 就大功告成:

文章插图
通过这套方案 , 使用者不再需要考虑资源管理、负载均衡、系统高可用、弹性伸缩、系统监控等一系列复杂的问题 , 函数计算平台会按最优的方式根据用户的上传行为调度计算资源 , 低成本高效率的完成视频处理任务 。具体的操作步骤和代码实现可以参考视频处理Python实现Demo , 在这个Demo中 , 演示了如何基于函数计算将用户上传的视频统一转为640 * 480分辨率的mp4格式视频 。
代码开发每一个创建好的函数都会对应一个指定的入口 , 函数计算会从这个函数入口开始执行 , 类似于本地开发中的Main()函数 。以Python语言为列 , 一个简单的入口函数如下:
def handler(event, context):return 'hello world'当有事件触发的时候 , 就会从入口函数开始执行 , 其中event参数携带了事件源相关的信息 , 比如在视频处理场景中 , event参数携带了上传到OSS的Bucket以及文件名等信息 。而context参数携带了函数的运行信息 , 包括函数名、超时时间、访问凭证等 。通过这些信息 , 就能让执行代码完成预定义的各种操作 。函数计算支持各种主流的编程语言 , 在这个编程语言当中 , Node.js和Python等脚本型语言含了丰富的类库 , 开发效率很高 , 而且运算实例启动的速度很快 , 能够支持对延迟特别敏感的任务 , 是函数计算最匹配的语言 。JAVA和Go等语言不能像脚本型语言一样直接上传代码就能创建一个函数 , 需要预先进行编译 , 使用起来会稍微复杂一些 , 但配合函数计算提供的Funcraft等工具 , 也可以大幅度提升开发和部署的效率 。不管使用哪种开发语言 , 都建议使用者下载官方提供的Funcraft工具 , 更轻松进行开发、构建、部署操作 , 请参考Funcraft 。
像Java这样的语言 , 在虚拟机启动的时候需要加载比较多的类库 , 不能够像实现运算实例毫秒级启动并进入执行状态 , 不能直接使用在一些对于延迟特别敏感的业务场景 。但配合函数计算提供的预留实例以及单实例多并发新功能 , 能够消除冷启动对业务的影响 , 并降低等待下游服务响应的影响 , 让函数计算上运行的Java语言也能实现API网关等对延时要求特别高业务场景 。请参考预留实例和单实例多并发 。
Serverless工作流通过前面介绍的方案 , 可以轻松完成对短视频的各种定制化处理 。但每一个函数计算实例 , 在资源规格上和总运行时长都不是无限的 , 目前函数计算实例可以拥有3G的内存资源和10分钟的执行时间 , 这也就说明 , 当一个视频处理任务需要占用3G以上的系统内存 , 或者总执行时长超过10分钟的情况下 , 处理任务是会失败的 。
在5G时代 , 超大视频课件是非常普遍的需求 , 如何通过函数计算处理这样的大视频呢?这个时候就要出动另一个武器---Serverless工作流 , 来配合函数计算一起完成这个任务 。
Serverless 工作流是一个用来协调多个分布式任务执行的全托管云服务 。您可以用顺序、选择、并行等方式来编排分布式任务 , Serverless 工作流会按照设定好的步骤可靠地协调任务执行 , 跟踪每个步骤的状态转换 , 并在必要时执行用户定义的重试逻辑 , 以确保工作流顺利完成 。Serverless 工作流通过提供日志记录和审计来监视工作流的执行 , 方便您轻松地诊断和调试应用 。

文章插图
您可以使用 Serverless 工作流编排一系列的函数资源 , 同时定义流程中每一步的输入和输出 , 使用内置控制步骤编排复杂逻辑、发起并行执行、管理超时或终止流程 。另外通过控制台能够使用图形界面显示出执行任务状态和执行顺序 , 同时控制台会显示每个步骤的实时状态 , 并提供每次执行的详细历史记录 。通过Serverless工作流 + 函数计算的组合 , 我们可以突破时间和空间的限制 , 对任意大小的视频文件进行复杂的处理 。
推荐阅读
- 用云服务器搭建VPN,构建自己的企业专线
- 如何构建和谐的师生关系
- 教你在几分钟内构建一个Python包
- 新闻个性化推荐系统源码之构建离线用户画像
- Node.js构建 Web 服务
- 全栈开发必备技能:构建RESTful API的13种最佳实践
- 用Python构建个性化智能闹钟
- 如何用Python构建机器学习推荐系统?网易云、爱奇艺也用这种方法
- 亿级 ELK 日志平台构建实践
- GCNN 使用Keras构建具有自定义结构和层次的图卷积神经网络
