在企业办公应用或社交媒体应用中,通常需要处理各种类型的文件,如图片、视频和文档。这些文件处理任务包括格式转换、水印添加和内容审核等。文件处理任务往往会消耗大量的计算、存储和网络资源,如果长时间占用这些资源,可能会影响应用的核心功能,进而影响业务稳定性。本方案通过在应用中使用函数计算来处理文件,利用事件驱动和异步任务的方式,将文件处理与核心应用解耦。函数计算具备自动弹性扩展和按使用付费的优势,可以提升文件处理效率和服务稳定性。
方案架构
本方案使用云服务器ECS和RDS MySQL版提供WEB服务,通过对象存储OSS存储用户文件。采用服务端签名的WEB直传方式,将文件上传直接发送到OSS,减少对应用网络资源的占用。文件上传到OSS后,通过事件驱动机制触发函数计算执行文件处理任务(示例代码是将PPT转换为PDF并添加水印)。处理完成后,通过OSS事件触发的MNS消息通知应用。
方案提供的默认设置完成部署后在阿里云上搭建的架构如下图所示。
本方案的技术架构包括以下基础设施和云服务:
1个专有网络VPC:为云服务器ECS、云数据库RDS MySQL版等云资源构建云上私有网络。
2台交换机: 分别用于链接云服务器ECS实例和云数据库RDS MySQL版实例。
1台云服务器ECS实例:用于部署业务系统,提供应用服务。
1个云数据库RDS MySQL版实例:为业务系统提供数据服务。
1个对象存储OSS Bucket:用于存储用户上传的文件和处理后的文件。
1个函数计算函数:用于文件处理,解耦在线用户服务和文件处理。
1个消息服务MNS队列:通过感知对象存储OSS Bucket中文件变化,通知应用服务文件处理完成。
部署准备
开始部署前,请按以下指引完成账号申请、账号充值。
准备账号
如果您还没有阿里云账号,请访问阿里云账号注册页面,根据页面提示完成注册。阿里云账号是您使用云资源的付费实体,因此是部署方案的必要前提。
为阿里云账号充值。本方案的云资源支持按量付费,且默认设置均采用按量付费引导操作。如果确定任何一个云资源采用按量付费方式部署,账户余额都必须大于等于100元。
一键部署
一键部署基于阿里云资源编排服务ROS(Resource Orchestration Service)实现,ROS模板已定义好脚本,可自动化地完成云资源的创建和配置,提高资源的创建和部署效率。ROS模板完成的内容包括:
操作步骤
您可以通过下方提供的ROS一键部署链接,来自动化地完成这些资源的创建和配置:
创建1台ECS实例。
创建1个专有网络VPC。
创建2台交换机。
创建1个云数据库RDS MySQL版实例。
创建1个OSS Bucket。
创建1个函数计算函数。
创建一个消息服务MNS队列。
创建一个RAM角色。
一键部署资源。
单击一键部署,在顶部导航栏选择地域。
在配置页面修改资源栈名称,按需选择和配置参数。
当资源栈信息页面的状态显示为创建成功时表示一键配置完成。
查看效果,访问网站并上传文件进行处理。
在资源栈详情页面,单击输出页签。
在输出页签下,单击url访问服务,看到如下登录页面后,输入之前配置的用户名和密码(可在资源栈详情页面输出页签查看),进入文件管理页面。
在文件管理页面,单击上传新的文件,在上传文件对话框,上传ppt文件,示例要求必须是pptx文件格式。
上传完成后可以在文件列表页面看到上传记录,稍等几秒后文件处理完成,可以在页面看到如下状态,点击可以下载处理后的ppt。
说明
如果上传完成后一直未展示处理后的文件,您可以在OSS查看对应的文件,上传的源文件存储在OSS的source目录,处理后的文件会存储在processed目录。如果processed目录无对应文件,您可以在函数计算控制台查看函数的实时日志进行排查。
> 完成及清理
耗时:10分钟
清理资源
您可以使用ROS一键删除创建的云资源,避免继续产生费用。
登录ROS控制台。
在左侧导航栏,选择资源栈。
在资源栈页面的顶部选择部署的资源栈所在地域,找到资源栈,然后在其右侧操作列,单击删除。
在删除资源栈对话框,选择删除方式为释放资源,然后单击确定,根据提示完成资源释放。
建议
缺点(局限性)
稳定性挑战
: 尽管函数计算设计为高可用,但在某些情况下,特别是复杂的文件处理任务,初次调用可能会有冷启动延迟,影响即时响应。