作家
登录

分布式存储系统基础

作者: 来源: 2017-04-14 11:02:47 阅读 我要评论

单层构造的分布式存储体系保护了多个副本,例如副本个数为3,主备副本之间经由过程操作日记同步。如上图所示,某单层构造的分布式存储体系有3个数据分片A、B、C,每个数据分片存储了三个副本。个中,A1,B1,C1为主副本,分别存储在节点1,节点2以及节点3.假设节点1产生故障,总控节灯揭捉?择一个最新的副本(比如A2或者A3)来调换A1成为新的主副本并供给写办事。

同构体系将存储节点分为若干组,组内的节点办事完全雷同的数据,个中有一个节点为主节点,其他节点为备节点。因为同一个组内的节点办事雷同的数据,如许的体系称为同构体系。如下图所示。

同构体系的问题在于增长副本须要迁徙的数据量太大年夜,假设每个存储节点办事的数据量为1TB,内部传输带宽限制为20MB/s,那么增长副本拷贝数据须要的时光为1TB/20MB=50000s,大年夜约十几个小时,因为拷贝数据的过程中存储节点再次产生故障的概率很高,所以如许的架构很难做到主动化,不合适大年夜范围分布式存储体系。

异构体系

大年夜范围分布式存储体系请求具有线性可扩大性,即随时参加或者删除一个或者多个存储节点,体系的处理才能与存储节点的个数成线性关系。为了实现线性可扩大性,存储体系的存储节点之间是异构的。

异构体系将数据分为很多大年夜小邻近的分片,每个分片的多个副本可以分布到集群的任何一个存储节点。如不雅某个节点产生故障,原有的办事将由全部集群而不是某几个固定的存储节点来恢复。

跨机房安排

如下图所示,体系中有五个分片(A,B,C,D,E),每个分片包含三个副本,如分片A的三个副本分别为A1,A2以及A3。假如节点1产生永远性故障,那么可以大年夜残剩的节点中随便率性遴选健康的节点来增长A,B以及E的副本。因为全部集群都介入到节点1的故障恢复过程,故障恢复时光很短,并且集群范围越大年夜,优势越明显。

分布式协定

分布式体系涉及的协定很多,例如租约,复制协定,一致性协定,个中以两阶段提交协定和Paxos协定最具有代表性。两阶段提交协定用于包管跨多个节点操作的原子性,也就是说,跨多个节点的操作要么在所有节点上全部履行成功,要么全部掉败。Paxos协定用于确保多个节点对某个投票(例如哪个节点成为主节点)杀青一致。

两阶段提交协定

两阶段提交协定(Two-phase Commit,2PC)经常用来实现分布式事务,在两阶段提交协定中,系同一般包含两类节点:一类为调和者(coordinator),平日一个体系中只有一个;另一类为事务介入者(participants),一般包含多个。顾名思义,两阶段提交协定由两个阶段构成,如下所述:

  • 阶段1:请求阶段(Prepare Phase)。在请求阶段,调和者通知事务介入者预备提交或者撤消事务,然落后入表决过程。在表决过程,介入者将告诉调和者本身的决定计划:赞成(事务介入者本地履行成功,但没有提交)或者撤消(事务介入者本地履行掉败)。
  • 阶段2:提交阶段(Commit Phase)。在提交阶段,调和者将基于第一个阶段的投票进行决定计划:提交或者撤消。当且仅当所有的介入者赞成提交事务调和者才通知所有的介入者提交事务,不然调和者通知所有的介入者撤消事务。介入者在接收到调和者发来的消息后将履行响应的操作。

可扩大性

两阶段提交协定可能面对两种故障:

  • 事务介入者产生故障。给每个事务设置一个超不时光,如不雅某个事务介入者一向不响应,达到超不时光后全部事务掉败。
  • 调和者产生故障。调和者须要将事务相干信息记录到操作日记并同步到备用调和者,假如调和者产生故障,备用调和者可以接替它完成后续的工作。如不雅没有备用调和者,调和者又产生了永远性故障,事务介入者将无法完成事务而一向等待下去。

Paxos协定

Paxos协定用于解决多个节点之间的一致性问题。多个节点之间经由过程操作日记同步数据,如不雅只有一个节点为主节点,那么,很轻易确保多个节点之间操作日记的一致性。推敲到主节点可能出现故障,体系须要选举出新的主节点。Paxos协定恰是用来实现这个需求。只要包管多个节点之间操作日记的一致性,就可以或许在这些节点上构建高可用的全局办事,例如分布式锁办事,全局定名和设备办事等。

为了实现高可用,主节点往往将数据以操作日记的情势同步到备节点。如不雅主节点产生故障,备节点会提议本身成为主节点。这里存在的问题是收集分区的时刻,可能会存在多个备节点提议(Proposer,提议者)本身成为主节点。Paxos协定包管,即使同时存在多个proposer,也可以或许包管所有节点最终杀青一致,即选举出独一的主节点。

2)确认(acknowledge):如不雅跨越一半的acceptor接收,意味着提议值已经生效,Proposer发送acknowledge消息通知所有的acceptor提议生效。

大年夜多半情况下,体系只有一个proposer,他的提议也老是会很快被大年夜多半节点接收。步调如下:

两层构造的分布式存储体系会将所有的数据持久化写入底层的分布式文件体系,每个数据分片同一时刻只有一个供给办事的节点。如上图所示,某双层构造的分布式存储体系有3个数据分片,A、B和C。它们分别被节点1,节点2和节点3所办事。当节点1产生故障时,总控节点将选择一个工作节点,比如节点2,加载A的办事。因为A的所稀有据都存储在共享的分布式文件体系中,节点2只须要大年夜底层的分布式文件体系攫取A的数据并加载到内存中。

当出现收集或者其他异常时,体系中可能存在多个Proposer,他们各自提议不合的提议。这里的提议可所以一个修改操作,也可所以提议本身成为主节点。如不雅proposer第一次提议的accept请求没有被acceptor中的多半派赞成(例如与其他proposer的提议冲突),那么,须要完全地履行一轮Paxos协定。过程如下:


  推荐阅读

  如何做好数据精细化分析,让你的运营效果指数级增长?

数据分析对于运营来说异常重要,它就像帆海中的指南针,越精确的数据细度能反竽暌钩不合运营手段对应的不合效不雅。那么,到底该若何应用数据分析明显晋升运营效不雅呢?本文将大年夜4个维>>>详细阅读


本文标题:分布式存储系统基础

地址:http://www.17bianji.com/lsqh/34788.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)