使用说明
概述
七牛云存储内建了一个非常高效易用的数据处理框架。数据处理框架可以对存储在七牛云上的文件执行一系列符合规范的数据处理操作。数据处理框架对于资源类型没有限制,但是特定的数据处理操作则会有各自适合的处理对象,例如对非图片类型的资源类型上应用缩略图操作可能会返回错误的结果。
数据处理使用方式可以在以下三种场景触发:
触发场景 | 处理类别 | 说明 |
---|---|---|
访问资源时 | 同步处理 | 只需要在资源URL后加上具体数据操作指令和参数即可。 |
对已有资源,手动触发 | 异步处理 | 针对已存在空间中的资源手动触发处理流程,与上传时的数据处理支持相同,这个过程也为异步且可查询操作进度。具体请参考这里。 |
资源上传时,自动触发 | 异步处理 | 上传时可在上传策略中设置persistentOps字段,在资源上传完成后七牛云存储会以异步的方式执行数据处理操作,并持久化存储数据处理结果。支持查询数据处理操作的进度。 |
下面分别描述这两种数据处理类别:
- 同步处理:收到处理请求后立刻进行实时计算并返回处理结果, 适用于计算量较小可以快速返回结果的任务。
- 异步处理:收到处理请求后立刻创建一个异步任务并返回该异步任务ID, 该任务会根据调度策略被最终调度执行完毕, 适用于计算量较大需要较长处理时间的任务。
一个常规的数据处理操作包含一个操作指令和若干操作参数,如下所示:
<fop>/<param1_value>/<param2_name>/<param2_value>/...
示例
开发者可以在访问资源时
制定执行一个或多个数据处理指令,以直接获取经过处理后的结果。
比较典型的一个场景是图片查看,客户端可以上传一张高精度的图片,然后在查看图片的时候根据屏幕规格生成一张大小适宜的缩略图。这样既可以明显降低网络流量,而且可以提高图片显示速度,还能降低移动设备的内存占用。
原图
https://dn-odum9helk.qbox.me/resource/gogopher.jpg
针对该原图生成一张480x320大小的缩略图
https://dn-odum9helk.qbox.me/resource/gogopher.jpg?imageView2/2/w/320/h/480
我们还可以定义图片样式例如叫iphone,以缩短URL并提高可读性
https://dn-odum9helk.qbox.me/resource/gogopher.jpg-iphone
管道
规格
七牛云存储的数据处理功能规格如下:
[GET] url?<fop>
即基于文件的URL通过问号传参来实现数据处理,<fop>
表示数据处理指令及其所需要的参数,是File Operation的缩写,表示文件处理。
那么,将一个资源经由多个 <fop>
链式处理,各 <fop>
之间用|
分割,我们称之为管道(pipeline)。
注意:管道数量限制为30个。
管道操作的规格如下:
[GET] url?<fop1>|<fop2>|<fop3>|<fopN>
url
获取可以参考下载机制。
示例
将一个原图缩略,然后在缩略图上打上另外一个图片作为水印:
原图
https://dn-odum9helk.qbox.me/resource/gogopher.jpg
基于原图生成缩略图
https://dn-odum9helk.qbox.me/resource/gogopher.jpg?imageView/2/h/200
基于原图生成缩略图并打上水印
样式
如果觉得 url?<fop1>|<fop2>|<fop3>|<fopN>
这样的形式够冗长,还可以为这些串行的 <fop>
集合定义一个友好别名。如此一来,就可以用友好URL风格进行访问。
我们先来熟悉七牛qrsctl工具的两个命令行:
// 定义 url 和数据处理之间的分隔符为 separator
qrsctl separator <bucket> <separator>
// 定义数据处理的别名为 aliasName
qrsctl style <bucket> <aliasName> <fop>
例如:
// 定义 url 和数据处理之间的分隔符为 "-"
qrsctl separator <bucket> "-"
// 定义该数据处理样式名为 "iphone"
qrsctl style <bucket> "iphone" "imageView/2/h/200|watermark/1/image/aHR0cHM6Ly9vZHVtOWhlbGsucW5zc2wuY29tL3Fpbml1LWxvZ28ucG5n"
那么,以下两个 URL 则等价:
原始URL:
https://dn-odum9helk.qbox.me/resource/gogopher.jpg?imageView/2/h/200|watermark/1/image/aHR0cHM6Ly9vZHVtOWhlbGsucW5zc2wuY29tL3Fpbml1LWxvZ28ucG5n
友好风格URL:
https://dn-odum9helk.qbox.me/resource/gogopher.jpg-iphone