大规模分布式存储系统原理与架构

简介:

概述

分布式存储概念

分布式存储系统是大量普通 PC 服务器通过 Internet 互联,对外作为一个整体提供存储服务。

特点

可扩展、低成本、高性能、易用

分布式存储涉及的设计主要来自两个领域:分布式系统以及数据库

数据分布、一致性、容错、负载均衡、事务与并发控制、易用性、压缩 / 解压缩

分布式存储分类

非结构化数据、结构化数据、半结构化数据

分布式存储系统分为四类:

分布式文件系统 :以对象的形式组织,对象之间没有关联,这样的数据一般称为 Blob(Binary Large Object, 二进制大对象 ) 数据。分布式文件系统也常作为分布式表格系统以及分布式数据库的底层存储。分布式文件系统存储三种类型的数据: Blob 对象、定长块以及大文件。从系统实现层面,分布式文件系统内部按照数据块 (chunk) 来组织数据,每个数据块的大小大致相同,每个数据块可以包含多个 Blob 对象或者定长块,一个大文件也可以拆分为多个数据块。分布式文件系统将这限额数据块分散到存储集群,处理数据复制、一致性、负载均衡、容错等分布式系统难题,并将用户对 Blob 对象,定长块以及大文件的操作映射为对底层数据块的操作。

分布式键值系统 :用于存储关系简单的半结构化数据,它只提供基于主键的 CRUD 功能,即根据主键创建、读取、更新或者删除一条键值记录。从数据结构的角度看,分布式键值系统与传统的哈希表比较类似,不同的是,分布式键值系统支持将数据分不到集群中的多个存储节点。分布式键值系统是分布式表格系统的简化实现,一般用作缓存。一致性哈希是分布式键值系统中常用的数据分布技术。

分布式表格系统 :用于存储关系较为复杂的半结构化数据,与分布式键值系统相比,分布式表格系统不仅仅支持简单的 CRUD, 而且支持扫描某个主键范围。以表格为单位组织数据,每个表格包括很多行,通过主键标识一行,支持根据主键的 CRUD 功能以及范围查找功能。支持某种程度上的事务。与分布式数据库相比,分布式表格系统主要支持针对单张表格的操作,不支持一些特别复杂的操作,比如多表关联,多表联接,嵌套子查询;分布式表格系统,同一个表格的多个数据行也不要求包含相同类型的列,

分布式数据库: 是从单机关系数据库扩展而来,用于存储结构化数据。分布式数据库采用二维表格组织数据,提供 SQL 关系查询语句,支持多表关联,嵌套子查询等复杂操作,并提供数据库事务以及并发控制,为了解决关系数据库面临的可扩展性、高并发性以及性能方面的问题,各种菲关系数据库风起云涌,这类系统成为 NoSQ 系统。

单机存储系统

单机存储引擎就是哈希表、 B 树等数据结构在机械磁盘、 SSD 等持久化介质上的实现。是单机存储引擎的一种封装,对外提供文件、键值、表格或者关系模型。单机存储系统的理论来源与关系数据库。数据库将一个或多个操作组成一组,称作事务,事务必须满足原子性( Atomicity )、一致性( Consistency )、隔离性( Isolation )以及持久性 (Durability), 简称 ACID 特性。多个事务并发执行时,数据库的并发控制管理器必须能保证多个事务的执行结果不能破坏某种约定,如不能出现执行到一半的情况,不能读取到未提交的事务,等等。为了保证持久性,对于数据库的每一个变化都要在磁盘上记录日志,当数据库系统突然发生故障,重启后能恢复到之前的一致状态

硬件基础 : 硬件发展很快,摩尔定律告诉我们:每 18 个月计算机等 IT 产品的性能会翻一番;或者说相同性能的计算机等 IT 产品,每 18 个月价钱会降低一半。计算机的硬件体系价格保持相对稳定。架构设计很重要的一点就是合理选择并能够最大限度的发挥底层硬件的价值

CPU 架构: 早期的 CPU 为单核芯片,工程师很快意识到,仅仅提高单核的速度会产生过多的热量且无法带来相应的性能改善,因此,现代服务器基本为多核或多个 CPU 。经典的多 CPU 架构为对称多处理结构( SMP ) , 即在一个计算机上汇聚了一组处理器,它们之间对称工作,无主次或从属关系,共享相同的物理内存及总线。 SMP 架构主要特征是共享,系统中所有资源( CPU 、内存、 I/O )都是共享的,由于多 CPU 对前端总线的竞争, SMP 的扩展能力非常有限。为了提高扩展性,现在主流服务器架构一般为 NUMA( 非一致存储访问 ) 架构。它具有多个 NUMA 节点,每个 NUMA 节点是一个 SMP 结构,一般由多个 CPU 组成,并且具有独立的本地内存、 IO 槽口

IO 总线: 存储系统的性能瓶颈一般在于 IO.

网络拓扑: 思科过去一致提倡三层拓扑(接入层 -> 汇聚层 -> 核心层) 2008 年谷歌将网络改造为扁平化拓扑结构,即三级 CLOS 网络,同一个集群内最多支持 20480 台服务器,切任何两台都有 1GB 带宽。同一个数据中心内部的传输延时是比较小的,网络一次来回的时间在 1 毫秒之内。数据中心之间的传输延迟是很大的,取决于光在光纤的传输时间。

性能参数: 存储系统的性能瓶颈主要在于磁盘随机读写。设计存储引擎的时候会针对磁盘的特性做很多的处理,比如将随机写操作转化为顺序写,通过缓存减少对磁盘随机读操作。固态磁盘( SSD )在最近几年得到越来越多的关注,各大互联网公司都有大量基于 SSD 的应用。 SSD 的特点是随机读取延迟小,能有提供更高的 IOPS( 每秒读写, Input/Output Per Second) 性能。它的主要问题在于容量和价格,设计存储系统的时候一般可以用来做缓存或者性能要求较高的关键业务

单位成本提供的 IOPS 比传统的 SAS 或者 SATA 磁盘都要大很多,而且 SSD 功耗低,更加环保,适合小数据量并且对性能要求更高的场景。

存储层次架构: 从分布式系统的角度看,整个集群中所有服务器上的存储介质(内存、机械硬盘、 SSD )构成一个整体,其他服务器上的存储介质与本机存储介质一样都是可访问的,区别仅仅在于需要额外的网络传输及网络协议栈等访问开销。

存储系统的性能主要包括两个纬度:吞吐量以及访问延时,设计系统时要求能够在保证访问延时的基础上,通过最低的成本实现尽可能高的吞吐量。磁盘和 SSD 的访问延时差别很大,但宽带差别不大,因此,磁盘适合大块顺序访问的存储系统, SSD 适合随机访问较多或者对延时比较敏感的关键系统。二者常常组合在一起进行混合存储,热数据(访问频繁)存储到 SSD 中,冷数据(访问不频繁)存储到磁盘中。

相关实践学习
MySQL数据库快速部署实践
本场景主要介绍如何在一台配置了CentOS 7.7版本的ECS实例(云服务器)上安装mysql,执行mysql的常用操作,学习基本的SQL语句。
目录
相关文章
|
4月前
|
监控 Java API
Spring Boot 3.2 结合 Spring Cloud 微服务架构实操指南 现代分布式应用系统构建实战教程
Spring Boot 3.2 + Spring Cloud 2023.0 微服务架构实践摘要 本文基于Spring Boot 3.2.5和Spring Cloud 2023.0.1最新稳定版本,演示现代微服务架构的构建过程。主要内容包括: 技术栈选择:采用Spring Cloud Netflix Eureka 4.1.0作为服务注册中心,Resilience4j 2.1.0替代Hystrix实现熔断机制,配合OpenFeign和Gateway等组件。 核心实操步骤: 搭建Eureka注册中心服务 构建商品
781 3
|
5月前
|
人工智能 Kubernetes 数据可视化
Kubernetes下的分布式采集系统设计与实战:趋势监测失效引发的架构进化
本文回顾了一次关键词监测任务在容器集群中失效的全过程,分析了中转IP复用、调度节奏和异常处理等隐性风险,并提出通过解耦架构、动态IP分发和行为模拟优化采集策略,最终实现稳定高效的数据抓取与分析。
Kubernetes下的分布式采集系统设计与实战:趋势监测失效引发的架构进化
|
2月前
|
缓存 Cloud Native 中间件
《聊聊分布式》从单体到分布式:电商系统架构演进之路
本文系统阐述了电商平台从单体到分布式架构的演进历程,剖析了单体架构的局限性与分布式架构的优势,结合淘宝、京东等真实案例,深入探讨了服务拆分、数据库分片、中间件体系等关键技术实践,并总结了渐进式迁移策略与核心经验,为大型应用架构升级提供了全面参考。
|
6月前
|
存储 机器学习/深度学习 缓存
软考软件评测师——计算机组成与体系结构(分级存储架构)
本内容全面解析了计算机存储系统的四大核心领域:虚拟存储技术、局部性原理、分级存储体系架构及存储器类型。虚拟存储通过软硬件协同扩展内存,支持动态加载与地址转换;局部性原理揭示程序运行特性,指导缓存设计优化;分级存储架构从寄存器到外存逐级扩展,平衡速度、容量与成本;存储器类型按寻址和访问方式分类,并介绍新型存储技术。最后探讨了存储系统未来优化趋势,如异构集成、智能预取和近存储计算等,为突破性能瓶颈提供了新方向。
|
2月前
|
存储 NoSQL 前端开发
【赵渝强老师】MongoDB的分布式存储架构
MongoDB分片通过将数据分布到多台服务器,实现海量数据的高效存储与读写。其架构包含路由、配置服务器和分片服务器,支持水平扩展,结合复制集保障高可用性,适用于大规模生产环境。
303 1
|
4月前
|
机器学习/深度学习 算法 文件存储
神经架构搜索NAS详解:三种核心算法原理与Python实战代码
神经架构搜索(NAS)正被广泛应用于大模型及语言/视觉模型设计,如LangVision-LoRA-NAS、Jet-Nemotron等。本文回顾NAS核心技术,解析其自动化设计原理,探讨强化学习、进化算法与梯度方法的应用与差异,揭示NAS在大模型时代的潜力与挑战。
1055 6
神经架构搜索NAS详解:三种核心算法原理与Python实战代码
|
3月前
|
消息中间件 缓存 监控
中间件架构设计与实践:构建高性能分布式系统的核心基石
摘要 本文系统探讨了中间件技术及其在分布式系统中的核心价值。作者首先定义了中间件作为连接系统组件的"神经网络",强调其在数据传输、系统稳定性和扩展性中的关键作用。随后详细分类了中间件体系,包括通信中间件(如RabbitMQ/Kafka)、数据中间件(如Redis/MyCAT)等类型。文章重点剖析了消息中间件的实现机制,通过Spring Boot代码示例展示了消息生产者的完整实现,涵盖消息ID生成、持久化、批量发送及重试机制等关键技术点。最后,作者指出中间件架构设计对系统性能的决定性影响,
|
2月前
|
机器学习/深度学习 自然语言处理 监控
23_Transformer架构详解:从原理到PyTorch实现
Transformer架构自2017年Google发表的论文《Attention Is All You Need》中提出以来,彻底改变了深度学习特别是自然语言处理领域的格局。在短短几年内,Transformer已成为几乎所有现代大型语言模型(LLM)的基础架构,包括BERT、GPT系列、T5等革命性模型。与传统的RNN和LSTM相比,Transformer通过自注意力机制实现了并行化训练,极大提高了模型的训练效率和性能。
|
6月前
|
监控 算法 关系型数据库
分布式事务难题终结:Seata+DRDS全局事务一致性架构设计
在分布式系统中,CAP定理限制了可用性、一致性与分区容错的三者兼得,尤其在网络分区时需做出取舍。为应对这一挑战,最终一致性方案成为常见选择。以电商订单系统为例,微服务化后,原本的本地事务演变为跨数据库的分布式事务,暴露出全局锁失效、事务边界模糊及协议差异等问题。本文深入探讨了基于 Seata 与 DRDS 的分布式事务解决方案,涵盖 AT 模式实践、分片策略优化、典型问题处理、性能调优及高级特性实现,结合实际业务场景提供可落地的技术路径与架构设计原则。通过压测验证,该方案在事务延迟、TPS 及失败率等方面均取得显著优化效果。
357 61
|
5月前
|
存储 监控 算法
园区导航系统技术架构实现与原理解构
本文聚焦园区导航场景中室内外定位精度不足、车辆调度路径规划低效、数据孤岛难以支撑决策等技术痛点,从架构设计到技术原理,对该系统从定位到数据中台进行技术拆解。
237 0
园区导航系统技术架构实现与原理解构