何为对象存储
对象存储为分布式而生,为软件架构提供分布式、高可靠、低成本的存储方案。
在开发过程中不只一次对对象存储发出概念性疑问,它是用来干嘛的?在软件架构中属于什么角色?对比webdav/Sftp/smb/nfs有什么特别的优势?每每得不到回答,但在工作中确确实实使用到。
存储痛点
在单体传统软件开发时代,针对软件运行过程中产生的非结构性数据,如文件、流数据、视频、图片等等,一般保存在操作系统管理下的存储。随着业务的发展,单一操作系统下的单一存储慢慢地存在存储瓶颈,频频地报存储空间不足,大量的非结构性数据检索困难,系统无法水平扩展,带着大量的数据而迁移困难,种种弊端。那个时候,出现了SAN和NAS等解决产品,核心思路是存储网络化。
到大数据与云原生时代,上面的方案已经不适应时代的需求,想想淘宝卖货、抖音视频、微信等等国民级的应用,再加上移动设备的普及,大量非结构化数据如照片、视频、音频等,传统的文件系统和块存储显得捉襟见肘,无法有效应对这一挑战。
分布式存储
在发展的过程中,对存储的需求,我想应该是扁平化、检索方便、扩展性强、高可靠性。
对象存储通过将数据切分成对象并赋予唯一标识符(通常使用URL或类似形式),然后将这些对象存储在分布式的存储设备中,解决了传统存储方式的限制,适当的分布策略使之可以让存储随着业务的发展而纯线性发展。对象存储将数据划分为可自包含的对象,每个对象都有一个唯一的标识符(ID)。对象存储的主要特点包括:
- 对象级别的元数据:每个对象都包含了描述其属性和标签的元数据,使得数据可以更加灵活地被管理和检索。
- 扁平的命名空间:对象存储使用扁平的命名空间结构,使得数据可以被直接访问,无需像传统文件系统那样通过目录层级进行查找。
- 强大的可扩展性:对象存储采用分布式架构,能够轻松地横向扩展以适应不断增长的数据规模。
- 高可靠性和容错性:对象存储通常具备冗余机制和数据修复功能,确保数据的可靠性和持久性。
存储提供
在2023年,各大云平台都有自己的OSS(对象存储),存储价格也不贵,可靠性超高。一些离线业务也有相应的对象存储组件,华为等都有提供线下服务器可以购买。
开源对象存储有Ceph、OpenStack Swift、Hadoop HDFS、GlusterFS、MinIO,其中Minio为GlusterFS原来的那些开发者出来之后创立的,相对年轻。