Serverless 在大规模数据处理中的实践

来源 | Serverless

作者 | 西流

头图 | 下载于视觉中国

前言

当您第一次接触 Serverless 的时候,有一个不那么明显的新使用方式:与传统的基于服务器的方法相比,Serverless 服务平台可以使您的应用快速水平扩展,并行处理的工作更加有效。这主要是因为 Serverless 可以不必为闲置的资源付费,不用担心预留的资源不够。而在传统的使用范式中,用户必须预留成百上千的服务器来做一些高度并行化但执行时长较短的任务,而且必须为每一台服务器买单,即使有的服务器已经不再工作了。

以阿里云 Serverless 产品——函数计算为例,便可以完美解决您上述所有顾虑:

  • 如果您的任务本身计算量不是很大,但是有大量的并发任务请求需要并行处理, 比如多媒体文件处理、文档转换等;

  • 一个任务本身计算量很大,要求单个任务很快处理完,并且还能支持并行处理多个任务。

在这种场景下,用户唯一关注的就是:您的任务是可以分治拆解并且子任务是可以并行处理的,一个需要一个小时才能处理完的长任务,可以分解成 360 个独立的 10 秒长的子任务并行处理,这样,以前您要花一个小时才能处理完的任务,现在只需要 10 秒就可以搞定。由于采用的是按量计费的模型,完成的计算量和成本是大致相当的,而传统模型则因为预留资源肯定会存在浪费,浪费的费用也是需要您去承担的。

接下来,将详细阐述 Serverless 在大规模数据处理上的实践。

极致弹性扩缩容应对计算波动

在介绍相关的大规模数据处理示例之前, 这里先简单介绍一下函数计算。

1. 函数计算简介

  • 开发者使用编程语言编写应用和服务,函数计算支持的开发语言请参见开发语言列表;

  • 开发者上传应用到函数计算;

  • 触发函数执行:触发方式包括 OSS、API 网关、日志服务、表格存储以及函数计算 API、SDK 等;

  • 动态扩容以响应请求:函数计算可以根据用户请求量自动扩容,该过程对您和您的用户均透明无感知;

  • 根据函数的实际执行时间按量计费:函数执行结束后,可以通过账单来查看执行费用,收费粒度精确到 100 毫秒。

详情:函数计算官网

至此,您大约可以简单理解到函数计算是怎么运作的,接下来以大量视频并行转码的案例来阐述:假设一家在家教育或娱乐相关的企业,老师授课视频或者新的片源一般是集中式产生,而您希望这些视频被快速转码处理完以便能让客户快速看到视频回放。比如在当下疫情中,在线教育产生的课程激增,而出课高峰一般是 10 点、12 点、16 点、18 点等明显的峰值段,特定的时间内(比如半个小时)处理完所有新上传的视频是一个通用而且普遍的需求。

2. 弹性高可用的音视频处理系统

  • OSS 触发器

如上图所示,用户上传一个视频到 OSS,OSS 触发器自动触发函数执行,函数计算自动扩容,执行环境内的函数逻辑调用 FFmpeg 进行视频转码,并且将转码后的视频保存回 OSS。

  • 消息触发器

如上图所示,应用只需要发一个消息,自动触发函数执行音视频处理的任务即可,函数计算自动扩容,执行环境内的函数逻辑调用 FFmpeg 进行视频转码, 并且将转码后的视频保存回 OSS。

  • 直接手动调用 SDK 执行音视频处理任务

以 python 为例,大致如下:

 1python2    # -*- coding: utf-8 -*-3    import fc24    import json56    client = fc2.Client(endpoint="http://123456.cn-hangzhou.fc.aliyuncs.com",accessKeyID="xxxxxxxx",accessKeySecret="yyyyyy")78    # 可选择同步/异步调用9    resp = client.invoke_function("FcOssFFmpeg", "transcode", payload=json.dumps(
10    {
11        "bucket_name" : "test-bucket",
12        "object_key" : "video/inputs/a.flv",
13        "output_dir" : "video/output/a_out.mp4"
14    })).data
15
16    print(resp)

从上面我们也可以看出,触发函数执行的方式也很多,同时简单配置下 SLS 日志,就可以很快实现一个弹性高可用、按量付费的音视频处理系统,同时能提供免运维、具体业务数据可视化、强大自定义监控报警等超强功能的 dashboard。

目前已经落地的音视频案例有 UC、语雀、躺平设计之家、虎扑以及几家在线教育的头部客户等,其中有些客户高峰期间,弹性使用到了万核以上 CPU 计算资源,并行处理的视频达到 1700+,同时提供了极高的性价比。

详情可以参考:

  • simple-video-processing

  • fc-oss-ffmpeg

任务分治,并行加速

这种将任务分而治之的思想应用在函数计算上是一件有趣的事情,在这里举一个例子,比如您有一个超大的 20G 的 1080P 高清视频需要转码,即使您使用一台高配机器,需要的时间可能还是要按小时计,如果中途出问题中断转码,您只能重新开始再重复一遍转码的过程,如果您使用分治的思想+函数计算,转码的过程衍变为 分片-> 并行转码分片-> 合并分片,这样就可以解决您上述的两个痛点:

  • 分片和合成分片是内存级别的拷贝,需要的计算量极小,真正消耗计算量的转码,拆分成了很多子任务并行处理,在这个模型中,分片转码的最大时间基本等同于整个大视频的转码时间;

  • 即使中途某个分片转码出现异常,只需要重试这个分片的转码即可,不需要整个大任务推倒重来。

通过将大任务合理的分解,配合使用函数计算,编写一点 code,就可以快速完成一个弹性高可用、并行加速、按量付费的大型数据处理系统。

在介绍这个方案之前,我们先简单介绍一下 Serverless 工作流,Serverless 工作流可以很好地将函数和其他云服务和自建服务有组织地编排起来。

1. Serverless 工作流简介

Serverless 工作流(Serverless Workflow)是一个用来协调多个分布式任务执行的全托管云服务。在 Serverless 工作流中,您可以用顺序、分支、并行等方式来编排分布式任务,Serverless 工作流会按照设定好的步骤可靠地协调任务执行,跟踪每个任务的状态转换,并在必要时执行用户定义的重试逻辑,以确保工作流顺利完成。Serverless 工作流简化了开发和运行业务流程所需要的任务协调、状态管理以及错误处理等繁琐工作,让您聚焦业务逻辑开发。

详情:Serverless 工作流官网

接下来以一个大视频快速转码的案例来阐述 Serverless 工作编排函数,实现大计算任务的分解,并行处理子任务,最终达到快速完成单个大任务的目的。

2. 大视频的快速多目标格式转码

如下图所示,假设用户上传一个 mov 格式的视频到 OSS,OSS 触发器自动触发函数执行,函数调用 FnF 执行,FnF 同时进行 1 种或者多种格式的转码(由 template.yml 中的 DST_FORMATS 参数控制),假设配置的是同时进行 mp4 和 flv 格式的转码。

  • 一个视频文件可以同时被转码成各种格式以及其他各种自定义处理,比如增加水印处理或者在 after-process 更新信息到数据库等;

  • 当有多个文件同时上传到 OSS,函数计算会自动伸缩,并行处理多个文件,同时每次文件转码成多种格式也是并行;

  • 结合 NAS + 视频切片,可以解决超大视频的转码,对于每一个视频,先进行切片处理,然后并行转码切片,最后合成,通过设置合理的切片时间,可以大大加快较大视频的转码速度;

  • fnf 可以跟踪每一步执行情况,并且可以自定义每一个步骤的重试,提高任务系统的鲁棒性,如:retry-example

详情可以参考:fc-fnf-video-processing

在任务分治,并行加速具体的案例中,上面分享的是 CPU 密集型任务分解,但也可以进行 IO 密集型任务分解,比如这个需求:上海的 region 的 OSS bucket 中的一个 20G 大文件,秒级转存回杭州的 OSS Bucket 中。这里也可以采用分治的思路,Master 函数在接到转存任务之后,将超大文件进行分片的 range 分配给每个 Worker 子函数,Worker 子函数并行转存属于自己那部分的分片,Master 函数待所有子 Worker 运行完毕之后,提交合并分片请求,完成整个转存任务。

详情可以参考:利用函数计算多实例并发实现秒级转存超大文件

总结

本文探讨了 Serverless 服务平台可以使您的应用快速水平扩展,并行处理的工作更加有效,并给出了具体的实践案例,无论在 CPU 密集型还是 IO 密集型场景,函数计算 + Serverless 都能完美解决您以下顾虑:

  • 不必为闲置的资源付费

  • 不用担心计算资源预留不够

  • 大计算量的任务需要快速处理完毕

  • 更好的任务流程跟踪

  • 完善的监控报警、免运维、业务数据可视化等

  • ...

本文中对于 Serverless 音视频处理只是一个示例,它展示的是函数计算配合 Serverless 工作流在离线计算场景中的能力和独一无二的优势。我们可以用发散的方式去拓展 Serverless 在大规模数据处理实践的边界,比如AI、基因计算、科学仿真等。希望本篇文章能吸引您,开启您的 Serverless 奇妙之旅。

更多阅读推荐

  • 看穿容器的外表,Linux容器实现原理演示

  • 用三国杀讲分布式算法,舒适了吧?

  • 云原生体系下的技海浮沉

  • 如何通过 Serverless 轻松识别验证码?

  • 5G与金融行业融合应用的场景探索

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/515715.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

flowable 控制台打印 sql 语句

配置文件中增加如下: logging:level:org.flowable.engine.impl.persistence.entity.*: debugorg.flowable.task.service.impl.persistence.entity.*: debug

阿里宜搭重磅发布专有云版本、精品应用市场,助力政企数字化转型

6月9日,在2020阿里云线上峰会上,“宜搭”重磅发布专有云版本和精品应用市场,为政企数字化转型提供高效、安全、可靠的服务。宜搭是阿里巴巴集团企业智能事业部自研的低代码应用开发PaaS平台,通过可视化拖拽的方式,传统…

系统机构设计师 - 软件质量属性

架构设计风险 潜在的 隐藏的 架构决策导致的隐患 敏感点 一个或多个构件的质量属性,输入方差小时,输出方差很大 权衡点 影响多个质量属性,且这些质量属性都是敏感点的 质量属性。

信息如何实现病毒式传播?一文看懂Gossip协议

来源 | 架构之美责编 | 寇雪芹头图 | 下载于视觉中国起源Gossip protocol 也叫 Epidemic Protocol (流行病协议)。Gossip protocol在1987年8月由施乐-帕洛阿尔托研究中心发表ACM上的论文《Epidemic Algorithms for Replicated Database Maintenance》中被…

勇于尝鲜,感受世界——对话阿里云 MVP黄坤

云栖号资讯:【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 简介: 阿里云 MVP黄坤是个言简意赅的实干家,言谈中显示出的知识广度和技术深度令我钦佩折服&#xff…

Vue中时间日期格式化

封装格式化时间方法 创建一个js文件formatDate.js,内容如下: //方法一 export function formatDate(val) {var date new Date(Number(val)); //时间戳为10位需*1000,时间戳为13位的话不需乘1000var Y date.getFullYear() "-";v…

分布式应用,response导出error on submit request on future invoke、java.lang.OutOfMemoryError: Java heap space

背景 HSF 分布式框架 ,基于EasyExcel 实现excel导出 。 控制层, GET请求 , 传递 HttpServletRequest 和 HttpServletRespose 到,业务中台时,异常 原因 分布式应用下,控制层传递response到中台时&#xf…

阿里云混合云管理平台发布帮您管好云

6月9日, 在2020阿里云线上峰会上阿里云混合云战略正式发布:全栈建云、智能管云、极致用云。同步发布专有云敏捷版(Apsara Stack Agility)、 混合云管理平台(Apsara Uni-manager)以及下一代企业级一站式DevO…

ApiPost6/Postman发送POST请求及日期格式的参数

Postman在发送POST请求的时候,所有参数写在Request Body(请求体)中,如果需要的参数类型的日期格式的,只需要将日期格式写为2000/01/01即可,Postman会自动识别为日期格式的数据。 如果是2000-01-01格式&…

Mendix入局中国低代码,开发者们你准备好了吗

作者 | 宋慧 出品 | CSDN云计算 头图 | 付费下载于视觉中国 在企业级软件与技术领域鼎鼎大名的Gartner魔力象限,几乎是全球公认的IT厂商实力的重要背书,进入魔力象限右上部分的领导者(leaders)更是能力全面的最优质厂商。 2021年…

OpenYurt开箱测评|一键让原生K8s集群具备边缘计算能力

作者| 郑超 阿里云高级开发工程师 随着物联网技术以及 5G 技术的高速发展,将云计算的能力延伸至边缘设备端,并通过中心进行统一交付、管控,已成为云计算的重要发展趋势。为服务更多开发者把握这一趋势,5 月 29 日,阿里…

系统架构设计师 - 主观题总结

文章目录2015软件架构评估系统建模嵌入式可靠性文件系统、关系型数据库、内存型数据库WEB应用持久层设计2017软件架构评估软件系统架构设计流行技术数据库访问层WEB系统架构设计2015 软件架构评估 质量属性效用树: 软件架构风险: 敏感点: 权…

pagehelper版本升级导致pageSize为0时无法查询全部数据

前言 pageSize为0无效,修改配置 springboot版本升级后&#xff0c;pagehelper插件由1.2.3版本升级到1.4.1版本&#xff1b;发现升级之后pageSize为0时无法查询全部数据 maven依赖引入 旧版本pom.xml配置1.2.3 <dependency><groupId>com.github.pagehelper</g…

技术运维的经营大法——对话阿里云MVP熊昌伟

云栖号资讯&#xff1a;【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯&#xff0c;还在等什么&#xff0c;快来&#xff01; 简介&#xff1a; 不同于其他技术人的进阶经历&#xff0c;熊昌伟毕业后从未跳槽&#xff0c;在用友网络潜心修炼14年至今。从…

我同事狠心用 Python 3 ,刚开始就直接崩溃!你们试试......

Python 近两年一直霸占编程语言排行榜 Top3&#xff0c;火热程度有目共睹。这也让刚入行的程序员&#xff0c;甚至 BATJ 的技术大牛&#xff0c;都意识到 Python 对于一个程序员职业发展的重要性&#xff0c;将其作为第一/第二开发语言去学习。我同事前些日子说要学Python&…

阿里宜搭助力服务中枢升级,提升10倍开发效率

“真没想到&#xff0c;我在小程序上申请了‘要一双拖鞋’&#xff0c;不到半分钟功夫&#xff0c;机器人就把拖鞋送来了&#xff01;”住在菲住布渴的王女士感叹到。在酒店管理和服务能力的建设中&#xff0c;菲住布渴始终致力于通过数字化、智能化手段&#xff0c;让每一位入…

系统架构设计师 - 第三方认证服务

文章目录1.基于非对称密钥体系的 KPI/CA2.基于对称密钥体系的 Kerberos1.基于非对称密钥体系的 KPI/CA PKI&#xff1a;公钥基础设施 CA&#xff1a;认证中心 加密相关&#xff08;对称加密、非对称加密、信息摘要、数字签名、CA数字证书&#xff09; 2.基于对称密钥体系的 K…

MyBatisplus分页插件

文章目录一、后台分页配置1. 配置分页插件2. 编写分页代码3. 测试二、自定义查询2.1. 自定义接口2.2. 自定义查询2.3. 测试自定义分页一、后台分页配置 MyBatis Plus自带分页插件&#xff08;即BaseMapper接口中的selectPage()方法&#xff09;&#xff0c;只要简单的配置即可…

一个半月快速、低成本上云,云数据库专属集群解决方案看过来

在6月9日的“全速重构”2020阿里云线上峰会&#xff08;点击可查看数据库专场亮点&#xff09;中&#xff0c;阿里云智能数据库事业部的资深产品专家斗佛开启了全球首发4款云数据库新产品——云数据库专属集群、图数据库GDB、云数据库Cassandra版、云数据库ClickHouse。今天小编…