OSS对象存储原理,什么是OSS对象存储?
什么是OSS?
阿里云对象存储OSS(Object Storage Service)是一款海量、安全、低成本、高可靠的云存储服务,可提供99.9999999999%(12个9)的数据持久性,99.995%的数据可用性。多种存储类型供选择,全面优化存储成本。
OSS具有与平台无关的RESTful API接口,您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。
您可以使用阿里云提供的API、SDK包或者OSS迁移工具轻松地将海量数据移入或移出阿里云OSS。数据存储到阿里云OSS以后,您可以选择标准存储(Standard)作为移动应用、大型网站、图片分享或热点音视频的主要存储方式,也可以选择成本更低、存储期限更长的低频访问存储(Infrequent Access)、归档存储(Archive)、冷归档存储(Cold Archive)或者深度冷归档(Deep Cold Archive)作为不经常访问数据的存储方式。
OSS作为云上数据湖可提供高带宽的下载能力。在部分地域,可为单个阿里云账号提供高达100 Gbps的内外网总下载带宽,旨在满足AI和大规模数据分析的需求。关于各地域的带宽说明,请参见OSS带宽。
OSS工作原理
数据以对象(Object)的形式存储在OSS的存储空间(Bucket )中。如果要使用OSS存储数据,您需要先创建Bucket,并指定Bucket的地域、访问权限、存储类型等属性。创建Bucket后,您可以将数据以Object的形式上传到Bucket,并指定Object的文件名(Key)作为其唯一标识。
OSS以HTTP RESTful API的形式对外提供服务,访问不同地域需要不同的访问域名(Endpoint)。当您请求访问OSS时,OSS通过使用访问密钥(AccessKey ID和AccessKey Secret)对称加密的方法来验证某个请求的发送者身份。
Object操作在OSS上具有原子性和强一致性。
- 存储空间存储空间是用户用于存储对象(Object)的容器,所有的对象都必须隶属于某个存储空间。存储空间具有各种配置属性,包括地域、访问权限、存储类型等。用户可以根据实际需求,创建不同类型的存储空间来存储不同的数据。
- 对象对象是OSS存储数据的基本单元,也被称为OSS的文件。和传统的文件系统不同,对象没有文件目录层级结构的关系。对象由元数据(Object Meta)、用户数据(Data)和文件名(Key)组成,并且由存储空间内部唯一的Key来标识。对象元数据是一组键值对,表示了对象的一些属性,例如文件类型、编码方式等信息,同时用户也可以在元数据中存储一些自定义的信息。
- 对象名称在各语言SDK中,ObjectKey、Key以及ObjectName是同一概念,均表示对Object执行相关操作时需要填写的Object名称。例如向某一存储空间上传Object时,ObjectKey表示上传的Object所在存储空间的完整名称,即包含文件后缀在内的完整路径,如填写为abc/efg/123.jpg。
- 地域Region表示OSS的数据中心所在物理位置。用户可以根据费用、请求来源等选择合适的地域创建Bucket。一般来说,距离用户更近的Region访问速度更快。更多信息,请参见OSS已经开通的Region。
- 访问域名Endpoint表示OSS对外服务的访问域名。OSS以HTTP RESTful API的形式对外提供服务,当访问不同的Region的时候,需要不同的域名。通过内网和外网访问同一个Region所需要的Endpoint也是不同的。例如杭州Region的外网Endpoint是oss-cn-hangzhou.aliyuncs.com,内网Endpoint是oss-cn-hangzhou-internal.aliyuncs.com。具体的内容请参见各个Region对应的Endpoint。
- 访问密钥AccessKey简称AK,指的是访问身份验证中用到的AccessKey ID和AccessKey Secret。OSS通过使用AccessKey ID和AccessKey Secret对称加密的方法来验证某个请求的发送者身份。AccessKey ID用于标识用户;AccessKey Secret是用户用于加密签名字符串和OSS用来验证签名字符串的密钥,必须保密。对于OSS来说,AccessKey的来源有:Bucket的拥有者申请的AccessKey。被Bucket的拥有者通过RAM授权给第三方请求者的AccessKey。被Bucket的拥有者通过STS授权给第三方请求者的AccessKey。更多AccessKey介绍请参见创建AccessKey。
- 原子性和强一致性Object操作在OSS上具有原子性,操作要么成功要么失败,不存在中间状态的Object。当Object上传完成时,OSS即可保证读到的Object是完整的,OSS不会返回给用户一个部分上传成功的Object。Object操作在OSS同样具有强一致性,当用户收到了上传(PUT)成功的响应时,该上传的Object进入立即可读状态,并且Object的冗余数据已经写入成功。不存在上传的中间状态,即执行read-after-write,却无法读取到数据。对于删除操作,用户删除指定的Object成功之后,该Object立即不存在。
关于OSS基本概念的完整介绍,请参见基本概念。
OSS重要特性
- 版本控制版本控制是针对存储空间(Bucket)级别的数据保护功能。开启版本控制后,针对数据的覆盖和删除操作将会以历史版本的形式保存下来。您在错误覆盖或者删除文件(Object)后,能够将Bucket中存储的Object恢复到任意时刻的历史版本。更多信息,请参见版本控制概述。
- Bucket PolicyBucket拥有者可通过Bucket Policy授权不同用户以何种权限访问指定的OSS资源。例如您需要进行跨账号或对匿名用户授权访问或管理整个Bucket或Bucket内的部分资源,或者需要对同账号下的不同RAM用户授予访问或管理Bucket资源的不同权限,例如只读、读写或完全控制的权限等。关于配置Bucket Policy的具体操作,请参见通过Bucket Policy授权用户访问指定资源。
- 跨区域复制跨区域复制(Cross-Region Replication)是跨不同OSS数据中心(地域)的Bucket自动、异步(近实时)复制Object,它会将Object的创建、更新和删除等操作从源存储空间复制到不同区域的目标存储空间。跨区域复制功能满足Bucket跨区域容灾或用户数据复制的需求。更多信息,请参见跨区域复制概述。
- 数据加密服务器端加密:上传文件时,OSS对收到的文件进行加密,再将得到的加密文件持久化保存;下载文件时,OSS自动将加密文件解密后返回给用户,并在返回的HTTP请求Header中,声明该文件进行了服务器端加密。更多信息,请参见服务器端加密。客户端加密:将文件上传到OSS之前在本地进行加密。更多信息,请参见客户端加密。
- 数据永久保存除以下情况以外,OSS默认永久保存上传到Bucket的数据:通过OSS控制台、API、SDK、ossutil或者ossbrowser等工具手动删除数据。更多信息,请参见删除文件。通过生命周期规则在指定时间内自动删除数据。更多信息,请参见基于最后一次修改时间的生命周期规则。OSS停服后15天内未补足欠款。更多信息,请参见欠费停服说明。
关于OSS功能特性的完整介绍,请参见功能特性。
OSS使用方式
OSS提供多种灵活的上传、下载和管理方式。
- 通过控制台管理OSSOSS提供了Web服务页面,您可以登录OSS控制台管理您的OSS资源。更多信息,请参见OSS管理控制台概览。
- 通过API或SDK管理OSSOSS提供RESTful API和各种语言的SDK开发包,方便您快速进行二次开发。更多信息,请参见OSS API参考和OSS SDK参考。
- 通过工具管理OSSOSS提供图形化管理工具ossbrowser、命令行管理工具ossutil、FTP管理工具ossftp等各种类型的管理工具。更多信息,请参见OSS常用工具。
- 通过云存储网关管理OSSOSS的存储空间内部是扁平的,没有文件系统的目录等概念,所有的对象都直接隶属于其对应的存储空间。如果您想要像使用本地文件夹和磁盘的方式来使用OSS存储服务,可以通过配置云存储网关来实现。更多信息,请参见云存储网关产品详情页面。
OSS计费
对象存储OSS支持以下计费方式。
- 按量付费:所有计费项默认采用按量付费。按照各计费项的实际用量结算费用,先使用,后付费,适用于业务用量经常有变化的场景。更多信息,请参见按量付费。
- 资源包:针对部分常用计费项支持专用的资源包。预先购买针对不同的计费项推出的优惠资源包,在费用结算时,优先从资源包抵扣用量,先购买,后抵扣,适用于业务用量相对稳定的场景。更多信息,请参见资源包概述。
- 预留空间:针对有地域属性Bucket产生的标准存储(本地冗余)容量费用以及ECS快照存储费用的预付费产品。预先购买预留空间,在费用结算时,优先从预留空间抵扣用量,先购买,后抵扣。更多信息,请参见预留空间。
- 无地域属性预留空间:针对无地域属性Bucket产生的标准存储(本地冗余)容量费用的预付费产品。预先购买无地域属性的预留空间,在费用结算时,优先从无地域属性预留空间抵扣用量,先购买,后抵扣。更多信息,请参见无地域属性预留空间。
- 存储容量单位包SCU:针对存储费用支持SCU。SCU除了用于抵扣OSS的存储费用,还可用于抵扣多种云存储产品存储容量费用。更多信息,请参见存储容量单位包SCU。