方案概述
现在绝大多数客户都有很多非结构化的数据存在 OSS 中,以图片,视频,音频居多。举一个图片处理的场景,现在各种终端种类繁多,不同的终端对图片的格式、分辨率要求也不同,所以一张图片往往会有很多张衍生图,那如果所有的衍生图都存在 OSS 中,那存储的成本会增加,所以就可以通过 OSS Object FC 的方案,在不同的终端请求时,对 OSS 中的原图基于终端的要求做实时处理,然后响应返回,这样 OSS 中只需要存储原图即可。
该方案以图片处理的两类场景为例:
场景一: OSS 中只存原图,用户在请求 URL 中带着期望对图片做何种处理的参数,请求回来的图片是已经基于参数处理好的图片。
场景二: OSS 中只存某种格式的图片,实现无论用户请求时 URL 中是何种格式,都可以正常返回图片。
方案优势
-
不需要所有版本的图片都保存,只需要保存原图即可,可有效优化 OSS 存储成本。
-
可以灵活实现对 OSS 中的数据做在请求时做扩展业务逻辑的需求,极大减少 OSS 侧定制开发,并且客户可以完全掌控处理图片的逻辑,扩展性极强。比如请求时实时加水印、实时美颜处理、实时裁剪图片、实时截帧等。
部署架构
名词解释:
- OPAP(Object Process Access Point):是在 AP 的能力上,拓展了 FC 功能,通过 OPAP 访问的 GetObject 会触发 FC。其他类型的请求会退化到绑定的 AP。
- AP(AccessPoint):是 OSS 推出的新的接入点域名;通过该域名访问,有独立的权限控制。假设用户想把一个 bucket 给不同业务方使用,但是想精细控制每一个业务方的权限,可以通过创建多个 AP 给业务方使用。
架构说明
该方案的整条链路是非常清晰明确的:
-
用户请求 CDN 地址展示图片。
-
CDN 没有命中后回源到 OPAP。
-
OPAP 的请求会触发函数计算的函数,在该函数中可以拿到用户请求的 URL 详细信息,然后可由用户自行实现对图片处理的逻辑。
-
函数中对图片处理完后,将图片返回给 AP。
-
AP 返回给 OSS,由 OSS 响应给 CDN。
整个方案中,CDN 的回源配置,OPAP 的创建,AP 的创建,函数代码的实现需要在产品控制台进行配置,详细步骤参见后续内容。
产品介绍
专有网络 VPC(Virtual Private Cloud): 是用户基于阿里云创建的自定义私有网络, 不同的专有网络之间二层逻辑隔离,用户可以在自己创建的专有网络内创建和管理云产品实例,比如 ECS、负载均衡、RDS 等。
函数计算 FC(Function Compute): 函数计算是事件驱动的全托管计算服务。使用函数计算,您无需采购与管理服务器等基础设施,只需编写并上传代码或镜像。函数计算为您准备好计算资源,弹性地、可靠地运行任务,并提供日志查询、性能监控和报警等功能。
内容分发网络(Content Delivery Network,CDN): 是建立并覆盖在承载网上,由不同区域的服务器组成的分布式网络。将源站资源缓存到全国各地的边缘服务器,供用户就近获取,降低源站压力。
阿里云对象存储 OSS(Object Storage Service): 是一款海量、安全、低成本、高可靠的云存储服务,可提供 99.9999999999%(12 个 9)的数据持久性,99.995% 的数据可用性。多种存储类型供选择,全面优化存储成本。
云速搭 CADT(Cloud Architect Design Tools): 是一款为上云应用提供自助式云架构管理的产品,显著地降低应用云上管理的难度和时间成本。本产品提供丰富的预制应用架构模板,同时也支持自助拖拽方式定义应用云上架构;支持较多阿里云服务的配置和管理。用户可以方便的对云上架构方案的成本、部署、运维、回收进行全生命周期的管理。
前置条件
在进行本文操作之前,您需要完成以下准备工作:
1)注册阿里云账号,并完成实名认证。您可以登录阿里云控制台,并前往实名认证页面 (https://account.console.aliyun.com/v2/#/authc/home) 查看是否完成实名认证。
2)购买按量付费资源,阿里云账户余额需要大于 100 元。考虑到部署后每小时会产生费用,建议账号内余额或者代金卷金额大于 200 元。您可以登录阿里云控制台,前往账户总览页面 (https://usercenter2.aliyun.com/home) 查看账户余额。
3)该最佳实践涉及到使用 Git 下载示例中需要的代码和文件,所以请提前准备好 Git 环境。
4)该最佳实践需要您持有备案过的域名才能正常完成全部操作,请您先准备域名。
操作步骤
本实践可通过 CADT 官方模板快速拉起演示环境。
-
基础环境搭建
-
获取示例代码和文件
2.1.通过 Git 获取示例代码和文件
-
配置对象存储 OSS
3.1.创建接入点(AP)
3.2.创建对象 FC 接入点(OPAP)
3.3.创建 RAM 授权
3.4.上传样例图片
-
配置函数计算 FC
4.1.登录函数计算 FC 控制台
4.2.部署修改图片扩展名代码
4.3.更新 oss sdk 和 pyopenssl
-
配置 CDN
5.1.添加 CDN域名
5.2.CDN 域名 CNAME 解析
5.3.配置 CDN 域名
-
场景验证
6.1.转换图片扩展名场景验证
6.2.根据 URL 参数实时变更图片尺寸场景验证
6.3.验证更多场景
-
一键释放资源最佳实践
全部内容,请点击此处查看。对方案和产品感兴趣的朋友,可以加入钉钉群交流(群号:31852400)。
往期文章:
云原生最佳实践系列 1:借助云速搭 CADT 如何实现 Kafka 的性能压测?
云原生最佳实践系列 2:基于 MSE 云原生网关同城多活
云原生最佳实践系列 3:基于 SpringCloud 应用玩转 MSE
云原生最佳实践系列 4:基于 MSE 和 SAE 的微服务部署与压测
云原生最佳实践系列 5:基于函数计算 FC 实现阿里云 Kafka 消息内容控制 MongoDB DML 操作
云原生最佳实践系列 6:MSE 云原生网关使用 JWT 进行认证鉴权