【SRE学堂第一讲】OSS从入门到精通 - 产品综述
前言
阿里云SRE团队首次推出SRE学堂,我们精选了广大客户主流部署的云产品进行由浅入深的系列介绍,目的是让使用阿里云的客户对产品有一个相对全面的了解。同时也希望读者能够反馈后续希望学习了解的产品,我们将根据需求不断推出更新。
本期我们推出的产品是被客户广泛使用的对象存储产品——OSS。后续会通过4个章节逐步介绍该产品,涵盖产品概念、产品架构、运维工具及运维常见问题等内容。
图1:SRE学堂课程规划
1 OSS是什么
说到OSS产品,大家都要知道OSS是什么?OSS是阿里云对象存储服务(Object Storage Service)的一个简称,它是阿里云提供的海量、安全、低成本、高可靠的云存储服务。
OSS可以被理解成一个即开即用、无限大空间的存储集群。相较传统建服务器存储而言,OSS在可靠性、安全性、成本和数据处理能力方面都有着突出的优势。使用OSS,您可以通过网络随时存储和调用包括文本、图片和视频等在内的各种非结构化数据文件。
OSS将数据文件以对象/文件(Object)的形式上传到存储空间(Bucket)中。OSS提供的是一个Key-Value键值对形式的对象存储服务。用户可以根据Object的名称(Key)唯一地址获取该Object的内容。
您可以进行以下OSS相关的操作:
- 创建存储空间,并向存储空间中上传文件。
- 获取已上传文件的地址,进行文件的分享和下载。
- 修改存储空间或文件的属性或元信息,为其设置相应的权限。
- 在对象存储OSS控制台进行基础和高级OSS操作。
- 通过开发者工具包SDK或直接在应用程序中调用RESTful API,进行基础和高级OSS操作。
2 OSS的优势
OSS产品相对于自建存储,有哪些优势呢?从下表中即可看出:
OSS还具备的其他各项优势:
- 方便、快捷的使用方式
a提供标准的RESTful API接口(部分接口与Amazon S3 API兼容)、丰富的SDK包、客户端工具、控制台。您可以像使用文件一样方便地
上传、下载、检索、管理用于Web网站或者移动应用的海量数据。
b不限文件数量和大小。您可以根据所需存储量无限扩展存储空间,解决了传统硬件存储扩容问题。
c支持流式写入和读出。特别适合视频等大文件的边写边读业务场景。
d支持数据生命周期管理。您可以自定义将到期数据批量删除。
- 强大、灵活的安全机制
灵活的鉴权、授权机制。提供STS和URL鉴权和授权机制,以及白名单、防盗链、主子账号功能。 - 丰富的图片处理服务
支持jpg、png、bmp、gif、webp、tiff等多种图片格式的转换,以及缩略图、剪裁、水印、缩放等多种操作。
3 OSS产品架构图
图2:OSS产品架构图
- WS&PM(协议接入层):负责接收用户使用RESTful协议发来的请求,进行安全认证。如果认证通过,用户的请求将被转发到Key-Value引擎继续处理。如果认证失败,直接返回错误信息给用户。
- KV集群:负责数据结构化处理,即按照Key(对象名称)来查找或存储数据,并支持大规模并发的请求。当协调服务集群变更导致服务被迫改变运行物理位置时,可以快速协调找到接入点。
- 存储集群:元数据存储在Master上,Master之间采用分布式消息一致性协议(Paxos)保证元数据的一致性,从而实现高效的文件分布式存储和访问。
4 OSS基本概念
本部分将向您介绍OSS中涉及的几个基本概念,以便于您更好地理解OSS产品。
4.1 对象/文件(Object)
对象是OSS存储数据的基本单元,也被称为OSS的文件。对象由元信息(Object Meta)、用户数据(Data)和文件名(Key)组成。对象由存储空间内部唯一的Key来标识。对象元信息是一个键值对,表示了对象的一些属性,比如最后修改时间、大小等信息,同时用户也可以在元信息中存储一些自定义的信息。
对象的生命周期是从上传成功到被删除为止。在整个生命周期内,对象信息不可变更,重复上传同名的对象会覆盖之前的对象。因此,OSS不支持修改文件的部分内容等操作。
4.2 存储空间(Bucket)
存储空间是您用于存储对象(Object)的容器,所有的对象都必须隶属于某个存储空间。您可以设置和修改存储空间属性用来控制访问权限、生命周期等,这些属性设置直接作用于该存储空间内所有对象,因此您可以通过灵活创建不同的存储空间来完成不同的管理功能。
- 同一个存储空间的内部是扁平的,没有文件系统的目录等概念,所有对象都直接隶属于其对应的存储空间。
- 每个用户可以拥有多个存储空间。
- 存储空间的名称在OSS范围内必须是全局唯一的,一旦创建之后无法修改名称。
- 存储空间内部的对象数目没有限制。
4.3 强一致性
Object操作在OSS上具有原子性,操作要么成功要么失败,不会存在有中间状态的Object。
OSS保证用户一旦上传完成之后读到的Object是完整的,OSS不会返回给用户一个部分上传成功的Object。Object操作在OSS上同样具有强一致性,用户一旦收到了一个上传(PUT)成功的响应,该上传的Object就已经立即可读,并且数据的三份副本已经写成功。不存在一种上传的中间状态,即read-after-write却无法读取到数据。对于删除操作也是一样的,用户删除指定的Object成功之后,该Object立即变为不存在。
强一致性方便了用户架构设计,可以使用跟传统存储设备同样的逻辑来使用OSS,修改立即可见,无需考虑最终一致性带来的各种问题。
4.4 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来说,可以通过一些操作来模拟类似的功能,但是代价非常昂贵。比如重命名目录,希望将test1目录重命名成test2,那么OSS的实际操作是将所有以test1/开头的Object都重新复制成以test2/开头的Object,这是一个非常消耗资源的操作。因此在使用OSS的时候要尽量避免类似的操作。
OSS保存的Object不支持修改(追加写Object需要调用特定的接口,生成的Object也和正常上传的Object类型上有差别)。用户哪怕是仅仅需要修改一个字节也需要重新上传整个Object。而文件系统的文件支持修改,比如修改指定偏移位置的内容、截断文件尾部等,这些特点也使得文件系统拥有广泛的适用性。但另外一方面,OSS能支持海量的用户并发访问,而文件系统会受限于单个设备的性能。
因此,将OSS映射为文件系统是非常低效的,也是不建议的做法。如果一定要挂载成文件系统的话,建议尽量只做新建文件、删除文件、读取文件这几种操作。使用OSS应该充分发挥其优点,即海量数据处理能力,优先用来存储海量的非结构化数据,比如图片、视频、文档等。
5 后续介绍
OSS产品的第一章只是向大家介绍了一下产品的一些基本概念,产品的优势以及产品的架构,但我们知道OSS产品的内容远远不止这些,还有OSS的使用方法,例如:如何去创建存储空间,如何实现上传、下载、删除的操作等。如果您对这些内容感兴趣或者想深入了解OSS产品,敬请期待下一期SRE大学堂之OSS从入门到精通第二章节的内容。
我们是阿里云智能全球技术服务-SRE团队,我们致力成为一个以技术为基础、面向服务、保障业务系统高可用的工程师团队;提供专业、体系化的SRE服务,帮助广大客户更好地使用云、基于云构建更加稳定可靠的业务系统,提升业务稳定性。我们期望能够分享更多帮助企业客户上云、用好云,让客户云上业务运行更加稳定可靠的技术,您可用钉钉扫描下方二维码,加入阿里云SRE技术学院钉钉圈子,和更多云上人交流关于云平台的那些事。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
阿里高可用架构建设实践经验
1 背景 随着业务在线化互联网化的高速发展,企业对核心业务系统的稳定性、可靠性、有效性、业务连续性等有了更高的要求。采用高可用系统架构支持重要系统、为关键业务提供7x24的不间断服务,已经成为众多企业保障业务稳定、持续运转的主要选择。但如何从海量实践中提炼出值得借鉴复制的高可用架构之道,实现适合自身的高可用系统架构,是需要企业深思熟虑的问题。阿里巴巴在多年双11高并发、高可用和高客户体验要求背景下积累了相应的技术体系,本文将依据高并发用户、突发高流量场景下的真实案例,分享阿里在高可用架构建设过程中的经验总结,以期待帮助更多企业做好业务高可用建设。 2 存在的问题 2.1 非常复杂的服务端 通常从客户端到达服务端会涉及到的关键节点有CDN、动态加速、高防、应用防火墙、4/7层负载均衡、前后端服务集、缓存、数据库存储、中间件、基础设施层等等,整个链路都面临着不确定性。后端服务的服务规模化问题更是复杂和难以评估检验,这其中任何一个节点出现问题都会导致服务不可用。如何能有效地全面检验服务端吞吐能力、发现所有问题甚至是做好容量规划,具备对峰值的流控调度能力是所有企业都需要思考和应对的。 2.2 ...
- 下一篇
程序员面试 10 大潜规则,千万不要踩坑!
云栖号资讯:【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 潜规则1:面试的本质不是考试,而是告诉面试官你会做什么 很多刚入行的小伙伴特别容易犯的一个错误,不清楚面试官到底想问什么,其实整个面试中面试官并没有想难道你的意思,只是想通过提问的方式来知道你会什么比如:面试官提问在实际项目中你们是怎么样使用缓存的?初入行回答:使用redis,key-value存放但是面试官可能是想知道:一般在业务中缓存什么样的数据,为什么要缓存这些数据,缓存数据如何保证实时性,如果缓存失效会对正常业务流程有什么影响,为什么要选择redis,redis的实现原理等等;围绕着这个话题只要你能在某一方面回答得很深入很透彻,基本上面上的可能性会大大提高;如果当你听到这个话题时,感觉不知道如何回到,或者说感觉很简单,几句换就说完了,那么基本上你很难面上,因为你的知识储备不够,说不出来关于技术相关的内容。 潜规则2:薪水要求高一点录取概率就大一点 我曾经面试一个刚毕业的大学生,简历上写的精通java,精通mysql,精通spring,然后我就问他你期望的薪水是多少呢?他的回答是4...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Linux系统CentOS6、CentOS7手动修改IP地址
- 2048小游戏-低调大师作品
- CentOS8安装Docker,最新的服务器搭配容器使用
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16