《大规模分布式存储系统》学习总结(超赞!!!)

NoSQL数据库的分布式存储系统解析 随着互联网的快速发展,传统的关系型数据库在处理海量数据、高并发访问和灵活的数据模型等方面逐渐显得力不从心。NoSQL数据库应运而生,它以其高性能、高可扩展性和灵活的数据模型等特点,在大数据、云计算等领域得到了广泛应用。而分布式存储系统是NoSQL数据库实现高性能和高可扩展性的关键技术之一。本文的目的是深入解析NoSQL数据库的分布式存储系统,涵盖其核心概念、算法原理、数学模型、实际应用等方面,帮助读者全面了解和掌握这一技术。本文首先介绍相关背景知识,让读者对NoSQL数据库和分布式存储系统有初步的了解。 阅读详情

我是技术搬运工,好东西当然要和大家分享啦原文地址

基本概念

1. 异常

1.1 服务器宕机

内存错误、服务器停电等都会导致服务器宕机,此时节点无法正常工作,称为不可用。

服务器宕机会导致节点失去所有内存信息,因此需要将内存信息保存到持久化介质上。

1.2 网络异常

有一种特殊的网络异常称为 网络分区 ,即集群的所有节点被划分为多个区域,每个区域内部可以通信,但是区域之间无法通信。

1.3 磁盘故障

磁盘故障是一种发生概率很高的异常。

使用冗余机制,将数据存储到多台服务器。

2. 超时

在分布式系统中,一个请求除了成功和失败两种状态,还存在着超时状态。


可以将服务器的操作设计为具有 幂等性 ,即执行多次的结果与执行一次的结果相同。如果使用这种方式,当出现超时的时候,可以不断地重新请求直到成功。

3. 衡量指标

3.1 性能

常见的性能指标有:吞吐量、响应时间。

其中,吞吐量指系统在某一段时间可以处理的请求总数,通常为每秒的读操作数或者写操作数;响应时间指从某个请求发出到接收到返回结果消耗的时间。

这两个指标往往是矛盾的,追求高吞吐的系统,往往很难做到低响应时间,解释如下:

  • 在无并发的系统中,吞吐量为响应时间的倒数,例如响应时间为 10 ms,那么吞吐量为 100 req/s,因此高吞吐也就意味着低响应时间。

  • 但是在并发的系统中,由于一个请求在调用 I/O 资源的时候,需要进行等待。服务器端一般使用的是异步等待方式,即等待的请求被阻塞之后不需要一直占用 CPU 资源。这种方式能大大提高 CPU 资源的利用率,例如上面的例子中,单个请求在无并发的系统中响应时间为 10 ms,如果在并发的系统中,那么吞吐量将大于 100 req/s。因此为了追求高吞吐量,通常会提高并发程度。但是并发程度的增加,会导致请求的平均响应时间也增加,因为请求不能马上被处理,需要和其它请求一起进行并发处理,响应时间自然就会增高。

3.2 可用性

可用性指系统在面对各种异常时可以提供正常服务的能力。可以用系统可用时间占总时间的比值来衡量,4 个 9 的可用性表示系统 99.99% 的时间是可用的。

3.3 一致性

一致性问题是指对于一组服务器,给定一组操作,它们的结果达成一致。也可以理解为,当某个服务器收到客户端的一组操作时,它必须与其它服务器交流以保证所有的服务器都是以同样的顺序收到并执行同样的操作。

3.4 可扩展性

指系统通过扩展集群服务器规模来提高性能的能力。理想的分布式系统需要实现“线性可扩展”,即随着集群规模的增加,系统的整体性能也会线程增加。

数据分布

分布式系统的数据分布在多个节点中,常用的数据分布方式有哈希分布和顺序分布。

1. 哈希分布

哈希分布就是将数据计算哈希值之后,按照哈希值分配到不同的节点上。例如有 N 个节点,数据的主键为 key,则将该数据分配的节点序号为:hash(key)%N。

传统的哈希分布算法存在一个问题:当节点数量变化时,也就是 N 值变化,那么几乎所有的数据都需要重新分布,将导致大量的数据迁移。

一致性哈希

Distributed Hash Table(DHT):对于哈希空间 0~2n,将该哈希空间看成一个哈希环,将每个节点都配置到哈希环上。每个数据对象通过哈希取模得到哈希值之后,存放到哈希环中顺时针方向第一个大于等于该哈希值的节点上。


一致性哈希的优点是在加入或者删除节点时只会影响到哈希环中相邻的节点,例如下图中新增节点 X,只需要将数据对象 C 重新存放到节点 X 上即可,对于节点 A、B、D 都没有影响。


2. 顺序分布

哈希分布式破坏了数据的有序性,顺序分布则不会。

顺序分布的数据划分为多个连续的部分,按一定策略分布到不同节点上。例如下图中,User 表的主键范围为 1 ~ 7000,使用顺序分布可以将其划分成多个子表,对应的主键范围为 1 ~ 1000,1001 ~ 2000,...,6001 ~ 7000。

其中 Meta 表是为了支持更大的集群规模,它将原来的一层索引结分成两层,使用 Meta 表来维护 User 子表所在的节点,从而减轻 Root 节点的负担。


负载均衡

衡量负载的因素很多,如 CPU、内存、磁盘等资源使用情况、读写请求数等。分布式系统应当能够自动负载均衡,当某个节点的负载较高,将它的部分数据迁移到其它节点。

每个集群都有一个总控节点,其它节点为工作节点,由总控节点根据全局负载信息进行整体调度,工作节点定时发送心跳包(Heartbeat)将节点负载相关的信息发送给总控节点。

一个新上线的工作节点,由于其负载较低,如果不加控制,总控节点会将大量数据同时迁移到该节点上,造成该节点一段时间内无法工作。因此负载均衡操作需要平滑进行,新加入的节点需要较长的一段时间来达到比较均衡的状态。

复制

复制是保证分布式系统高可用的基础,让一个数据存储多个副本,当某个副本所在的节点出现故障时,能够自动切换到其它副本上,从而实现故障恢复。

多个副本通常有一个为主副本,其它为备副本。主副本用来处理写请求,备副本主要用来处理读请求,实现读写分离。主副本将同步操作日志发送给备副本,备副本通过回放操作日志获取最新修改。


主备副本之间有两种复制协议,一种是强同步复制协议,一种是异步复制协议。

1. 强同步复制协议

要求主副本将同步操作日志发给备副本之后进行等待,要求至少一个备副本返回成功后,才开始修改主副本,修改完成之后通知客户端操作成功。

优点:至少有一个备副本拥有完整的数据,出现故障时可以安全地切换到该备副本,因此一致性好。

缺点:可用性差,因为主副本需要等待,那么整个分布式系统的可用时间就会降低。

2. 异步复制协议

主副本将同步操作日志发给备副本之后不需要进行等待,直接修改主副本并通知客户端操作成功。

优点:可用性好。

缺点:一致性差。

CAP

分布式系统不可能同时满足一致性(C:Consistency)、可用性(A:Availability)和分区容忍性(P:Partition tolerance),最多只能同时满足其中两项。这三个概念上文中已经提到。

在设计分布式系统时,需要根据实际需求弱化某一要求。因此就有了下图中的三种设计:CA、CP 和 AP。


需要注意的是,分区容忍性必不可少,因为需要总是假设网络是不可靠的。因此实际上设计分布式系统需要在可用性和一致性之间做权衡。

容错

分布式系统故障发生的概率很大,为了实现高可用以及减少人工运维成本,需要实现自动化容错。

1. 故障检测

通过 租约机制 来对故障进行检测。假设节点 A 为主控节点,节点 A 向节点 B 发送租约,节点 B 在租约规定的期限内才能提供服务。期限快到达时,节点 B 需要向 A 重新申请租约。

如果过期,那么 B 不再提供服务,并且 A 也能知道 B 此时可能发生故障并已经停止服务。可以看到,通过这种机制,A 和 B 都能对 B 发生故障这一事实达成一致。

2. 故障恢复

当某个节点故障时,就将它上面的服务迁移到其它节点。

CDN 架构

CND 通过将内容发布到靠近用户的边缘节点,使不同地域的用户在访问相同网页时可以就近获取。不仅可以减轻服务器的负担,也可以提高用户的访问速度。

从下图可以看出,DNS 在对域名解析时不再向用户返回源服务器的 IP 地址,而是返回边缘节点的 IP 地址,所以用户最终访问的是边缘节点。边缘节点会先从源服务器中获取用户所需的数据,如果请求成功,边缘节点会将页面缓存下来,下次用户访问时可以直接读取。


参考资料

  • 杨传辉. 大规模分布式存储系统: 原理解析与架构实战[M]. 机械工业出版社, 2013.

14、大规模分布式存储系统的密钥管理 本文介绍了FSSA在大规模分布式存储系统中采用的轻量级且‘即时’的密钥管理方法,与传统系统如Maat相比,FSSA通过使用临时密钥材料和新鲜会话密钥,有效降低了长期密钥管理的复杂性和风险。文章详细分析了FSSA的认证密钥协商协议、安全性、性能表现以及其在多存储设备场景下的应用。此外,还探讨了FSSA面临的潜在挑战及未来发展趋势,为大规模分布式存储系统的密钥管理提供了一种高效且安全的解决方案。 阅读详情

相关推荐

《大规模分布式存储系统:原理解析与架构实战》

本文还有配套的精品资源,点击获取 简介:本书深入探索了分布式存储系统的核心概念、设计原理及应用,由杨传辉著作。它详细讨论了数据分布策略、数据复制与容错机制、一致性模型,以及架构设计的关键组件如客户端接口、元数据管理等。书中还包含了对多种分布式存储系统的案例分析,讨论了扩展性、数据安全、备份与恢复等关键问题,并提供了实践指导,以帮助读者在理论与实际操作中掌握分布式存储系统的必...

weixin_36059856的博客 1706

大数据Hadoop完全分布式及心得体会

认识hadoop,根据所学知识完成作业,并总结本学期心得体会。

zhang003_的博客 1万+

全面学习Ceph:分布式存储系统指南

Ceph是一个开源的分布式存储系统,它提供了对象存储、块存储和文件系统存储的统一解决方案。Ceph的设计目标是提供高可用性、无单点故障、数据自动再平衡以及容错性等特性。随着云计算和大数据的发展,Ceph逐渐成为IT界关注的焦点,尤其是在构建可扩展的存储系统方面。

weixin_33816734的博客 1038

大规模分布式存储系统 - 读书笔记

文章目录大规模分布式存储系统(原理解析与架构实战OceanBase)第1章 概述1.1 分布式存储概述1.2 分布式存储分类第一篇 基础篇第2章 单机存储系统2.1 硬件基础2.1.1 CPU架构2.1.2 IO总线2.1.3 网络拓扑2.1.4 性能参数2.1.5 存储层次架构2.2 单机存储引擎2.2.1 哈希存储引擎2.2.2 B树存储引擎2.2.3 LSM树存储引擎2.3 数据模型2.3.1 文件模型2.3.2 关系模型2.3.3 键值模型2.3.4 SQL与NoSQL2.4 事务与并发控制2.4.

Syntactic Sugar 3140

大规模分布式存储系统高清pdf

java中间件设计比较好的资料,搞分布式存储,分布式系统必备

大规模分布式存储系统

《大规模分布式存储系统:原理解析与架构实战》是分布式系统领域的经典著作,由阿里巴巴高级技术专家“阿里日照”(OceanBase核心开发人员)撰写,阳振坤、章文嵩、杨卫华、汪源、余锋(褚霸)、赖春波等来自阿里、新浪、网易和百度的资深技术专家联袂推荐。理论方面,不仅讲解了大规模分布式存储系统的核心技术和基本原理,而且对谷歌、亚马逊、微软和阿里巴巴等国际型大互联网公司的大规模分布式存储系统进行了分析;实战方面,首先通过对阿里巴巴的分布式数据库OceanBase的实现细节的深入剖析完整地展示了大规模分布式存储系统的架构与设计过程,然后讲解了大规模分布式存储技术在云计算和大数据领域的实践与应用。

保姆级别的分布式存储ceph教程(非常详细)零基础入门到精通,收藏这一篇就够了

不管你是想为云平台提供Ceph 对象存储和/或 Ceph 块设备,还是想部署一个 Ceph 文件系统或者把 Ceph 作为他用,始于部署一个个 Ceph 节点、网络和 Ceph 存储集群。Ceph 存储集群至少需要一个 Ceph Monitor 和两个 OSD 守护进程。而运行 Ceph 文件系统客户端时,则必须要有元数据服务器( Metadata Server )。

Javachichi的博客 1万+

大规模分布式存储系统 pdf

大规模分布式存储系统 pdf

大规模分布式存储系统:原理解析与架构实战

网站 更多书籍点击进入>> CiCi岛 下载 电子版仅供预览及学习交流使用,下载后请24小时内删除,支持正版,喜欢的请购买正版书籍 电子书下载(皮皮云盘-点击“普通下载”) 购买正版 封页 编辑推荐 高级技术专家(OceanBase核心开发人员)撰写,阳振坤、章文嵩、杨卫华、汪源、余锋(褚霸)、赖春波等来自阿里、新浪、网易和百度的资深技术专家联袂推荐。   系统讲解构建大规模存储...

CiCi岛的专栏 1328

别再手动算电阻了!手把手教你从ITF/IRCX文件自动生成EMX工艺文件(附脚本思路)

本文详细介绍了如何从ITF/IRCX文件自动生成EMX工艺文件,提升芯片设计效率。通过解析厚度变化多项式和电阻率查表,实现工艺文件的高效转换,避免手动处理带来的错误。文章还提供了脚本思路和验证方法,确保数据精确度,特别适用于电感仿真等关键环节。

didui8202的博客 454

视觉巡线小车(STM32+OpenMV)——技术总结

在现代机器人技术中,视觉巡线是一种常见的导航方式,它允许机器人通过识别和跟踪地面上的线路来自主导航。本文将总结使用STM32微控制器和OpenMV视觉模块来实现视觉巡线小车的关键技术和步骤。

weixin_66608063的博客 3077

仅需这一篇,吃透「分布式系统」妥妥的

来自:知乎,作者:马超链接:https://www.zhihu.com/question/23645117/answer/124708083我的PhD研究方向是分布式...

代码技巧 699

基于知识图谱的旅游推荐系统

这一系统整合了当今先进的数据技术:采集携程等大型平台的景点数据,通过爬虫技术源源不断地获取最新的旅游信息。此外,我们采用Neo4j图数据库来存储和处理这些数据,结合自然语言处理技术,为你提供精准的旅游建议。:通过直观的知识图谱展示,了解各个景点之间微妙的联系,无论是文化背景还是地理方位,你都能从中发现新的旅行灵感。准备毕业设计的同学,关注我们,这是一个集成了多种前沿技术的项目,为你的学术成果锦上添花。:不再浪费时间,系统根据你的偏好和历史评分,利用协同过滤技术推荐适合的旅游目的地。

qalangtao的博客-qalangtao.com 773

大规模分布式存储系统:原理解析与架构实战

大规模分布式存储系统:原理解析与架构实战

克终的博客 1147

SD--根据订单创建出库单(相关的函数列表的介绍系列篇(2))

创建订单样例代码参见:http://blog.youkuaiyun.com/CompassButton/archive/2007/05/09/1601712.aspx 可以根据一个订单或者部分订单项来创建出库单,代码如下:* Populating the item data lx_sales_item-ref_doc = l_vbeln. lx_sales_item-ref_item = c_000010

SAP BLOG--Jack Wu 6226

Windows Server双机热备实战:用IIS+ARR+NLB搭建高可用Web服务(附避坑指南)

本文详细介绍了在Windows Server环境下,利用IIS、ARR(Application Request Routing)和NLB(Network Load Balancing)构建高可用Web服务的实战方案。通过双机热备架构,实现从网络层到应用层的全面冗余与智能流量分发,并提供了关键的配置步骤、常见避坑指南及性能调优建议,确保企业级Web服务的连续性与可靠性。

weixin_29210759的博客 383

架构设计-大规模分布式存储系统架构概述

大规模分布式存储系统架构概述 概念 大规模分布式存储系统的定义:“分布式存储系统是大量普通PC服务器通过Internet互联,对外作为一个整体提供存储服务”。 分布式存储系统具有如下几个特性: ????可扩展。可以扩展到几百台甚至几千台的集群规模。 ????低成本。 ????高性能。 易用。 分布式存储系统的挑战: 数据分布:如何均匀分布?如何跨服读写...

mumushuiding的博客 945

别再死记硬背参数了!用ADS手把手教你仿真一个4GHz镜像抑制混频器(附完整工程文件)

本文详细解析了4GHz镜像抑制混频器的ADS仿真全流程,从理论到实践,涵盖混频器设计基础、ADS工程搭建、二极管选型、非线性仿真及性能优化。通过实战案例,帮助工程师掌握关键参数平衡与调试技巧,提升射频电路设计效率。

weixin_42552716的博客 338

分布式存储系统:构建大规模高可用存储

本文介绍了分布式存储系统的原理与架构,重点解析了Ceph和GlusterFS两大开源系统。Ceph采用对象存储层、块设备层和文件系统层的三层架构,通过OSD、MON和MDS组件实现高可用性;GlusterFS采用无中心架构,支持多种数据分布策略。文章还提供了在CentOS 7上搭建Ceph集群的详细步骤,包括环境准备、安装配置和使用方法,并针对网络连接、磁盘空间和集群状态等常见问题给出解决方案。通过系统学习,读者可以掌握分布式存储系统的核心技术与实践应用。

fykam的博客 954

RT-Thread littefs控制GD32F4xx片内Flash

GD32F4xx RT-Thread下使用littefs 控制片内flash 调试记录

madao1234的博客 995

PCL 读取和保存点云

PCL (Point Cloud Library) 是一个用于处理 3D 点云数据的开源库。在处理点云数据时,常见的任务包括点云的读写和可视化。PCL 提供了强大的 IO 模块来读取和写入各种格式的点云文件,并且提供了可视化模块来对点云进行渲染和显示。点云的读写与显示是很多 3D 数据处理任务的基础步骤,通过这些步骤,可以对点云进行预处理、分析和操作。

纵马踏花向自由 1737

论分布式存储系统架构设计

随着大数据、人工智能和物联网等技术的快速发展,数据存储需求呈现爆发式增长。传统集中式的存储系统架构逐渐暴露出性能瓶颈、可靠性差、扩展性不足等问题,无法满足日益增长的数据存储需求。在这种背景下,分布式存储系统(Distributed Storage System)应运而生。分布式存储系统通过将数据分散在多台设备上,实现了负载均衡、可靠性提升以及高效的数据访问,成为现代大规模数据存储的主流方案。

fudaihb的博客 1885

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

大规模分布式存储系统笔记一

大规模分布式存储系统笔记一欢迎进入分布式的世界概述功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎进入分布式的世界...

xk4848123的博客 3762

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

上一篇: java基础(超赞!!!)
下一篇: Git总结(超赞!!!)
普通网友
博客等级 码龄9年 489粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值