带你读《存储漫谈:Ceph原理与实践》——1.1.2 分布式存储系统

简介: 带你读《存储漫谈:Ceph原理与实践》——1.1.2 分布式存储系统

1.1.2  分布式存储系统


分布式存储最早由谷歌提出,其目的是通过廉价的商用服务器来提供海量、弹性可扩展的数据存储系统。它将数据分散地存储到多台存储服务器上(服务器分布在企业的各个角落),并将这些分散的存储资源构成虚拟的存储设备。

image.png

图 1-5 展示了分布式存储系统的工作模式。

分布式存储架构通常由 3 个部分组成:客户端、元数据服务器以及数据服务器。客户端负责发送读写请求、缓存文件元数据和文件数据;元数据服务器作为整个系统的核心组件,负责管理文件元数据和处理客户端的请求;数据服务器负责存放文件数据,保证数据的可用性和完整性。该架构的好处是存储系统整体的性能和容量能够随着系统内存储服务器的增加不断地近似线性扩展,系统具有很强的伸缩性。


1. 分布式存储的兴起

分布式存储系统的兴起与互联网的发展密不可分,互联网公司由于其数据增量大且初期 IT 投资相对较少,对大规模分布式存储系统有着强烈的业务需求以及使用意愿,期望通过规模效应降低数据的存储成本。

与传统建设方式中使用的高端服务器、高端存储器和高端处理器不同,互联网公司的分布式存储系统由数量众多、成本低廉、高性价比的普通服务器通过网络连接而成,其主要优势有以下 3 点。

(1)系统可获得更好的 scale out 能力

互联网的业务发展速度快,而且更加注重成本开支,要求存储系统不能依靠传统的scale up 方式(即先购买小型机,再购买中型机,甚至大型机)来满足业务数据的存储需求。互联网公司使用的分布式存储系统要求支持 scale out 能力,即可以通过增加普通服务器的数量来提高系统的整体处理能力。

(2)系统拥有更好的成本优势

普通服务器成本低廉,故障率相对较高,但分布式存储系统的分区容错性可保证存储集群因为故障而被分解为多个部分之后,存储系统整体仍然能够正常对外提供服务,软件层面的自动容错,可保证存储集群的数据一致性,互联网公司可最大限度地享受普通服务器带来的高性价比优势。

(3)系统可获得更加线性的性能输出

随着服务器的不断加入,存储集群的计算、存储、网络服务能力都会线性增加,加之分布式存储系统在软件层面实现 I/O 负载的自动均衡,存储系统的 I/O 处理能力可以得到线性的扩展,对于新增的业务需求,互联网公司可以精确地估算新增资源投入,实现“小步快跑”的资源建设,最优化资源的投入产出比。


2. 分布式存储的优势

分布式存储系统自诞生以来,一直热度不减,被企业津津乐道并持续应用于核心生产系统,究其原因,分布式存储系统可带来如下优势。

(1)系统计算处理能力更优

摩尔定律告诉人们:当价格不变时,集成电路上可容纳的元器件的数目,每隔 18 ~ 24个月便会增加一倍,性能也将提升一倍,即随着时间的推移,单位成本支出所能购买的计算能力在不断提升。换个角度,具体到某个固定时间点,单颗处理器的计算能力终究会有上限,即使企业有意愿花更多的成本去购买计算能力,市场上也没有芯片能够满足其需求。分布式存储系统的架构允许数据分散存储在多台独立的服务器上,统一对外提供服务,可以最大化利用系统所有资源,最优化均衡系统所有负载,消除热点,获得一致的性能表现,大大提升存储群集计算处理能力。

(2)系统扩展能力更强

同上分析,具体到某个固定时间点来购买单颗不同型号的处理器,所购买的处理器性能越高,所要付出的成本开销就越大,性价比就越低。即在一个确定的时间点,通过升级硬件来提升性能会越来越不划算,简单地依靠计算能力的 scale up 来提升存储系统 I/O 处理能力并非明智之举。分布式存储系统的 scale out 特性,允许存储系统纳管更多的服务器,且随着纳管服务器数量的增加,存储系统的容量及性能可获得近似线性地提升,为存储系统的容量扩展以及性能扩展提供可靠的技术保障。

(3)系统稳定性更可靠

若采用单机系统,服务器一旦出现问题,那么系统就完全不能使用,无法满足生产环境高可靠的需求。传统集中式存储的负载呈现出高度的不均衡性,即同一镜像的数据通常分布在同一磁盘托架中,若控制器出现故障,存储对外服务性能将严重降级,且数据重建期间,存储系统中的部分磁盘会承受很大的负载压力,重建耗时长,业务经受严重风险。分布式存储系统将数据分散存储到多台独立的服务器上,无单点故障,单盘损坏后,全部磁盘参与数据重建,分摊系统压力,对存储系统整体性能输出影响较小,可以最大限度地降低业务风险。


3. 选择分布式存储的必然性

云存储和大数据是构建在分布式存储之上的应用:移动终端的计算能力和存储空间终究是有上限的,且在多个设备之间资源共享的需求也愈发强烈,这使得云网盘、云相册之类的云存储应用迅速蹿红,而云存储的核心仍是其后端便于数据共享访问的大规模分布式存储系统;大数据则更进一步,不仅需要存储海量数据,还需要通过合适的计算框架或者工具对这些数据进行分析,抽取数据中的价值,如果没有分布式存储,海量数据便没有了生存之地,更谈不上对数据进行分析。

由此可见,分布式存储系统是云存储和大数据发展的必然要求,继而也是 IT 技术发展的必然要求。

相关文章
|
3天前
|
存储 运维 负载均衡
构建高可用性GraphRAG系统:分布式部署与容错机制
【10月更文挑战第28天】作为一名数据科学家和系统架构师,我在构建和维护大规模分布式系统方面有着丰富的经验。最近,我负责了一个基于GraphRAG(Graph Retrieval-Augmented Generation)模型的项目,该模型用于构建一个高可用性的问答系统。在这个过程中,我深刻体会到分布式部署和容错机制的重要性。本文将详细介绍如何在生产环境中构建一个高可用性的GraphRAG系统,包括分布式部署方案、负载均衡、故障检测与恢复机制等方面的内容。
40 4
构建高可用性GraphRAG系统:分布式部署与容错机制
|
5天前
|
开发者 容器
Flutter&鸿蒙next 布局架构原理详解
本文详细介绍了 Flutter 中的主要布局方式,包括 Row、Column、Stack、Container、ListView 和 GridView 等布局组件的架构原理及使用场景。通过了解这些布局 Widget 的基本概念、关键属性和布局原理,开发者可以更高效地构建复杂的用户界面。此外,文章还提供了布局优化技巧,帮助提升应用性能。
64 4
|
5天前
|
存储 Dart 前端开发
flutter鸿蒙版本mvvm架构思想原理
在Flutter中实现MVVM架构,旨在将UI与业务逻辑分离,提升代码可维护性和可读性。本文介绍了MVVM的整体架构,包括Model、View和ViewModel的职责,以及各文件的详细实现。通过`main.dart`、`CounterViewModel.dart`、`MyHomePage.dart`和`Model.dart`的具体代码,展示了如何使用Provider进行状态管理,实现数据绑定和响应式设计。MVVM架构的分离关注点、数据绑定和可维护性特点,使得开发更加高效和整洁。
142 3
|
18天前
|
容器
Flutter&鸿蒙next 布局架构原理详解
Flutter&鸿蒙next 布局架构原理详解
|
19天前
|
存储 监控 分布式数据库
百亿级存储架构: ElasticSearch+HBase 海量存储架构与实现
本文介绍了百亿级数据存储架构的设计与实现,重点探讨了ElasticSearch和HBase的结合使用。通过ElasticSearch实现快速检索,HBase实现海量数据存储,解决了大规模数据的高效存储与查询问题。文章详细讲解了数据统一接入、元数据管理、数据一致性及平台监控等关键模块的设计思路和技术细节,帮助读者理解和掌握构建高性能数据存储系统的方法。
百亿级存储架构: ElasticSearch+HBase 海量存储架构与实现
|
22天前
|
消息中间件 中间件 数据库
NServiceBus:打造企业级服务总线的利器——深度解析这一面向消息中间件如何革新分布式应用开发与提升系统可靠性
【10月更文挑战第9天】NServiceBus 是一个面向消息的中间件,专为构建分布式应用程序设计,特别适用于企业级服务总线(ESB)。它通过消息队列实现服务间的解耦,提高系统的可扩展性和容错性。在 .NET 生态中,NServiceBus 提供了强大的功能,支持多种传输方式如 RabbitMQ 和 Azure Service Bus。通过异步消息传递模式,各组件可以独立运作,即使某部分出现故障也不会影响整体系统。 示例代码展示了如何使用 NServiceBus 发送和接收消息,简化了系统的设计和维护。
37 3
|
29天前
|
前端开发 Java 应用服务中间件
21张图解析Tomcat运行原理与架构全貌
【10月更文挑战第2天】本文通过21张图详细解析了Tomcat的运行原理与架构。Tomcat作为Java Web开发中最流行的Web服务器之一,其架构设计精妙。文章首先介绍了Tomcat的基本组件:Connector(连接器)负责网络通信,Container(容器)处理业务逻辑。连接器内部包括EndPoint、Processor和Adapter等组件,分别处理通信、协议解析和请求封装。容器采用多级结构(Engine、Host、Context、Wrapper),并通过Mapper组件进行请求路由。文章还探讨了Tomcat的生命周期管理、启动与停止机制,并通过源码分析展示了请求处理流程。
|
29天前
|
消息中间件 存储 监控
消息队列系统中的确认机制在分布式系统中如何实现
消息队列系统中的确认机制在分布式系统中如何实现
|
26天前
|
存储 分布式计算 druid
大数据-155 Apache Druid 架构与原理详解 数据存储 索引服务 压缩机制
大数据-155 Apache Druid 架构与原理详解 数据存储 索引服务 压缩机制
44 3
|
26天前
|
消息中间件 分布式计算 druid
大数据-154 Apache Druid 架构与原理详解 基础架构、架构演进
大数据-154 Apache Druid 架构与原理详解 基础架构、架构演进
27 2

热门文章

最新文章