阿里云对象存储服务(Object Storage Service,简称OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。它是一个分布式的对象存储服务,提供的是一个Key-Value对形式的对象存储服务。用户可以根据Object的名称(Key)唯一的获取该Object的内容。它具有与平台无关的RESTful API接口,能够提供99.99999999%的服务持久性。可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。OSS适合各种网站、开发企业及开发者使用。
1.2.1 存储空间(Bucket)
存储空间是用于存储对象(Object)的容器,所有的对象都必须隶属于某个存储空间。可以设置和修改存储空间属性用来控制地域、访问权限、生命周期等,这些属性设置直接作用于该存储空间内所有对象,因此可以通过灵活创建不同的存储空间来完成不同的管理功能。
1.2.2 对象/文件(Object)
对象是OSS存储数据的基本单元,也被称为OSS的文件。对象由元信息(Object Meta),用户数据(Data)和文件名(Key)组成。对象由存储空间内部唯一的Key来标识。对象元信息是一个键值对,表示了对象的一些属性,比如最后修改时间、大小等信息,同时用户也可以在元信息中存储一些自定义的信息。
根据不同的上传方式,对象的大小限制是不一样的。分片上传最大支持48.8TB的对象大小,其他的上传方式最大支持5GB。
对象的生命周期是从上传成功到被删除为止。在整个生命周期内,对象信息不可变更。重复上传同名的对象会覆盖之前的对象,因此,OSS不支持修改文件的部分内容等操作。
OSS提供了追加上传功能,用户可以使用该功能不断地在Object尾部追加写入数据。
1.2.3 Region(地域)
Region表示OSS的数据中心所在的地域,物理位置。用户可以根据费用、请求来源等综合选择数据存储的Region。一般来说,距离用户更近的Region访问速度更快。目前已开通的Region详见[1]。
Region是在创建Bucket的时候指定的,一旦指定之后就不允许更改,该Bucket下所有的Object都存储在对应的数据中心,目前不支持Object级别的Region设置。
1.2.4 Endpoint(访问域名)
Endpoint表示OSS对外服务的访问域名。OSS以HTTP RESTful API的形式对外提供服务,当访问不同的Region的时候,需要不同的域名。通过内网和外网访问同一个Region所需要的Endpoint也是不同的。
1.2.5 AccessKey(访问密钥)
AccessKey,简称AK,指的是访问身份验证中用到的AccessKeyId和AccessKeySecret。OSS通过使用AccessKeyId和AccessKeySecret对称加密的方法来验证某个请求的发送者身份。AccessKeyId用于标识用户,AccessKeySecret是用户用于加密签名字符串和OSS用来验证签名字符串的密钥,其中AccessKeySecret必须保密。
更多基本概念详见[2]
1.4.1 简单上传
适用场景
简单上传指的是用户使用OSS API中的Put Object方法上传单个Object,可以适用在任何一次HTTP请求交互即可完成上传的场景,比如小文件的上传。
上传限制
1.4.2 大文件上传
OSS支持单个文件的大小,从0~48.8TB。当我们上传大文件时,可能会有以下场景:
以上情况下,可以使用分片断点续传方式或ossutil工具上传。
1.4.2.1 分片断点续传
当使用SDK或API上传大文件时,可以使用分片断点续传方式。分片断点续传方式使用于以下场景:
在这种上传方式下,Object的大小是由Part来决定的。最大支持10000块Part,每块最小100KB(最后一块可以比100KB小),最大5GB。
1.4.2.2 ossutil上传
当需要使用工具(而不是使用API、SDK编写代码)上传单个或多个大文件时,可以使用工具ossutil。
1.4.2.3 ossimport上传
如果需要上传大批量的文件(包括大文件)到OSS,也可以使用ossimport工具。
说明:当文件数目不是特别多,建议优先使用ossutil。
文件系统是一种典型的树状索引结构,可以很轻易的支持文件夹的操作,比如重命名目录、删除目录、移动目录等。对于OSS来说,可以通过一些操作来模拟类似的功能,但是代价非常昂贵。比如重命名目录,希望将test1目录重命名成test2,那么OSS的实际操作是将所有以test1/开头的Object都重新复制成以test2/开头的Object,这是一个非常消耗资源的操作。因此在使用OSS的时候要尽量避免类似的操作。
OSS保存的Object不支持修改(追加写Object需要调用特定的接口,生成的 Object也和正常上传的Object类型上有差别)。用户哪怕是仅仅需要修改一个字节也需要重新上传整个Object。而文件系统的文件支持修改,比如修改指定偏移位置的内容、截断文件尾部等,这些特点也使得文件系统拥有广泛的适用性。但另外一方面,OSS能支持海量的用户并发访问,而文件系统会受限于单个设备的性能。
使用OSS应该充分发挥其优点,即海量数据处理能力,优先用来存储海量的非结构化数据,比如图片、视频、文档等。
1.8.1 存储类型
OSS提供标准、低频访问、归档三种存储类型。
标准存储类型
提供通用的对象存储服务,适合频繁访问、有热点存在的各类音视频、图片、网站静态资源的存储,支持高吞吐计算场景,适合各类计算资源的存储。
低频访问存储类型
适合长期保存、较少访问的数据,适合各类移动应用、智能设备、企业数据的备份,低频访问支持实时数据访问。
归档存储类型
在三种存储类型中单价最低,适合需要长周期保存的档案数据、医疗影像、科学资料、影视素材,能有效优化长期存储成本。保存为归档存储类型的数据,恢复到可读取状态需要等待1分钟的解冻时间。
1.8.1.2 计费方式
阿里云OSS采用两种计费方式:按量付费(后付费)和包年包月(预付费)。
按量付费
用户先在阿里云账户充值,系统每小时统计前一小时的实际用量并进行结算,从账户余额中扣除实际消费金额,实际使用量可以通过控制台查看。按量付费支持所有的存储类型。OSS 的计量项包括存储量、流量、请求次数、数据处理。
包年包月
已使用的OSS资源在已购买的资源包规格内不收费,超过部分按量付费。包年包月目前只支持标准存储类型。
详细价格总览和价格计算器见[3][4]
若需自建至服务器程度,建议使用oss
若仅自建上传接口,建议自建,成本更低
[1]访问域名和数据中心 https://help.aliyun.com/document_detail/31837.html?spm=5176.doc31827.2.6.UzcCzu
[2]基本概念介绍 https://help.aliyun.com/document_detail/31827.html?spm=5176.doc52830.2.4.84wBlj
[3]详细价格总览https://www.aliyun.com/price/product?spm=5176.doc48266.2.6.YzYwYC#/oss/detail
[4]价格计算器https://www.aliyun.com/price/product?spm=5176.doc48266.2.6.YzYwYC#/oss/calculator