带你读《存储漫谈Ceph原理与实践》第一章分布式存储概述1.2各主流分布式方案对比(二)

本文涉及的产品
对象存储 OSS,标准 - 本地冗余存储 20GB 3个月
对象存储OSS,敏感数据保护2.0 200GB 1年
对象存储 OSS,恶意文件检测 1000次 1年
简介: 带你读《存储漫谈Ceph原理与实践》第一章分布式存储概述1.2各主流分布式方案对比

1.2.1      无中心架构

 

1.  计算模式

 

Ceph 是无中心分布式存储系统(计算模式)的典型代表。Ceph架构与 HDFS架构不同的地方在于该存储架构中没有中心节点(元数据不需要集中保存,客户端(Client过设备映射关系及预先定义算法,可直接本地计算出其写入数据的存储位置,这样客户端可以直接与存储节点(StorageNode)进行通信交互,避免元数据中心节点成为存储系统的性能瓶颈。Ceph系统架构如图 1-8所示。

image.png


1-8Ceph系统架构

image.png

 

1-9展示了 Ceph 存储系统的核心组件。

(1) Mon服务

MonMonitor的缩写,CephMonitor务维护存储集群状态的各种图表,包括:

监视器图MonitorMap,记录所有Monitor节点的信息,如集群 ID、主机名、IP和端口等。

◆  OSD图(OSDMap    CephPoolPoolID、名称、类型、副本、PGP配置,以及 OSD的数量、状态、最小清理间隔、OSD所在主机信息等。

◆  归置组图(PGMap,记录当前的PG版本、时间戳、空间使用比例以及每个PG 的基本信息。

◆  CRUSH(CRUSHMap,CRUSHControlledReplicationUnderScalableHashing的 缩,记录集群存储设备信息、故障层次结构以及存储数据时故障域规则信息。

这些图表(Map)保存着集群发生MonitorPGCRUSH 上的每一次状态变更,这些状态变更的历史信息版本称为epoch,可以用于集群的数据定位以及集群的数据恢复。

Monitor1通过集群部署的方式保证其自身服务的可用性,由于遵循Pasox 协议来进行leader选举Monitor 集群通常为奇数个节点部署,且部署节点数量不小于 3个。

(2) OSD服务

OSDObjectStorageDevice的缩写,CephOSD服务功能是存储数据、管理磁盘,以实现真正的数据读写,OSD   服务处理数据的复制、恢复、回填、再均衡等任务,并通过查其他 OSD守护进程的心跳来向 CephMonitor服务提供监控信息。

通常一个磁盘对应一个OSD 服务,但使用高性能存储介质时,也可以将存储介质进行分区处理,启动多个 OSD 守护进程进行磁盘空间管理(每个 OSD守护进程对应一个磁盘分区

(3) MDS服务

MDSMetadataServer 的缩写,CephMDS服务为Ceph文件系统存储元数据,即Ceph的块设备场景和对象存储场景不使用 MDS服务。CephMDS服务主要负责CephFS 集群中文件和目录的管理,记录数据的属性,如文件存储位置、大小、存储时间等,同时负责文件查找、文件记录、存储位置记录、访问授权等,允许 CephPOSIX文件系统用户可以在不对 Ceph存储集群造成负担的前提下,执行诸如文件的lsfind等基本命令。MDS 通过主备部署的方式保证其自身服务的可用性,进程可以被配置为活跃或者被动状态,活跃的 MDS为主 MDS,其他的 MDS处于备用状态,当主 MDS 节点故障时,备用MDS节点会接管其工作并被提升为主节点。

(4)  RADOS

RADOSReliableAutonomicDistributedObjectStore 的缩写,意为可靠、自主的分布式对象存储,从组件构成图中可见,RADOS由上述 3种服务(MonOSDMDS)构成,其本质为一套分布式数据存储系统,即 RADOS 本身也是一套分布式存储集群。在   Ceph存储中所有的数据都以对象形式存在,RADOS负责保存这些对象,RADOS层可以确保对象数据始终保持一致性。从这个意义上讲,Ceph存储系统可以认为是在 RADOS对象存储系统之上的二次封装。

 

1CephLuminous版本推出了 MGR(ManagerDaemon)组件,该组件的主要作用是分担和扩展 Monitor服务的部分功能,减轻Monitor的负担,它从 Monitor 服务中拆解出了部分对外暴露的集群状态指标,对外提供集群状态的统一查询入口。

 

RADOS依据 Ceph 的需求进行设计,能够在动态变化和异构存储设备之上提供一种稳定、可扩展、高性能的单一逻辑对象存储接口,并能够实现节点的自适应和自管理。

(5) librados

librados库为PHP、Ruby、Java、Python、C、C++ 等语言提供了便捷的访问RADOS接口的方式,即 librados允许用户不通过 RESTfulAPI、blockAPI或者 POSIX文件系统接口访问 Ceph存储集群。

libradosAPI 可以访问 Ceph 存储集群的 Mon、OSD 服务。

(6) RBD

RBDRADOSBlockDevice的缩写CephRBD 接口可提供可靠的分布式、高性能块存储逻辑卷(Volume)给客户端使用。RBD    块设备可以类似于本地磁盘一样被操作系统挂载,具备快照、克隆、动态扩容、多副本和一致性等特性,写入RBD 设备的数据以条带化的方式存储在 Ceph集群的多个 OSD中。

(7)  RGW

RGWRADOSGateway的缩写,CephRGW接口提供对象存储服务,RGWlibrados接口实现了 FastCGI服务封装,它允许应用程序和 Ceph对象存储建立连接,RGW提供了与AmazonS3OpenStackSwift兼容的RestfulAPI。对象存储适用于图片、音视频等文件的上传与下载,可以设置相应的文件访问权限以及数据生命周期。

(8)  CephFS

CephFSCephFileSystem的缩写,CephFS接口可提供与 POSIX兼容的文件系统,用户能够对 Ceph 存储集群上的文件进行访问。CephFSCeph集群最早支持的客户端,但对比 RBDRGW,它又是Ceph最晚满足productionready的一个功能。

回到 Ceph 组件示意图,客户端访问存储集群的流程可总结如下。

客户端在启动后首先通过 RBD/RGW/CephFS接口进入也可基于 librados自行适配业务进行接口开发,从Mon服务拉取存储资源布局信息(集群运行图,然后根据该布局信息和写入数据的名称等信息计算出期望数据的存储位置包含具体的物理服务器信息和磁盘信息,然后和该位置信息对应的OSD服务直接通信,进行数据的读取或写入。

Ceph是目前应用最广泛的开源分布式存储系统, 它已经成为 Linux操作系统和OpenStack开源云计算基础设施标配,并得到了众多厂商的支持。Ceph可以同时提供对象存储、块存储和文件系统存储3 种不同类型的存储服务,是一套名副其实的统一分布式存储系统,总结其特点如下。

◆  高性能

Ceph 存储系统摒弃了集中式存储元数据寻址的方案,转而采用私有的 CRUSH算法,元数据分布更加均衡,系统 I/O操作并行度更高。

◆  高可用性

Ceph 存储系统考虑了容灾域的隔离,能够实现多种数据放置策略规则,例如数据副本跨机房、机架感知冗余等,提升了数据的安全性;同时,Ceph存储系统中数据副本数可以灵活控制,坚持数据的强一致性原则,系统没有单点故障,存储集群可进行修复自愈、自动管理,存储服务可用性高。

◆  高可扩展性

Ceph 存储系统采用对称结构、全分布式设计,集群无中心节点,扩展灵活,能够支持上千台存储节点的规模,支持PB级的数据存储需求;且随着服务器节点的不断加入,存储系统的容量和 I/O处理能力可获得线性增长,拥有强大的scaleout能力。

◆  接口及特性丰富

Ceph 存储系统支持块存储、文件存储、对象存储3种访问类型,且 3 个方向均已生产就绪:对象存储方面,Ceph支持SwiftS3API接口;块存储方面,除私有协议挂载外,Ceph社区也在积极推动 iSCSI方案,RBD设备支持精简配置、快照、克隆等特性;文件系统存储方面,Ceph支持 POSIX 接口,支持快照特性。同时,Ceph通过 librados可实现访问接口自定义,支持多种语言进行驱动开发。

2.  一致性 Hash模式

 

Swift是无中心分布式存储系统一致性 Hash)的典型代表。SwiftRackspace开发,用来为云计算提供高可扩展性的对象存储集群。与 Ceph通过自定义算法获得数据分布位置的方式不同,Swift通过一致性 Hash的方式获得数据存储位置。一致性Hash的方式就是将设备在逻辑上构建成一个Hash环,然后根据数据名称计算出的 Hash值映射到Hash 环的某个位置,从而实现数据的定位。

Swift中存在两种映射关系,对于一个文件,通过 Hash算法MD5)找到对应的虚节(一对一的映射关系,虚节点再通过映射关系(Hash环文件中的二维数组)找到对应的设备(多对多的映射关系,这样就完成一个文件存储在设备上的映射。

1-10展示了 Swift分布式存储系统的架构。

 image.png

1-10Swft分布式存储系统架构

Swift主要面向的对象存储应用场景,和 Ceph 提供的对象存储服务类似,主要用于解决非结构化数据的存储问题。

Swift存储系统和 Ceph 存储系统主要区别如下。

◆  Swift仅提供对象存储服务能力,而Ceph在设计之初就比 Swift开放,除支持对象存储场景外,还支持块存储、文件存储使用场景;

◆  数据一致性方面,Swift 提供数据最终一致性,在处理海量数据的效率上更占优势,主要面向对数据一致性要求不高,但对数据处理效率要求比较高的对象存储业务,而Ceph存储系统始终强调数据的强一致性,更适用于对数据存储安全性要求较高的场景;

◆  二者在应用于对象存储多数据中心场景下时,Swift   集群支持跨地域部署,允许数据先在本地写入(数据本地写入完成后就返回写入成功,然后基于一致性设计在一段时间里复制到远程地域,而Ceph 存储系统则通常需要通过Master-Slave 模型部署两套集群,从MasterSlave 进行数据异步复制,所以在多于两个地域时,基础架构上的负载分布会很不均衡 1

相关文章
|
2月前
|
人工智能 安全 Java
分布式 Multi Agent 安全高可用探索与实践
在人工智能加速发展的今天,AI Agent 正在成为推动“人工智能+”战略落地的核心引擎。无论是技术趋势还是政策导向,都预示着一场深刻的变革正在发生。如果你也在探索 Agent 的应用场景,欢迎关注 AgentScope 项目,或尝试使用阿里云 MSE + Higress + Nacos 构建属于你的 AI 原生应用。一起,走进智能体的新世界。
532 44
|
2月前
|
关系型数据库 Apache 微服务
《聊聊分布式》分布式系统基石:深入理解CAP理论及其工程实践
CAP理论指出分布式系统中一致性、可用性、分区容错性三者不可兼得,必须根据业务需求进行权衡。实际应用中,不同场景选择不同策略:金融系统重一致(CP),社交应用重可用(AP),内网系统可选CA。现代架构更趋向动态调整与混合策略,灵活应对复杂需求。
|
4月前
|
数据采集 消息中间件 监控
单机与分布式:社交媒体热点采集的实践经验
在舆情监控与数据分析中,单机脚本适合小规模采集如微博热榜,而小红书等大规模、高时效性需求则需分布式架构。通过Redis队列、代理IP与多节点协作,可提升采集效率与稳定性,适应数据规模与变化速度。架构选择应根据实际需求,兼顾扩展性与维护成本。
118 2
|
7月前
|
人工智能 安全 应用服务中间件
阿里巴巴 MCP 分布式落地实践:快速转换 HSF 到 MCP server
本文分享了阿里巴巴内部将大规模HSF服务快速转换为MCP Server的实践经验,通过Higress网关实现MCP协议卸载,无需修改代码即可接入MCP生态。文章分析了MCP生态面临的挑战,如协议快速迭代和SDK不稳定性,并详细介绍了操作步骤及组件功能。强调MCP虽非终极解决方案,但作为AI业务工程化的起点具有重要意义。最后总结指出,MCP只是AI原生应用发展的第一步,未来还有更多可能性值得探索。
1197 48
|
3月前
|
消息中间件 缓存 监控
中间件架构设计与实践:构建高性能分布式系统的核心基石
摘要 本文系统探讨了中间件技术及其在分布式系统中的核心价值。作者首先定义了中间件作为连接系统组件的"神经网络",强调其在数据传输、系统稳定性和扩展性中的关键作用。随后详细分类了中间件体系,包括通信中间件(如RabbitMQ/Kafka)、数据中间件(如Redis/MyCAT)等类型。文章重点剖析了消息中间件的实现机制,通过Spring Boot代码示例展示了消息生产者的完整实现,涵盖消息ID生成、持久化、批量发送及重试机制等关键技术点。最后,作者指出中间件架构设计对系统性能的决定性影响,
|
7月前
|
监控 Linux 应用服务中间件
Linux多节点多硬盘部署MinIO:分布式MinIO集群部署指南搭建高可用架构实践
通过以上步骤,已成功基于已有的 MinIO 服务,扩展为一个 MinIO 集群。该集群具有高可用性和容错性,适合生产环境使用。如果有任何问题,请检查日志或参考MinIO 官方文档。作者联系方式vx:2743642415。
2274 57
|
7月前
|
安全 JavaScript 前端开发
HarmonyOS NEXT~HarmonyOS 语言仓颉:下一代分布式开发语言的技术解析与应用实践
HarmonyOS语言仓颉是华为专为HarmonyOS生态系统设计的新型编程语言,旨在解决分布式环境下的开发挑战。它以“编码创造”为理念,具备分布式原生、高性能与高效率、安全可靠三大核心特性。仓颉语言通过内置分布式能力简化跨设备开发,提供统一的编程模型和开发体验。文章从语言基础、关键特性、开发实践及未来展望四个方面剖析其技术优势,助力开发者掌握这一新兴工具,构建全场景分布式应用。
713 35
|
7月前
|
人工智能 负载均衡 Java
Spring AI Alibaba 发布企业级 MCP 分布式部署方案
本文介绍了Spring AI Alibaba MCP的开发与应用,旨在解决企业级AI Agent在分布式环境下的部署和动态更新问题。通过集成Nacos,Spring AI Alibaba实现了流量负载均衡及节点变更动态感知等功能。开发者可方便地将企业内部业务系统发布为MCP服务或开发自己的AI Agent。文章详细描述了如何通过代理应用接入存量业务系统,以及全新MCP服务的开发流程,并提供了完整的配置示例和源码链接。未来,Spring AI Alibaba计划结合Nacos3的mcp-registry与mcp-router能力,进一步优化Agent开发体验。
2516 14
|
7月前
|
NoSQL 算法 安全
redis分布式锁在高并发场景下的方案设计与性能提升
本文探讨了Redis分布式锁在主从架构下失效的问题及其解决方案。首先通过CAP理论分析,Redis遵循AP原则,导致锁可能失效。针对此问题,提出两种解决方案:Zookeeper分布式锁(追求CP一致性)和Redlock算法(基于多个Redis实例提升可靠性)。文章还讨论了可能遇到的“坑”,如加从节点引发超卖问题、建议Redis节点数为奇数以及持久化策略对锁的影响。最后,从性能优化角度出发,介绍了减少锁粒度和分段锁的策略,并结合实际场景(如下单重复提交、支付与取消订单冲突)展示了分布式锁的应用方法。
546 3
|
7月前
|
NoSQL 算法 安全
分布式锁—1.原理算法和使用建议
本文主要探讨了Redis分布式锁的八大问题,包括非原子操作、忘记释放锁、释放其他线程的锁、加锁失败处理、锁重入问题、锁竞争问题、锁超时失效及主从复制问题,并提供了相应的优化措施。接着分析了Redis的RedLock算法,讨论其优缺点以及分布式专家Martin对其的质疑。此外,文章对比了基于Redis和Zookeeper(zk)的分布式锁实现原理,包括获取与释放锁的具体流程。最后总结了两种分布式锁的适用场景及使用建议,指出Redis分布式锁虽有性能优势但模型不够健壮,而zk分布式锁更稳定但部署成本较高。实际应用中需根据业务需求权衡选择。

热门文章

最新文章