对象存储基础
零
你是否有这样的疑问:
- 什么是对象存储? 对象存储 == 云存储 ?
- 对象存储到底存什么?有哪些特点?
- 各大云厂商的对象存储,如:S3、OSS、OBS、COS, 到底用哪一家?
- 等等
面对各种关于对象存储的问题,本文试着用通熟易懂的话语,给大家分享一下,同时大家有任何问题和想法都可以一同探讨。
什么是对象存储
搜索引擎上一搜 对象存储 ,一出来就是 某某厂商云存储,似乎对象存储与云存储划等号了。
追根溯源各大厂商的对象存储,要回到AWS(亚马逊) S3 协议,其以一种简单的 REST API的方式对外提供可扩展、数据高可用、安全、和高性能的服务,除了数据读取服务外,还提供了很多高级特性,比如:生命周期管理、存储介质、对象锁、数据复制等(参考 S3 协议)基本各大厂商在S3的基础上,都发展各自的对象存储协议与特性,但是基本都会声称兼容 S3 协议。
S3协议两个重要的概念就是 桶Bucket
和 对象Object
- 桶 是存储对象的容器,一个桶可以存放任意多个对象,在桶上有很多特性,如多版本、存储策略。
- 对象 是一个基本的存储实体,对象中包含 数据 与 元数据,元数据中既有默认的原数据也有自定义的元数据,自定义元数据可通过 HTTP 的 HEADER 传入。
快速入门的一组操作实例:
- 创建桶
- 上传对象
- 下载对象
- 删除对象和桶
文件存储 & 块存储 & 对象存储
横行与其他存储协议对比,在云上有什么区别。
对比维度 | 文件 | 块 | 对象 |
---|---|---|---|
概述 | 可以为多个云服务器提供共享访问,类似于Windows、linux远程目录 | 为云服务器提供可弹性扩展的云硬盘 | 提供海量的、安全的、高可高、低成本的数据存储能力。 |
协议 | NAS、NFS | SAN,iscsi | S3、HTTPS |
数据访问 | 挂载到服务器上,通过NFS协议访问 | 挂载在服务器上使用,通过iscsi协议访问 | 直接使用 HTTP/HTTPS访问 |
数据组织形式 | 文件系统方式,分层整理 | 数据块的形式 | 直接存放文件 |
应用场景 | 文件共享、 | 云硬盘 | 海量文件存储、大数据分析 |
国内外厂商
列举三个国内外成熟的厂商,对比其目前功能场景以及未来发力点。
AWS S3
鼻祖、不断挖掘数据价值。
主要特点:
- 高可扩展
- 低成本,多种存储介质
- 安全性高、合规
- 强大的访问控制
- 数据湖,可以从任何地方获取任何量级数据进行存储,并做大数据分析
- 复制功能备份和还原关键数据
- 构建快速、功能强大的移动和基于 Web 的云原生应用程序,可在高度可用的配置中自动扩展。(理解一下,S3为云原生应用程序提供共享的存储环境,使其快速发布)
aliyun OSS
国内做的最早的一批厂商
主要特点:
- 海量、安全、低成本、高可靠
- 安全合规
- 数据迁移,帮助企业快速上云、以及从其他厂商迁移数据
- 支持图片、文档、视频、CSV等数据的常用处理和分析能力,这单很赞、充分利用自身算法优势,提供图片处理、人脸识别能力
- 容灾备份 通过数据跨区域复制以及同城冗余、版本控制等技术,保障数据的高可靠性。
- 数据糊
华为云 OBS
主要特点:
- 海量、安全、高可靠、低成本
- 安全可信
- 超高性能,千万级TPS、2.4GB/s单流上传速度,感觉只有在私有云场景下,单流上传速度才有意义,共有云场景下,上传速度受限因素太多。
- 多协议,支持兼容对象和POSIX协议。对象存储前面架一个文件网关,然后文件网关支持POSIX协议。这样做的好处是,可以从文件协议写入,然后对象协议读取数据,便于数据流动,在数据湖场景下,可以减少存储成本。
- 并行文件系统,提供一个高性能的文件系统,这个很赞。
综上,从以上三个厂商的对象存储能力来看,都在完善基本能力的基础上,各自在自己擅长的领域发力,提供更优质的服务和能力。亚马逊在数据糊、云原生方面有更多亮点、阿里在AI、数据迁移上做的更好、华为在多协议互通、单机性能上更胜一筹。
因此对普通企业/个人用户来说,喜欢哪一家就用哪一家。
开源世界
聊完云厂商,再聊聊开源世界的对象存储,那肯定是大名鼎鼎的 Ceph、Minio
Ceph
据说很多厂商的对象存储都是基于 ceph 基础之上的, 其显著特点是:同时支持 对象、文件、块存储三种协议,其主要是将三种协议最终收敛到平台 RADOS
(Reliable Autonomic Distributed Object Store)
Minio
go语言编写,支持容器部署,天生适用于云原生,其显著特点是:
- 双活复制(Active-Active Replication), 两端都可以同时对外提供服务,并将数据复制到对端。
- 数据加密
- 底层数据使用 纠删码(Erasure Code),而不是多副本模式,减少存储空间。
最后
对象存储不同于原有的存储(只在专网、私有云中提供存储服务),其可在互联网中对外提供海量的、低成本的、安全可靠的存储服务,让更多的企业/个人可以使用,相信未来其功能特性与使用场景将不断的扩大。