从来没接触过对象存储的可能有点蒙,对象存储是啥,使用场景是啥,还有没有文件系统POSIX哪些接口?
公有云厂商对对象存储的定义
AWS S3
Amazon Simple Storage Service (Amazon S3) 是一种对象存储服务,提供行业领先的可扩展性、数据可用性、安全性和性能。这意味着各种规模和行业的客户都可以使用它来存储和保护各种用例(如网站、移动应用程序、备份和还原、存档、企业应用程序、IoT 设备和大数据分析)的任意数量的数据。 AWS
腾讯云
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。 COS
阿里云
对象存储服务(Object Storage Service,OSS)是一种海量、安全、低成本、高可靠的云存储服务,适合存放任意类型的文件。容量和处理能力弹性扩展,多种存储类型供选择,全面优化存储成本。 OSS
七牛云
七牛云海量存储系统(KODO)是自主研发的非结构化数据存储管理平台,支持中心和边缘存储。平台经过多年大规模用户验证已跻身先进技术行列,并广泛应用于海量数据管理的各类场景。 KODO
对象存储特点
对象存储是由AWS首先推出的一个存储产品形态,AWS的S3协议也成为对象存储事实标准,各个云存储厂商的云存储服务协议都兼容S3。从国内外这四个公有云厂商对象存储的描述,我们就能看出对象存储的几个特点:
- 海量数据,无论对文件大小,文件数量,都是海量
- 无文件系统的目录结构,采取的是平坦的层次结构
- 易扩展,相对低成本
具体更详细的描述呢,可以网上自我搜索。对象存储的特点,有没有一点更形象化的描述呢?下面白话文说下自己的理解:
海量存储
一般块存储来说(公有云形态为云盘)体量如果能达到PB级别,我们都觉得挺大了,但是对象存储的体量,PB就不够看了,至少都是EB的支持。国内公有云的对象存储体量基本上EB级别体量(旁白:PB不够看,EB是常态)。
层次结构
对象存储是完全不同于文件系统和块存储的存储形态。对外体现的层次概念是:桶(bucket),对象(key),没有目录结构。
那么有些小白可能迷惑了,我在腾讯云,阿里云,或者其他的S3客户端还是能看到对象以目录层次组织?
其实那个只是一个客户端的可视化显示而已,你的key名包含 “/” 的时候,有些会帮你显示成目录的样子,但这个跟对象存储本身无关(旁白:无目录,无目录,无目录)。也就是说,你存储对象存储使用的标识是(bucket,key),下载这个对象存储也只是使用:(bucket,key),除此之外,无其他标识。
易扩展,低成本
对象存储对外服务是可以宣称做到空间无限的,用户不用担心空间不够的问题,你有多少,我就能存多少(旁白:你有多少,我有多大)。
对象存储产品还可以细分成标准存储,归档存储,低频存储等。不同的产品适用于不同的场景,那么就允许使用特定的软硬件方案来限定成本。
- 比如归档存储,这种存储很有可能是写下去1年,都不读一次的,那么数据所在磁盘机器平时都可以直接下电的(旁白:其实这个说的简单,实现起来技术含量是很高的,国内应该还没有这种配合硬件的真正的归档存储,而只是产品上做个区分,抢占用户)
- 比如数据冗余除了多副本,可以使用纠删码等技术降低数据冗余度,从而保证相等可靠性的情况相对降低成本(旁白:纠删码是个好东西,我们也用这个)
接口协议
对象存储的事实协议标准是S3,是基于http之上的应用协议,核心接口极其简单(旁白:之前做块存储,刚接触这个,想“对象存储写偏移1M的位置写数据,怎么搞?” 后来发现根本就没有块存储对应的“改”的语义)。对象存储对外只提供两个抽象概念:桶,对象。这两个对象有哪些接口,下面列举最主要的几个:
桶(bucket)
- CREATE:创建桶
- LIST:列举桶
- DELETE:删除桶
对象(object)
- PUT:上传对象
- GET:下载对象
- DELETE:删除对象
对象存储使用场景
- 基本上互联网的产品服务都使用了对象存储;
- 海量短视频:比如抖音,快手的音视频数据就非常适用于对象存储
- 静态网站,图床等
- 大数据,AI数据这些数据也非常适合对象存储
- 监控视频,海量日志,等归档数据,流式数据
- 国内公有云厂商一般还会添加附加价值,比如多媒体数据处理
后续会对对象存储的各种公共细节的理解,架构理解,前沿资讯,一些分享。
$\color{#ea4335}{坚持思考,方向比努力更重要。}$ 关注公众号:奇伢云存储