新购 续费 升级
超多折扣优惠
阿里云服务器限时两折起
年付每月仅需24元,低至0.73元/天起
阿里云服务器ECS    
弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新 [咨询更多]
阿里云存储OSS
简单易用、多重冗余、数据备份高可靠、多层次安全防护安全性更强、低成本 [咨询更多]
阿里云数据库RDS
稳定可靠、可弹性伸缩、更拥有容灾、备份、恢复、监控、迁移等方面的全套解决方案 [咨询更多]
阿里云安全产品
DDoS高防IP、web应用防火墙、安骑士、sll证书、态势感知众多阿里云安全产品热销中 [咨询更多]
阿里云折扣优惠    
云服务器ECS、数据库、负载均衡等产品新购、续费、升级联系客服获取更多专属折扣 [咨询更多]
对象存储OSS产品中的几个基本概念
2020-10-29
  典名科技本文为您介绍关于对象存储OSS产品中涉及的几个基本概念,助您更好地理解阿里云对象存储OSS的产品。
  
  对象存储OSS产品中的对象(Object)
  对象是OSS存储数据的基本单元,也被称为OSS的文件。和传统的文件系统不同,对象没有文件目录层级结构的关系。对象由元信息(Object Meta),用户数据(Data)和文件名(Key)组成,并且由存储空间内部唯一的Key来标识。对象元信息是一组键值对,表示了对象的一些属性,比如最后修改时间、大小等信息,同时用户也可以在元信息中存储一些自定义的信息。
  
  对象存储OSS产品中的存储空间(Bucket)
  存储空间是用户用于存储对象(Object)的容器,所有的对象都必须隶属于某个存储空间。存储空间具有各种配置属性,包括地域、访问权限、存储类型等。用户可以根据实际需求,创建不同类型的存储空间来存储不同的数据。
  同一个存储空间的内部是扁平的,没有文件系统的目录等概念,所有的对象都直接隶属于其对应的存储空间。
  每个用户可以拥有多个存储空间。
  存储空间的名称在OSS范围内必须是全局唯一的,一旦创建之后无法修改名称。
  存储空间内部的对象数目没有限制。
  存储空间的命名规范如下:
  只能包括小写字母、数字和短划线(-)。必须以小写字母或者数字开头和结尾。长度必须在3~63字节之间。
  对象的生命周期是从上传成功到被删除为止。在整个生命周期内,除通过追加方式上传的Object可以通过继续追加上传写入数据外,其他方式上传的Object内容无法编辑,您可以通过重复上传同名的对象来覆盖之前的对象。
  对象的命名规范如下:使用UTF-8编码。长度必须在1~1023字节之间。不能以正斜线(/)或者反斜线(\)开头。
  备注:对象名称需要区分大小写。如无特殊说明,本文档中的对象、文件称谓等同于Object。
  
  对象存储OSS产品中的几个基本概念
  Region(地域)
  Region表示OSS的数据中心所在物理位置。用户可以根据费用、请求来源等选择合适的地域创建Bucket。一般来说,距离用户更近的Region访问速度更快。Region表示OSS的数据中心所在的地域,Endpoint表示OSS对外服务的访问域名。
  
  数据冗余机制
  OSS使用基于纠删码、多副本的数据冗余存储机制,将每个对象的不同冗余存储在同一个区域内多个设施的多个设备上,确保硬件失效时的数据持久性和可用性。
  OSS Object操作具有强一致性,用户一旦收到了上传或复制成功的响应,则该上传的Object就已经立即可读,且数据已经冗余写入到多个设备中。
  OSS会通过计算网络流量包的校验和,验证数据包在客户端和服务端之间传输中是否出错,保证数据完整传输。OSS的冗余存储机制,可支持两个存储设施并发损坏时,仍维持数据不丢失。当数据存入OSS后,OSS会检测和修复丢失的冗余,确保数据持久性和可用性。
  OSS会周期性地通过校验等方式验证数据的完整性,及时发现因硬件失效等原因造成的数据损坏。当检测到数据有部分损坏或丢失时,OSS会利用冗余的数据,进行重建并修复损坏数据。
  
  强一致性
  Object操作在OSS上具有原子性,操作要么成功要么失败,不会存在有中间状态的Object。OSS保证用户一旦上传完成之后读到的Object是完整的,OSS不会返回给用户一个部分上传成功的Object。
  Object操作在OSS同样具有强一致性,用户一旦收到了一个上传(PUT)成功的响应,该上传的Object就已经立即可读,并且Object的冗余数据已经写成功。不存在一种上传的中间状态,即read-after-write却无法读取到数据。对于删除操作也是一样的,用户删除指定的Object成功之后,该Object立即变为不存在。
  Region是在创建Bucket的时候指定的,一旦指定之后就不允许更改。该Bucket下所有的Object都存储在对应的数据中心,目前不支持Object级别的Region设置。
  
  Endpoint(访问域名)
  Endpoint表示OSS对外服务的访问域名。OSS以HTTP RESTful API的形式对外提供服务,当访问不同的Region的时候,需要不同的域名。通过内网和外网访问同一个Region所需要的Endpoint也是不同的。例如杭州Region的外网Endpoint是oss-cn-hangzhou.aliyuncs.com,内网Endpoint是oss-cn-hangzhou-internal.aliyuncs.com。Region表示OSS的数据中心所在的地域,Endpoint表示OSS对外服务的访问域名。
  
  ObjectKey
  在各语言SDK中,ObjectKey、Key以及ObjectName是同一概念,均表示对Object执行相关操作时需要填写的Object名称。例如向某一存储空间上传Object时,ObjectKey表示上传的Object所在存储空间的完整名称,即包含文件后缀在内的完整路径,如填写为abc/efg/123.jpg。
  
  AccessKey(访问密钥)
  AccessKey简称AK,指的是访问身份验证中用到的AccessKeyId和AccessKeySecret。OSS通过使用AccessKeyId和AccessKeySecret对称加密的方法来验证某个请求的发送者身份。AccessKeyId用于标识用户;AccessKeySecret是用户用于加密签名字符串和OSS用来验证签名字符串的密钥,必须保密。对于OSS来说,AccessKey的来源有:
  Bucket的拥有者申请的AccessKey。
  被Bucket的拥有者通过RAM授权给第三方请求者的AccessKey。
  被Bucket的拥有者通过STS授权给第三方请求者的AccessKey。
  
  什么是文件系统?
  文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。文件系统由三部分组成:文件系统的接口,对对象操纵和管理的软件集合,对象及属性。从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等。

  OSS与文件系统的对比

对比项OSS文件系统
数据模型OSS是一个分布式的对象存储服务,提供的是一个Key-Value对形式的对象存储服务。文件系统是一种典型的树状索引结构。
数据获取根据Object的名称(Key)唯一的获取该Object的内容。

虽然用户可以使用类似test1/test.jpg的名字,但是这并不表示用户的Object是保存在test1目录下面的。对于OSS来说,test1/test.jpg仅仅只是一个字符串,和a.jpg这种并没有本质的区别。因此不同名称的Object之间的访问消耗的资源是类似的。

一个名为test1/test.jpg的文件,访问过程需要先访问到test1这个目录,然后再在该目录下查找名为test.jpg的文件。
优势支持海量的用户并发访问。支持文件的修改,比如修改指定偏移位置的内容、截断文件尾部等。也支持文件夹的操作,比如重命名目录、删除目录、移动目录等非常容易。
劣势OSS保存的Object不支持修改(追加写Object需要调用特定的接口,生成的Object也和正常上传的Object类型上有差别)。用户哪怕是仅仅需要修改一个字节也需要重新上传整个Object。

OSS可以通过一些操作来模拟类似文件夹的功能,但是代价非常昂贵。比如重命名目录,希望将test1目录重命名成test2,那么OSS的实际操作是将所有以test1/开头的Object都重新复制成以test2/开头的Object,这是一个非常消耗资源的操作。因此在使用OSS的时候要尽量避免类似的操作。

受限于单个设备的性能。访问越深的目录消耗的资源也越大,操作拥有很多文件的目录也
  因此,将OSS映射为文件系统是非常低效的,也是不建议的做法。如果一定要挂载成文件系统的话,建议尽量只做写新文件、删除文件、读取文件这几种操作。使用OSS应该充分发挥其优点,即海量数据处理能力,优先用来存储海量的非结构化数据,比如图片、视频、文档等。
  
  以下是OSS与文件系统的概念对比:

对象存储 OSS文件系统
Object文件
Bucket主目录
Region
Endpoint
AccessKey
多级目录
GetService获取主目录列表
GetBucket获取文件列表
PutObject写文件
AppendObject追加写文件
GetObject读文件
DeleteObject删除文件
修改文件内容
CopyObject (目的和源相同)修改文件属性
CopyObject复制文件
重命名文件
  OSS术语表

英文中文
Bucket存储空间
Object对象或者文件
EndpointOSS 访问域名
Region地域或者数据中心
AccessKeyAccessKeyId和AccessKeySecret的统称,访问密钥
Put Object简单上传
Post Object表单上传
Multipart Upload分片上传
Append Object追加上传
Get Object简单下载
Callback回调
Object Meta文件元信息。用来描述文件信息,例如长度,类型等
Data文件数据
Key文件名
ACL (Access Control List)存储空间或者文件的权限
  备注:如果没有特殊说明,本文中出现和术语表中相同的英文和中文,表达的是相同的意思。有时候为了表述方便会混合使用。典名科技就为您介绍到这里,如果您还有什么需要可以联系我们。

联系客服免费领取更多阿里云产品新购、续费升级折扣,叠加官网活动折上折更优惠