用户写入一个对象后会产生一个事件,事件子系统会分析这个事件要怎么处理,比如经过一周、一个月进行删除,或者转移到低频,从而对数据进行相应的处理。
如果在开启生命周期功能管理之前,系统已经有一些历史数据,事件子系统会主动拉取这些历史数据,对它进行分析和处理。
QingStor®️对象存储另一个重要的功能是跨区域复制,适用于数据的备份与容灾场景。
跨区域复制的应用场景主要包括:
备份和容灾:为了保证数据安全性,在本地有一份之外,需要在另一个机房做备份,本地机房的数据丢失了,可以用远端的数据来恢复。
就近访问:如果业务的用户分布在不同的区域,每个用户在访问其图片、视频资源时,希望更快地获取数据。
QingStor®️对象存储可以按照地域来存储数据,北京一份,上海一份,数据可以写入到北京,跨区域复制到上海,满足就近访问的需求。
提升计算效率:如果有多个机器学习、数据挖掘的应用程序或业务程序要访问同一份数据,这些业务程序可能部署在不同的地方。为了保证计算效率,QingStor®️对象存储可以通过跨区域复制,就近复制一份数据。
跨区域复制的功能核心仍然是事件子系统,用户写入一个对象后,就会产生一个事件,事件子系统会处理这个事件,将数据复制到远端指定目标的存储桶里。
如果在配置这个功能之前系统已经有一些历史数据,在配置之后,事件子系统会主动拉取这些数据,将它复制到远端的位置。
接下来重点介绍QingStor®️对象存储的数据处理功能。
用户要对存储在对象存储中的数据进行处理,包括视频转码、缩略图、图片加水印等,可以将要做的动作打包成一个任务进行提交,通过 Gateway 服务进入事件子系统,事件子系统将按照指定的动作将数据读出来,进行处理与写入目标位置。
做数据处理的前提是数据存放在对象存储的存储桶中,这是数据处理的流程,其核心依然是QingStor®️对象存储的事件子系统。
下面从用户的角度来看 QingStor®️对象存储是否够方便,是否容易上手。
QingStor®️对象存储的所有功能 API 都是开放的,可以进行调取和访问,同时提供 8 种主流的SDK,涵盖主流的编程语言,这些 SDK 代码都是开源的,都在 GitHub 上,大家可以直接拿来使用。
此外,QingStor®️对象存储提供两个高级命令行工具:
第一种是 qsctl,提供强大的类 Unix 命令,用于管理本地数据资源以及 QingStor®️对象存储中远程的数据资源,可以非常方便地对数据进行操作,包括 RM、CP 等操作,提供一键同步,将你本地的数据与对象存储中的数据进行同步。
第二种命令行工具是 qscamel,用于在不同对象存储系统间进行高效的数据迁移,比如现在有数据在阿里云的 OSS 里,你想把它迁移到 QingStor 中,可以使用这个工具来完成。这个工具目前支持主流的对象存储,包括 QingStor、AliyunOSS、AWSS3 以及 GoogleCloud Storage 等,可以在这些系统之间进行数据的迁移。
S3 是亚马逊对象存储服务访问接口的标准,QingStor®️对象存储是对 S3 兼容得非常好,很多已经基于 S3 开发的应用程序、SDK 和第三方服务,都可以在不修改代码的前提下非常容易地接入 QingStor®️对象存储,包括 Hadoop、Spark、ElasticSearch 以及 Docker 等。
QingStor®️对象存储交通行业最佳实践
最后我们从智能交通平台这个场景出发,看看如何在业务中使用 QingStor®️对象存储。智能交通平台的主要应用是高速公路上的视频监控,以及在收费站进行拍照、收费、车牌识别等业务。
这是一个典型的高并发访问场景,高速摄像头非常多,收费站也是非常多的。每一个摄像头、每一个收费站都会产生海量图片、视频资源,要发送 QingStor®️对象存储中。
数据是非常重要的,高速公路上的每一段视频,事后可能要用于查看当时发生的情况,数据一定要做可靠的存储。
另一方面,要求存储系统可以与第三方业务应用无缝对接,例如在收费站拍了车辆照片,需要识别其车牌号,查询从哪里开过来,这就要求 QingStor®️对象存储与其他业务系统进行对接。
QingStor®️对象存储的接入服务可以通过扩展的方式支持高并发场景,采用多副本提供可靠的强一致存储。