前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分布式存储是什么

分布式存储是什么

作者头像
木鸟杂记
发布2021-09-26 17:01:24
2.6K1
发布2021-09-26 17:01:24
举报
文章被收录于专栏:木鸟杂记木鸟杂记

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

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

用户侧

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

实现侧

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

小结

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

题图故事

2021 初春,北京居庸关隘,山桃盛开,粉团如雾

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-03-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 木鸟杂记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 用户侧
  • 实现侧
  • 小结
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档