您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 冶金工业 > OSS调研报告20180930补充
OSS调研报告研发部刘成什么是对象存储OSS阿里云对象存储服务(ObjectStorageService,简称OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。五个关键词存储空间(Bucket)对象/文件(Object)地域(Region)访问域名(Endpoint)访问密钥(AccessKey)存储空间(Bucket)存储空间是您用于存储对象(Object)的容器,所有的对象都必须隶属于某个存储空间。您可以设置和修改存储空间属性用来控制地域、访问权限、生命周期等,这些属性设置直接作用于该存储空间内所有对象,因此您可以通过灵活创建不同的存储空间来完成不同的管理功能。•同一个存储空间的内部是扁平的,没有文件系统的目录等概念,所有的对象都直接隶属于其对应的存储空间。•每个用户可以拥有多个存储空间。•存储空间的名称在OSS范围内必须是全局唯一的,一旦创建之后无法修改名称。•存储空间内部的对象数目没有限制。对象/文件(Object)对象是OSS存储数据的基本单元,也被称为OSS的文件。对象由元信息(ObjectMeta),用户数据(Data)和文件名(Key)组成。对象由存储空间内部唯一的Key来标识。对象元信息是一个键值对,表示了对象的一些属性,比如最后修改时间、大小等信息,同时您也可以在元信息中存储一些自定义的信息。•对象的生命周期是从上传成功到被删除为止。在整个生命周期内,对象信息不可变更。重复上传同名的对象会覆盖之前的对象,因此,OSS不支持修改文件的部分内容等操作。地域(Region)&访问域名(Endpoint)地域(Region)•地域表示OSS的数据中心所在物理位置。您可以根据费用、请求来源等综合选择数据存储的地域。•一般来说,距离用户更近的Region访问速度更快。•Region是在创建Bucket的时候指定的,一旦指定之后就不允许更改。该Bucket下所有的Object都存储在对应的数据中心,目前不支持Object级别的Region设置。访问域名(Endpoint)•Endpoint表示OSS对外服务的访问域名。OSS以HTTPRESTfulAPI的形式对外提供服务,当访问不同地域的时候,需要不同的域名。通过内网和外网访问同一个地域所需要的域名也是不同的。访问密钥(AccessKey)AccessKey,简称AK,指的是访问身份验证中用到的AccessKeyId和AccessKeySecret。OSS通过使用AccessKeyId和AccessKeySecret对称加密的方法来验证某个请求的发送者身份。AccessKeyId用于标识用户,AccessKeySecret是用户用于加密签名字符串和OSS用来验证签名字符串的密钥,其中AccessKeySecret必须保密。•Bucket的拥有者申请的AccessKey。•被Bucket的拥有者通过RAM授权给第三方请求者的AccessKey。•被Bucket的拥有者通过STS授权给第三方请求者的AccessKey。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提供标准、低频访问、归档三种存储类型,全面覆盖从热到冷的各种数据存储场景。访问与控制——方式与验证过程访问方式访问方式1:在访问的时候以URL的形式来表示OSS的资源。OSS的URL构成如下:Schema://Bucket.外网Endpoint/Object如:imgsrc=访问方式2:通过OSSSDK访问域名。1.用户的请求被发送到OSS的HTTP服务器上。2.OSS根据URL解析出Bucket和Object。3.OSS根据请求的OSS的AccessKeyId获取请求者的相关身份信息,进行身份鉴权。•如果未获取成功,则返回,请求结束。•如果获取成功,但请求者不被允许访问此资源,则返回,请求结束。•如果获取成功,但OSS端根据请求的HTTP参数计算的签名和请求发送的签名字符串不匹配,则返回,请求结束。•如果身份鉴权成功,那么继续4。4.OSS检查Object是否设置了ACL。•如果Object没有设置ACL,那么继续5。•如果Object设置了ACL,OSS判断Object的ACL是否允许此用户访问。◦允许则跳到6。◦不允许则拒绝请求,请求结束。5.OSS判断Bucket的ACL是否允许此用户访问。•允许则继续6。•不允许则返回,请求结束。6.权限验证通过,返回Object的内容给用户。访问与控制——绑定自定义域名1.绑定自定义域名文件上传到OSS后,会自动生该文件的访问地址。您可以使用此地址访问OSS文件。如果您想要通过自定义域名访问OSS文件,需要将自定义域名访问绑定在文件所在的Bucket上,即CNAME。此功能可以实现对外链接不变。2.流程①用户A在OSS上创建一个名为abc-img的Bucket,并上传了其网站上的图片。②用户A通过OSS控制台,提交将img.abc.com这个自定义的域名绑定在abc-img上的申请,并提供相应的材料。③通过阿里云审核后,OSS后台会将img.abc.com做一个映射到abc-img(此处会做权限验证)。④用户A在自己的域名服务器上,添加一条CNAME规则,将img.abc.com映射成abc-img.oss-cn-hangzhou.aliyuncs.com(即abc-img的OSS域名)。⑤请求到达OSS后,OSS找到img.abc.com和abc-img的映射,转换成访问abc-img这个Bucket。也就是说,对的访问,经过OSS后,实际上访问的是访问与控制——访问控制1.基本概念直接使用OSS提供的RESTfulAPI接口访问或者使用对API接口进行完整封装的SDK开发包。而每一次向OSS的请求根据当前Bucket权限和操作不同要求用户进行身份验证或者直接匿名访问。对OSS的资源访问的分类如下:按访问者的角色可分为拥有者访问和第三方用户访问。这里的拥有者指的是Bucket的Owner,也称为开发者。第三方用户是指访问Bucket里资源的用户。按访问者的身份信息可分为匿名访问和带签名访问。2.AccessKey类型①阿里云账号AccessKey②RAM子账号AccessKeyRAM(ResourceAccessManagement)是阿里云提供的资源访问控制服务。RAM账号AK指的是通过RAM被授权的AK。这组AK只能按照RAM定义的规则去访问Bucket里的资源。③STS账号AccessKeySTS(SecurityTokenService)是阿里云提供的临时访问凭证服务。STS账号AK指的是通过STS颁发的AK。这组AK只能按照STS定义的规则去访问Bucket里的资源。3.权限控制针对存放在Bucket的Object的访问,OSS提供了多种权限控制,主要有:Bucket级别权限,Object级别权限,账号级别权限(RAM),临时账号权限(STS)上传文件1.上传方式简单上传,表单上传,分片上传,断点续传,追加上传2.上传限制大小限制:Object的大小不能超过5GB。命名限制使用UTF-8编码。长度必须在1–1023字节之间。不能以正斜线(/)或者反斜线(\)字符开头。上传文件1.使用场景①简单上传指的是使用OSSAPI中的PutObject方法上传单个Object。简单上传适用于一次HTTP请求交互即可完成上传的场景,比如小文件的上传。②表单上传是指使用OSSAPI中的PostObject请求来完成Object的上传,上传的Object不能超过5GB。表单上传非常适合嵌入在HTML网页中来上传Object,比较常见的场景是网站应用。上传文件分片上传:当使用简单上传(PutObject)功能来上传较大的文件到OSS的时候,如果上传的过程中出现了网络错误,那么此次上传失败。重试必须从文件起始位置上传。针对这种情况,OSS提供了分片上传(MultipartUpload)来达到断点续传的效果。顾名思义,分片上传就是将要上传的文件分成多个数据块(OSS里又称之为Part)来分别上传,上传完成之后再调用OSS的接口将这些Part组合成一个Object。分片上传适用于以下场景:恶劣的网络环境:如手机端,当出现上传失败的时候,可以对失败的Part进行独立的重试,而不需要重新上传其他的Part。断点续传:中途暂停之后,可以从上次上传完成的Part的位置继续上传。加速上传:要上传到OSS的本地文件很大的时候,可以并行上传多个Part以加快上传。流式上传:可以在需要上传的文件大小还不确定的情况下开始上传。这种场景在视频监控等行业应用中比较常见。上传文件断点续传:因为已经上传的Part的生命周期是永久的,因此很容易可以实现断点续传的功能。在使用分片上传的过程中,如果系统意外崩溃,可以在重启的时候通过ListMultipartUploads和ListParts两个接口来获取某个Object上的所有的分片上传任务和每个分片上传任务中上传成功的Part列表。这样就可以从最后一块成功上传的Part开始继续上传,从而达到断点续传的效果。暂停和恢复上传实现原理也是一样的。断点续传功能在移动设备和大文件上传中的优势尤为明显。上传限制大小限制:在这种上传方式下,Object的大小是由Part来决定的,最大支持10000块Part。每块Part最小100KB(最后一块可以比100KB小),最大5GB。Object的大小不能超过48.8TB。命名限制使用UTF-8编码。长度必须在1–1023字节之间。不能以正斜线(/)或者反斜线(\)字符开头。上传文件RTMP推流上传OSS支持使用RTMP协议推送H264编码的视频流和AAC编码的音频流到OSS。推送到OSS的音视频数据可以点播播放;在对延迟不敏感的应用场景,也可以做直播用途。通过RTMP协议上传音视频数据有以下限制:只能使用RTMP推流的方式,不支持拉流。必须包含视频流,且视频流格式为H264。音频流是可选的,并且只支持AAC格式,其他格式的音频流会被
本文标题:OSS调研报告20180930补充
链接地址:https://www.777doc.com/doc-2308764 .html