带你读《存储漫谈: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)、创建云盘快照、重新初始化数据盘、使用快照回滚云盘和卸载数据盘等功能,带您快速入门块存储。
相关文章
|
16天前
|
存储 SQL 关系型数据库
Mysql高可用架构方案
本文阐述了Mysql高可用架构方案,介绍了 主从模式,MHA模式,MMM模式,MGR模式 方案的实现方式,没有哪个方案是完美的,开发人员在选择何种方案应用到项目中也没有标准答案,合适的才是最好的。
80 3
Mysql高可用架构方案
|
7天前
|
SQL Java 数据库连接
Mybatis架构原理和机制,图文详解版,超详细!
MyBatis 是 Java 生态中非常著名的一款 ORM 框架,在一线互联网大厂中应用广泛,Mybatis已经成为了一个必会框架。本文详细解析了MyBatis的架构原理与机制,帮助读者全面提升对MyBatis的理解和应用能力。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
Mybatis架构原理和机制,图文详解版,超详细!
|
18天前
|
缓存 关系型数据库 MySQL
高并发架构系列:数据库主从同步的 3 种方案
本文详解高并发场景下数据库主从同步的三种解决方案:数据主从同步、数据库半同步复制、数据库中间件同步和缓存记录写key同步,旨在帮助解决数据一致性问题。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
高并发架构系列:数据库主从同步的 3 种方案
|
22天前
|
NoSQL 算法 关系型数据库
分布式 ID 详解 ( 5大分布式 ID 生成方案 )
本文详解分布式全局唯一ID及其5种实现方案,关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
分布式 ID 详解 ( 5大分布式 ID 生成方案 )
|
21天前
|
开发者 容器
Flutter&鸿蒙next 布局架构原理详解
本文详细介绍了 Flutter 中的主要布局方式,包括 Row、Column、Stack、Container、ListView 和 GridView 等布局组件的架构原理及使用场景。通过了解这些布局 Widget 的基本概念、关键属性和布局原理,开发者可以更高效地构建复杂的用户界面。此外,文章还提供了布局优化技巧,帮助提升应用性能。
80 4
|
21天前
|
存储 Dart 前端开发
flutter鸿蒙版本mvvm架构思想原理
在Flutter中实现MVVM架构,旨在将UI与业务逻辑分离,提升代码可维护性和可读性。本文介绍了MVVM的整体架构,包括Model、View和ViewModel的职责,以及各文件的详细实现。通过`main.dart`、`CounterViewModel.dart`、`MyHomePage.dart`和`Model.dart`的具体代码,展示了如何使用Provider进行状态管理,实现数据绑定和响应式设计。MVVM架构的分离关注点、数据绑定和可维护性特点,使得开发更加高效和整洁。
146 3
|
30天前
|
存储 缓存 NoSQL
分布式架构下 Session 共享的方案
【10月更文挑战第15天】在实际应用中,需要根据具体的业务需求、系统架构和性能要求等因素,选择合适的 Session 共享方案。同时,还需要不断地进行优化和调整,以确保系统的稳定性和可靠性。
|
1月前
|
消息中间件 关系型数据库 Java
‘分布式事务‘ 圣经:从入门到精通,架构师尼恩最新、最全详解 (50+图文4万字全面总结 )
本文 是 基于尼恩之前写的一篇 分布式事务的文章 升级而来 , 尼恩之前写的 分布式事务的文章, 在全网阅读量 100万次以上 , 被很多培训机构 作为 顶级教程。 此文修改了 老版本的 一个大bug , 大家不要再看老版本啦。
|
1月前
|
容器
Flutter&鸿蒙next 布局架构原理详解
Flutter&鸿蒙next 布局架构原理详解
|
1月前
|
存储 安全 API
单元化架构,分布式系统的新王!
【10月更文挑战第9天】
113 0
单元化架构,分布式系统的新王!

热门文章

最新文章