分布式存储单主、多主和无中心架构的特征与趋势

简介: 分布式存储单主、多主和无中心架构的特征与趋势

分布式对象存储和分布式文件系统具有很强烈的对比性


分布式对象存储是key/value的存储模式,以restful访问方式为主,几乎处于扁平化的存储形式,通过地址作为主键,访问、更新的文件对象作为值。文件本身可以分布式分片,但是key/value的访问都是原子性,文件不能追加数据,亦不能随机访问文件的片段,必须整存整取。几乎大多数的互联网web资源访问都适合这种模式,例如:大厂们都云存储OSS。


分布式文件系统不同于对象存储,结构上是目录资源管理的树形层次,主要是以模拟或连接Unix/Linux文件系统为主,分布式文件系统就特别适合在文件块追加数据,或者在文件块中随机找到偏移量,读取一小段数据。


分布式对象存储 PK 分布式文件系统的优劣也很鲜明,前者特别适合海量小文件的快速存与读,因此大多数互联网不太大的照片、文件资源存储都适合分布式对象存储系统;但对于大数据计算过程管理、大文件随机读取和追加,就特别适合分布式文件系统了,像Hadoop的批处理计算底层使用分布式文件系统(HDFS)也是这个原因!


好了,先赘述了一些概念!那么直入主题:


分布式文件系统的发展,master/slave架构占了很大一部分,例如hdfs,zookeeper这些hadoop生态圈的工具,基本上是主从架构的.而以glusterfs为代表的无中心架构也在逐渐发展,但是想了解的是,未来会出现多主架构,还是会使用glusterfs这种无中心架构呢?因为单节点的应用现在越来越成为一个瓶颈了,又或者说,还是有其他的替代方案呢?


对于Master/Slave的集中式架构细究起来也分为不同的形式


(一)协调管理方面:


**主备式:**例如HDFS的namenode就是管理者一主一备,主坏,备上;


**选举式:**管理者是被多个备选推举的,例如Elasticsearch,zookeeper的主节点选举。


分布式数据库有管理节点负责调度和管理数据节点,也有数据节点负责数据读写。


(二)数据方面:


**数据集中式管理:**例如:HDFS的namenode管理着具有完整语义的元数据树形结构,那么就能对数据块读写的节点进行集中分配,指哪打哪!


**数据非集中式管理:**例如:Elasticsearch等很多分布式存储的数据分片机制使用Hash分片存储访问,不用主节点来集中分配,这样主节点就不复杂,只要按照约定协调好不同节点的工作任务就可以了,但是若一个节点挂了,整个集群的数据都要再分配一次!


再看看对等式架构:


不同于master/slave集中式架构,有一个主节点协调所有从节点,对等式架构集群中每个节点都是平等的,例如:glusterfs就是典型的对等式架构,通过Hash算法来确定谁在当下的一次请求中作为头目,主导其他多个节点的数据处理。


20210302215936294.png


其实无论是一个中心的主从式,还是无中心的对等式,都存在明显的硬伤:


**资源管理方面对比:**例如:HDFS的namenode元数据是用树形管理,具有完整语义的文件资源管理系统,想知道哪个节点的状态,处理那个节点的数据,就非常容易;


恰恰是无中心架构是万万都做不到的事情,对数据进行一次管理,就要整个集群的各个节点从头走一遍,很消耗资源,因此很难见到大多数的无中心存储架构对外随意支持数据迁移,要命呢!


**可靠性方面对比:**一个中心的主从式架构要是主挂了,虽然有备的可以顶上来,但是这个过程不是想象中那么可靠,首先主备切换有中断时间,其次有时候会出现所谓的脑裂,而且备的再挂掉,整个集群就game over了;


无中心的问题在于每个节点都很独立很自治,这就存在信息迟滞问题,一个节点的状态或配置信息变化了,整个集群获取变化的过程会很慢,这就无法做到分布式一致性了。


**扩展性方面对比:**主从式的另外一个瓶颈来自主节点的资源消耗问题,内存是有限的,元数据管理的文件数量是有限制的,HDFS又是这一问题的带头大哥,它适合支持较大文件,若太多的小文件会导致内存中的元数据树太大而内存溢出,当然了存储文件特别庞大也会出现内存瓶颈;另外支持的元数据文件也是有Linux的最大文件数限制的,对于像Google这种管理着超级大数据业务的企业或机构当然一定要考虑这个事情。


恰恰无中心的架构就不存在主的瓶颈问题,可以实现线性的扩张。但无主也好,单主也好,只要使用hash进行约定式的节点数据分配,都存在hash可能导致的数据倾斜问题,倾斜问题就会带来某一个数据节点的若大压力,因此数据管理员需要时时关注这一问题。


从未来分布式存储的发展看,多主架构的出现是一定的


多主架构的实现不仅完全解决了单主的瓶颈问题之外,还防止了无中心架构的所有缺点,当然这种架构从分布式存储的未来说肯定是最好的一种选择了!关键是到底有没有这种架构呢?


目前只能说又是Google了!Colossus File System了解一下,GFS的下一代的继任者,可以说是GFS 2.0版本吧!


我对Golossus的了解也是所知有限,Google对这方面的细节也尚未公诸于众,我也只能把知道的一点点进行脑补再讲出来:


Colossus File System是通过key/value替代树形结构实现元数据存储和管理,那么Colossus就可以实现多个主节点了!所谓的分布式元数据管理。关键点在于——将原来元数据完整语义的树形结构转换成为完整语义的键值存储结构,同时还保证操作的原子性。


最牛逼的是它的架构:Colossus的key/value是基于BigTable,而BigTable必须基于GFS,但是Colossus又是GFS的升级改造!


我们再翻译成开源的Hadoop来理解:HDFS2的namenode对元数据的管理基于HBase,HBase基于HDFS,但是HDFS2又是HDFS的升级改造!


是不是已经绕进去了!我们用一张图来表现其逻辑,当然这张图也只是脑补图!


20210302215939503.png


Colossus File System的Master Server需要管理所有的数据节点D Server(类似GFS的ChunkServer),管理的元数据都存储在BigTable上,而BigTable的基础设施是一个微型的GFS,它才是元数据(Metadata)的真正存储地点(Metadata ChunkServer)。就好像氢弹得通过原子弹来驱动一个道理!


那么GFS中Master Server的元数据树,就只是管理打包好的元数据文件块了,这个文件量就真不大了!而真正的元数据都是由它的上层BigTable使用key/value来管理,这就几乎可以实现无限扩大的元数据存储量!


对于未来的多主架构我也是了解这么多,让我们对分布式存储未来发展能有所了解!


相关实践学习
对象存储OSS快速上手——如何使用ossbrowser
本实验是对象存储OSS入门级实验。通过本实验,用户可学会如何用对象OSS的插件,进行简单的数据存、查、删等操作。
相关文章
|
6月前
|
人工智能 Kubernetes 数据可视化
Kubernetes下的分布式采集系统设计与实战:趋势监测失效引发的架构进化
本文回顾了一次关键词监测任务在容器集群中失效的全过程,分析了中转IP复用、调度节奏和异常处理等隐性风险,并提出通过解耦架构、动态IP分发和行为模拟优化采集策略,最终实现稳定高效的数据抓取与分析。
117 2
Kubernetes下的分布式采集系统设计与实战:趋势监测失效引发的架构进化
|
7月前
|
存储 机器学习/深度学习 缓存
软考软件评测师——计算机组成与体系结构(分级存储架构)
本内容全面解析了计算机存储系统的四大核心领域:虚拟存储技术、局部性原理、分级存储体系架构及存储器类型。虚拟存储通过软硬件协同扩展内存,支持动态加载与地址转换;局部性原理揭示程序运行特性,指导缓存设计优化;分级存储架构从寄存器到外存逐级扩展,平衡速度、容量与成本;存储器类型按寻址和访问方式分类,并介绍新型存储技术。最后探讨了存储系统未来优化趋势,如异构集成、智能预取和近存储计算等,为突破性能瓶颈提供了新方向。
|
3月前
|
缓存 Cloud Native 中间件
《聊聊分布式》从单体到分布式:电商系统架构演进之路
本文系统阐述了电商平台从单体到分布式架构的演进历程,剖析了单体架构的局限性与分布式架构的优势,结合淘宝、京东等真实案例,深入探讨了服务拆分、数据库分片、中间件体系等关键技术实践,并总结了渐进式迁移策略与核心经验,为大型应用架构升级提供了全面参考。
|
3月前
|
存储 NoSQL 前端开发
【赵渝强老师】MongoDB的分布式存储架构
MongoDB分片通过将数据分布到多台服务器,实现海量数据的高效存储与读写。其架构包含路由、配置服务器和分片服务器,支持水平扩展,结合复制集保障高可用性,适用于大规模生产环境。
377 1
|
7月前
|
监控 算法 关系型数据库
分布式事务难题终结:Seata+DRDS全局事务一致性架构设计
在分布式系统中,CAP定理限制了可用性、一致性与分区容错的三者兼得,尤其在网络分区时需做出取舍。为应对这一挑战,最终一致性方案成为常见选择。以电商订单系统为例,微服务化后,原本的本地事务演变为跨数据库的分布式事务,暴露出全局锁失效、事务边界模糊及协议差异等问题。本文深入探讨了基于 Seata 与 DRDS 的分布式事务解决方案,涵盖 AT 模式实践、分片策略优化、典型问题处理、性能调优及高级特性实现,结合实际业务场景提供可落地的技术路径与架构设计原则。通过压测验证,该方案在事务延迟、TPS 及失败率等方面均取得显著优化效果。
431 61
|
存储 缓存 NoSQL
分布式系统架构8:分布式缓存
本文介绍了分布式缓存的理论知识及Redis集群的应用,探讨了AP与CP的区别,Redis作为AP系统具备高性能和高可用性但不保证强一致性。文章还讲解了透明多级缓存(TMC)的概念及其优缺点,并详细分析了memcached和Redis的分布式实现方案。此外,针对缓存穿透、击穿、雪崩和污染等常见问题提供了应对策略,强调了Cache Aside模式在解决数据一致性方面的作用。最后指出,面试中关于缓存的问题多围绕Redis展开,建议深入学习相关知识点。
806 8
|
8月前
|
监控 Linux 应用服务中间件
Linux多节点多硬盘部署MinIO:分布式MinIO集群部署指南搭建高可用架构实践
通过以上步骤,已成功基于已有的 MinIO 服务,扩展为一个 MinIO 集群。该集群具有高可用性和容错性,适合生产环境使用。如果有任何问题,请检查日志或参考MinIO 官方文档。作者联系方式vx:2743642415。
2989 57
|
7月前
|
存储 关系型数据库 MySQL
成本直降30%!RDS MySQL存储自动分层实战:OSS冷热分离架构设计指南
在日均订单量超500万的场景下,MySQL数据年增200%,但访问集中在近7天(85%)。通过冷热数据分离,将历史数据迁移至OSS,实现存储成本下降48%,年省72万元。结合RDS、OSS与Redis构建分层架构,自动化管理数据生命周期,优化查询性能与资源利用率,支撑PB级数据扩展。
533 3
|
7月前
|
存储 关系型数据库 数据库
高性能云盘:一文解析RDS数据库存储架构升级
性能、成本、弹性,是客户实际使用数据库过程中关注的三个重要方面。RDS业界率先推出的高性能云盘(原通用云盘),是PaaS层和IaaS层的深度融合的技术最佳实践,通过使用不同的存储介质,为客户提供同时满足低成本、低延迟、高持久性的体验。
|
8月前
|
消息中间件 缓存 算法
分布式开发:数字时代的高性能架构革命-为什么要用分布式?优雅草卓伊凡
分布式开发:数字时代的高性能架构革命-为什么要用分布式?优雅草卓伊凡
569 0
分布式开发:数字时代的高性能架构革命-为什么要用分布式?优雅草卓伊凡