分布式存储是什么

简介: 分布式存储是什么

最近知乎上有个问题,分布式存储是什么?我做对象存储有一阵了,最开始只知道一些零散、分离的概念;随着开发、维护系统,慢慢的有了一些感觉,能在脑海中慢慢建立一些模型,将之前的了解的概念缀连起来;随着看的论文、开源系统越来越多,逐渐将这些连通分支勾连起来,形成一个小网。

总的来说,我们理解一个概念时,总会试图找到某个角度,并在脑中建立一个模型,以熟悉的模子去刻画他。下面以我一些浅薄的经验,从两方面来解释下分布式存储:用户侧实现侧。因为在软件领域有个经典的拆解问题的角度:接口和实现分离。

用户侧

从用户侧来说,单个应用的数据越来越多,廉价商用单机存储难以满足。不断增大单机存储容量是一种思路,但是成本会成倍上升,而且总有上限。另一种思路就是集合很多机器对外提供服务。最传统的接口是文件系统数据库,但其接口都较为复杂,实现不易。因此在分布式存储系统诞生之初,会寻求简化接口,以将精力放在处理分布式系统的带来的复杂性上。最早摸到数据存储瓶颈的大厂都有类似的选择,比如 Google 裁剪的文件系统 GFS,比如 Amazon 的对象存储 S3,比如 Facebook 的小文件存储 Haystack。随着分布式系统实践经验的不断累积,可以支持更复杂的接口实现,最近趋势是提供更丰富的接口以满足不同场景需求,比如满足缓存的分布式 KV(Tair,TiKV),满足通用需求的分布式文件系统(GlusterFS,CephFS,JuiceFS),满足关系存储的 NewSQL(TiDB,PolarDB)。

实现侧

从实现侧来说,数据如何分散到多机上去?最基本的分布式解决办法是将数据按一定尺寸进行分片(Partition),使得一个分片能被任何单机存下。当然在实现中,分片一般会更小。随着数据越来越多,分片会越来越多,需要的机器也就越来越多。但硬件有良品率和老化问题,单机发生概率虽然不大,但在海量机器的场景下就会成为问题。为了保障数据不丢,需要将每个分片做冗余处理,包括EC编码(纠删码)和多副本(replication)。多副本数据如何做同步,这又会引出分布式系统中经典的一致性问题。再展开就略晦涩了,有兴趣可以探讨。

小结

总结一下,从底层实现来看,分布式存储将数据存到多台机器上,并且解决可用性、可靠性和一致性等问题,近年来有很多实践经验,也慢慢沉淀出来了一些模式。以这些通用实现为底座,可以包装出不同的用户接口,比如文件系统,关系型数据库,对象存储等等,以满足不同用户海量数据的分布式存储、查询、处理等多元需求。

相关文章
|
存储 监控 算法
|
18天前
|
存储 分布式计算 负载均衡
分布式文件系统
【10月更文挑战第12天】
46 3
|
4月前
|
存储 人工智能 负载均衡
分布式存储的数据冗余
【7月更文挑战第28天】分布式存储的数据冗余
141 4
|
存储 缓存 算法
分布式数据库架构:高可用、高性能的数据存储
分布式数据库架构:高可用、高性能的数据存储
988 0
|
存储 缓存 分布式计算
分布式系统开发实战:分布式存储,分布式存储常用技术
互联网每天产生数以亿计的数据,这些数据如何能够被正确地存储、解析、利用,是摆在每个数据公司面前的挑战。传统的关系型数据库,对于处理大规模的数据显得力不从心,由此以NoSQL为代表的分布式存储应运而生。 NoSQL,泛指非关系型的数据库。NoSQL数据库的产生旨在解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用的难题。
|
存储 大数据
大数据数据存储的分布式文件系统的GlusterFS
在分布式文件系统 GlusterFS 中,数据的存储和管理是基于块的分布式存储。
79 0
|
存储 缓存 程序员
E906的存储系统|学习笔记
快速学习 E906的存储系统
327 0
E906的存储系统|学习笔记
|
存储 芯片 内存技术
存储系统
存储系统
183 0
|
存储 容灾 大数据
分布式存储系统
本次分享内容主要包括三部分:(一)分布式存储系统应该具备的能力;(二)阿里云分布式存储系统盘古的介绍;(三)分布式系统技术展望。
12140 0
|
存储 数据中心 存储虚拟化