带你读《存储漫谈:Ceph原理与实践》——1.2.1 有中心架构

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 带你读《存储漫谈:Ceph原理与实践》——1.2.1 有中心架构

1.2  各主流分布式方案对比


分布式存储系统种类繁多,通常按照使用场景,可将分布式存储系统划分为分布式块存储、分布式文件存储以及分布式对象存储 3 类,如图 1-6 所示。


image.png 图 1-6 分布式存储系统分类

块存储将裸磁盘空间直接映射给主机使用,主机层面操作系统识别出磁盘后,可对磁盘进行分区、格式化文件系统或者直接进行裸设备读写。块存储使用线性地址空间,不关心数据的组织方式以及结构,读写速度更快,但共享性较差。

文件存储将文件系统直接挂载给主机使用,主机层面操作系统可对挂载后的文件系统直接进行读写,读写操作遵循 POSIX(Portable Operating System Interface of UNIX)语义,类似操作本地文件系统。文件存储使用树状结构以及路径访问方式,更方便理解、记忆,更适合结构化数据的存取,共享性更好,但读写性能较差。

对象存储介于块存储与文件存储之间,以 restful api 或者客户端 sdk 的形式供用户使用,更适合非结构化数据的存取。对象存储使用统一的底层存储系统,管理文件以及底层介质的组织结构,然后为每个文件分配一个唯一的标识,用户需要访问某个文件,直接提供文件的标识即可。

除以上 3 种分布式存储方案的划分外,分布式存储系统还可分为分布式数据库系统和分布式缓存系统等。

从架构角度切入,无论是分布式块存储系统、分布式对象存储系统、分布式文件存储系统,抑或是分布式数据库系统、分布式缓存系统,其架构无外乎以下两种。

有中心架构

有中心架构下,分布式存储集群实现统一的元数据服务,元数据统一存储并管理,客户端发起对数据的读写前,先向元数据服务器发起读写请求。

无中心架构

无中心架构下,分布式存储系统没有单独的元数据服务,元数据与数据一样,切片打散后存储在多台存储服务器上,客户端通过特定算法进行计算,确定元数据及数据的存储位置,并直接向存储节点相关进程发起数据的读写访问请求。依照使用的算法类型,无中心架构又可细分为私有算法模式以及一致性散列(Hash)模式。下文以 HDFS、Ceph、Swift 为例,对 3 种方案做简要对比。


1.2.1  有中心架构

HDFS(Hadoop Distribution File System)是有中心分布式存储系统的典型代表。在这种架构中,一部分节点 Name Node 用于存放管理数据(元数据文件),另一部分节点Data Node 用于存放业务数据(数据文件),其系统架构如图 1-7 所示。

在图 1-7 中,如果客户端需要从某个文件读取数据,首先从 Name Node 获取该文件的位置信息(具体在哪个 Data Node),然后从该 Data Node 上获取具体的数据。在该架构中Name Node通常是主备部署,而Data Node则是由大量服务器节点构成一个存储集群。由于元数据的访问频度和访问量相对数据都要小很多(参见后文 HDFS 使用场景),因此Name Node 通常不会成为性能瓶颈;Data Node 在集群中通常将数据以副本形式存放,该策略下既可以保证数据的高可用性,又可以分散客户端的请求。因此,这种分布式存储架构可以横向扩展 Data Node 的数量来增加存储系统的承载能力,也即实现系统的动态横向扩展。

HDFS 目前主要用于大数据的存储场景,HDFS 也是 Hadoop 大数据架构中的存储组件。HDFS 在开始设计的时候,就已经明确了它的应用场景(即大数据服务),具体如下:

image.png

图 1-7 HDFS 系统架构

(1)对大文件存储的性能要求比较高的业务场景

HDFS 采用集中式元数据的方式进行文件管理,元数据保存在 Name Node 的内存中,文件数量的增加会占用大量的 Name Node 内存。即当 HDFS 存储海量小文件时,元数据会占用大量内存空间,引起整个分布式存储系统性能的下降。由于此限制,HDFS 更适合应用在存储大文件的使用场景,文件大小以百 MB 级别或者 GB 级别为宜。

(2)读多写少的业务场景

HDFS 的数据传输吞吐量比较高,但是数据写入时延比较差,因此,HDFS 不适合频繁的数据写入场景,但就大数据分析业务而言,其处理模式通常为一次写入、多次读取,然后进行数据分析工作,HDFS 可以胜任该场景。

相关实践学习
块存储快速入门
块存储是阿里云为云服务器ECS提供的块设备产品。通过体验挂载数据盘、分区格式化数据盘(Linux)、创建云盘快照、重新初始化数据盘、使用快照回滚云盘和卸载数据盘等功能,带您快速入门块存储。
相关文章
|
10天前
|
人工智能 前端开发 编译器
【AI系统】LLVM 架构设计和原理
本文介绍了LLVM的诞生背景及其与GCC的区别,重点阐述了LLVM的架构特点,包括其组件独立性、中间表示(IR)的优势及整体架构。通过Clang+LLVM的实际编译案例,展示了从C代码到可执行文件的全过程,突显了LLVM在编译器领域的创新与优势。
31 3
|
13天前
|
运维 持续交付 云计算
深入解析云计算中的微服务架构:原理、优势与实践
深入解析云计算中的微服务架构:原理、优势与实践
43 1
|
17天前
|
存储 数据采集 弹性计算
Codota的存储架构通过多种方式保障数据安全
Codota的存储架构通过多种方式保障数据安全
25 4
|
4天前
|
消息中间件 SQL 中间件
大厂都在用的分布式事务方案,Seata+RocketMQ带你打破10万QPS瓶颈
分布式事务涉及跨多个数据库或服务的操作,确保数据一致性。本地事务通过数据库直接支持ACID特性,而分布式事务则需解决跨服务协调难、高并发压力及性能与一致性权衡等问题。常见的解决方案包括两阶段提交(2PC)、Seata提供的AT和TCC模式、以及基于消息队列的最终一致性方案。这些方法各有优劣,适用于不同业务场景,选择合适的方案需综合考虑业务需求、系统规模和技术团队能力。
51 7
|
24天前
|
SQL Java 数据库连接
Mybatis架构原理和机制,图文详解版,超详细!
MyBatis 是 Java 生态中非常著名的一款 ORM 框架,在一线互联网大厂中应用广泛,Mybatis已经成为了一个必会框架。本文详细解析了MyBatis的架构原理与机制,帮助读者全面提升对MyBatis的理解和应用能力。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
Mybatis架构原理和机制,图文详解版,超详细!
|
8天前
|
机器学习/深度学习 存储 运维
分布式机器学习系统:设计原理、优化策略与实践经验
本文详细探讨了分布式机器学习系统的发展现状与挑战,重点分析了数据并行、模型并行等核心训练范式,以及参数服务器、优化器等关键组件的设计与实现。文章还深入讨论了混合精度训练、梯度累积、ZeRO优化器等高级特性,旨在提供一套全面的技术解决方案,以应对超大规模模型训练中的计算、存储及通信挑战。
33 4
|
9天前
|
SQL 存储 关系型数据库
MySQL进阶突击系列(01)一条简单SQL搞懂MySQL架构原理 | 含实用命令参数集
本文从MySQL的架构原理出发,详细介绍其SQL查询的全过程,涵盖客户端发起SQL查询、服务端SQL接口、解析器、优化器、存储引擎及日志数据等内容。同时提供了MySQL常用的管理命令参数集,帮助读者深入了解MySQL的技术细节和优化方法。
|
9天前
|
缓存 NoSQL Java
Spring Boot中的分布式缓存方案
Spring Boot提供了简便的方式来集成和使用分布式缓存。通过Redis和Memcached等缓存方案,可以显著提升应用的性能和扩展性。合理配置和优化缓存策略,可以有效避免常见的缓存问题,保证系统的稳定性和高效运行。
25 3
|
8天前
|
消息中间件 架构师 数据库
本地消息表事务:10Wqps 高并发分布式事务的 终极方案,大厂架构师的 必备方案
45岁资深架构师尼恩分享了一篇关于分布式事务的文章,详细解析了如何在10Wqps高并发场景下实现分布式事务。文章从传统单体架构到微服务架构下分布式事务的需求背景出发,介绍了Seata这一开源分布式事务解决方案及其AT和TCC两种模式。随后,文章深入探讨了经典ebay本地消息表方案,以及如何使用RocketMQ消息队列替代数据库表来提高性能和可靠性。尼恩还分享了如何结合延迟消息进行事务数据的定时对账,确保最终一致性。最后,尼恩强调了高端面试中需要准备“高大上”的答案,并提供了多个技术领域的深度学习资料,帮助读者提升技术水平,顺利通过面试。
本地消息表事务:10Wqps 高并发分布式事务的 终极方案,大厂架构师的 必备方案
|
14天前
|
NoSQL 安全 PHP
hyperf-wise-locksmith,一个高效的PHP分布式锁方案
`hyperf-wise-locksmith` 是 Hyperf 框架下的互斥锁库,支持文件锁、分布式锁、红锁及协程锁,有效防止分布式环境下的竞争条件。本文介绍了其安装、特性和应用场景,如在线支付系统的余额扣减,确保操作的原子性。
21 4