架构师都知道的分布式对象存储解决方案
OSS(Object Storage Service)俗称对象存储,主要提供图片、文档、音频、视频等二进制文件的海量存储功能。目前除了公有云提供对象存储服务外,一般私有云比较关心一些开源的分布式对象存储解决方案,本文列举了一些常见的技术方案供参考。
概念普识
块存储
通常SAN(Storage Area Network)结构的产品属于块存储,比如我们常见的硬盘、磁盘阵列等物理盘。
文件存储
一般NAS(Network Attached Storage)产品都是文件级存储,如Ceph的CephFS,另外 GFS、HDFS等也属于文件存储 。
对象存储
同时兼顾着SAN高速直接访问磁盘特点及NAS的分布式共享特点的一类存储,一般是通过RESTful接口访问。
开源解决方案介绍
Swift
Swift 是 OpenStack 社区核心子项目,是一个弹性可伸缩、高可用的分布式对象存储系统,使用Python语言实现,采用 Apache 2.0 许可协议。
Swift 提供一个基于RESTful HTTP接口的 Object Storage API,用于创建,修改和获取对象和元数据。用户可以使用 Swift 高效、安全且廉价地存储大量数据。Swift 整体架构:
总的来说,企业如果想要建立可扩展的分布式对象存储集群,可以考虑 Swift。
Ceph
Ceph是一种高性能、高可用、可扩展的分布式存储系统,统一的对外提供对象存 储、块存储以及文件存储功能,底层使用C/C++语言。
其中对象存储功能支持 2 种接口:
1、兼容S3:提供了对象存储接口,兼容 S3 RESTful 接口的一个大子集。
2、兼容Swift:提供了对象存储接口,兼容 Openstack Swift 接口的一个大子集。
Ceph是一个企业级分布式存储系统,功能强大,不仅可以为企业建立对象存储服务,还可以帮助企业建立自己的云平台,具有广泛的应用场景特别是在云环境下使用广泛。
Minio
Minio是一个企业级、兼容S3接口的对象存储系统。Minio基于 Apache 2.0 许可协议,采用 Go语言实现,客户端支持Java、Python、Go等多种语言,是一种轻量级、高并发的开源解决方案,可以作为云存储方案用来保存海量的图片,视频,文档等。
大数据集成方面,Minio支持各种常见的查询计算引擎,比如Spark、Presto、Hive以及Flink等,可以使用这些处理框架查询分析对象数据,此外,Minio支持Parquet,Json、Csv格式等多种文件存储格式,包括压缩与编码。更多特性可以参考官网 地址https://min.io。Minio架构:
Minio主要为人工智能、机器学习而设计,并适用于其他大数据负载。从架构与功能方面考虑,Minio是一个比较好的开源对象存储解决方案。
HBase MOB
这是利用HBase的MOB特性支持对象存储功能。Apache HBase2.0 版本开始支持中等对象存储(Medium Object Storage,简称 MOB),这个特性使得HBase能够非常良好的存储大小在100KB-10M的图片、文档、音频、短视频等二进制数据。
架构如上,HBase MOB的设计类似于HBase + HDFS的方式,中等对象在写入HDFS之前同样是先写入MemStore,但是刷写与其他写入数据不同,MOB数据被刷写到MOB File中,MOB File被存放在特殊的Region中。
MOB特性在Apache HBase 2.0、CDH 5.4.x 或 HDP 2.5.x 及以上版本支持,用户可以基于HBase MOB特性设计自己的对象存储服务。
Hadoop Ozone
Ozone是 Apache Hadoop 的子项目,为了提供分布式、可扩展的对象存储功能,主要是为了弥补HDFS在小文件存储方面的不足之处。Ozone建立在一个高可用、支持块复制的Hadoop分布式数据存储层之上,称为Hadoop Distributed Data Store(HDDS),上层可对接 Spark、Hive 以及 Yarn 等计算调度引擎。 但是目前还处于alpha内部测试版本,暂时不建议生产环境中使用。
总结
对象存储主要是解决海量图片、文档、音视频的存储,其中主流的重量级解决方案是Swift与Ceph,它们各有特点,可以参考搜索引擎上的对比,Hadoop生态体系中备受关注的是HBase MOB,另外轻量级的 Minio也是一种比较好的选择。MongoDB也提供了大文件存储模块GridFS。建议根据实际情况做技术选型 。
感谢您耐心看完的文章。
- 块存储、文件存储、对象存储这三者和分布式文件存储系统的本质区别
- 面向对象存储所需要知道的十四大问题
- Mysql海量数据存储和解决方案第一篇 分布式DB方案
- 块存储、文件存储、对象存储这三者和分布式文件存储系统的本质区别
- 分布式对象存储Ambry(3)源代码结构与改造调试
- 分布式对象存储Ambry - 官方博客翻译与摘录(2)Ambry设计目标
- RADOS分布式对象存储原理简介
- 对象存储Object,分布式文件存储NAS,分布式块存储(ServerSAN)
- 大数据学习笔记之二十二 云存储的分布式对象存储和分布式块存储
- 分布式环境下session的存储的几个解决方案
- 对象继承时不能实现数据库的存储的解决方案
- 分布式环境下session的存储的几个解决方案
- 分布式对象存储Ambry(2)基本使用API与集群容错测试
- mogileFS分布式文件存储解决方案
- 分布式对象存储Ambry(1)简介与集群部署
- 分布式对象存储系统在openstack中的应用研究
- mogileFS分布式文件存储解决方案
- 分布式对象存储Ambry(1)简介与集群部署
- 分布式对象存储系统在openstack中的应用研究--Ceph(一)
- 我知道点redis-数据结构与对象(对象)-对象存储