操作日记的道理很简单:畏敲?用磁盘的次序读写特点,将客户端的写操作先次序写入磁盘中,然后应用到内存中。当办事器宕机重启时,只须要回放操作日记就可以恢复内存状况。为了进步体系的并发才能,体系会积攒必定的操作日记再批量写入稻磁逄中,这种技巧称为成组提交。
如不雅每次办事器出现故障都须要回放所有的操作日记,效力是无法忍耐的,检查点(checkpoint)恰是为懂得决这个问题。体系按期将内存状况以检查点文件的情势dump稻磁逄中,并记录检查点时刻对应的操作日记回放点。检查点文件创建成功后,回放点之前的日记可以被垃圾收受接收,今后如不雅办事器出现故障,只须要回放检查点之后的操作日记。
1)赞成(accept):Proposer发送accept消息请求所有其他节点(acceptor,接收者)接收某个提议值,acceptor可以接收或者拒绝。
强同步复制和异步复制都是基于主副本的复制协定(Primary-based protocol)。这种办法请求在任何时刻只能有一个副本为主副本,由它来肯定写操作之间的次序。如不雅主副本出现故障,须要选举一个备副本称为新的主副本,这步操作称为选举,经典的选举协定为Paxos协定。
一致性和可用性是抵触的,强同步复制协定可以包管主备副本之间的一致性,然则备副本出现故障时,也可能壅塞存储体系的┞俘常写办事,体系的┞符体可用性受到影响;异步复制的可用性相对较好,然则一致性得不到保障,主副本出现故障还稀有据损掉的可能。
除了基于主副本的复制协定,分布式存储体系还可能应用基于写多个存储节点的复制协定(Replicated-write protocol)。比如Dynamo体系中的NWR复制协定,个中N为副本数量,W为写操作的副本数,R为读操作的副本数。NWR协定中不再区分主和备,客户端根据必定的策略往个中的W个副本写入数据,读个中的R个副本。只要W+R>N,可以包管读到的副本中至少有一个包含了最新的更新。
一致性与可用性
来自Berkerly的Eric Brewer传授提出了一个有名的CAP理论:一致性(Consistency),可用性(Availability)以及分区可容忍性(Toleration of network Partition)三者不克不及同时知足。
一致性:读操作总能攫取到之前完成的写操作结不雅。
可用性:读写操作始终可以或许成功。
分区可容忍性:体系可以或许容忍因为机械故障、收集故障、机房停电等异常情况所造成的收集分区。
在分布式体系中,分区可容忍性老是要知足的,是以一致性和可用性不克不及同时知足。存储体系设计时须要在一致性和可用性之间衡量,在某些场景下,不许可损掉数据,在别的一些场景下,极小的概率损掉部分数据是许可的,可用性加倍重要。例如,Oracle数据库的DataGuard复制组件包含三种模式:
- 最大年夜保护模式(Maximum Protection):即强同步复制模式,写操作请求主库先将操作日记(数据库的redo/undo日记)同步到至少一个备库才可以返回客户端成功。这种模式包管即使主库出现无法恢复的故障,比如硬盘破坏,也不会损掉数据。
- 最大年夜机能模式(Maximum Performance):即异步复制模式,写操作只须要在主库上履行成功就可以返回客户端成功,主库上的后台线程会将重做日记经由过程异步的方法复制到备库。这种方法包管了机能和可用性,然则可能损掉数据。
- 最大年夜可用性模式(Maximum Availability):上述两种模式的┞粉衷。正常情况下相当于最大年夜保护模式,如不雅主备之间的收集出现故障,切换为最大年夜机能模式。
容错
跟着集群范围越来越大年夜,故障产生的概率也越来越大年夜,大年夜范围集群天天都有故障产生。容错是分布式存储体系涉及的重要目标,只有实现了主动化容错,才能削减人工运维成本,实现分布式存储的范围效应。
起首,分布式存储体系须要可以或许检测到机械故障,例如经由过程租约(Lease)协定实现。接着,须要可以或许将办事复制或者迁徙到集群中的其他正常办事的存储节点。
故障检测
容错处理的第一步是故障检测,心跳是一种很天然地设法主意。假设总控机A须要确认工作机B是否产生故障,那么总控机A每隔一段时光,比如1秒,向工作机B发送一个心跳包。如不雅一切正常,机械B将响应机械A的心跳包;不然,机械A重试了必定次数后认为机械B产生了故障。然则,机械A收不到机械B的心跳并不克不及确保机械B产生故障并停止了办事,比如可能是A和B之间出现收集问题导致A收不到答复。因为在机械A“认为”机械B产生故障后,往往须要将它膳绫擎的办事迁徙到集群中的其他办事器,为了包管强一致性,须要确保机械B不再供给办事。
这狼9依υ?题是机械A和机械B之间须要对“机械B是否应当被认为产生故障且停止办事”杀青一致。我们可以经由过程租约(Lease)机制进行故障检测,机械A可以经由过程机械B发放租约,机械B持有的租约在有效期内才许可供给办事,不然主动停止办事。机械B的租约将近到期的时刻向机械A从新申请租约。正常情况下,机械B经由过程赓续申请租约来延长有效期,当机械B出现故障或者与机械A之间的收集产生故障时,机械B的租约将过时,大年夜而机械A可以或许确保机械B不再供给办事,机械B的办事可以被安然地迁徙到其他办事器。
故障恢复
当总控机检测到工作机产生故障时,须要将办事迁徙到其他工作节点。常见的分布式存储体系分为两种构造:单层构造和双层构造。大年夜部分体系为单层构造,在体系中对每个数据分票保护多个副本;只有类Bigtable体系为双层构造,将存储和办事分为两层,存储层对每个数据分片保护多个副本,办事层只有一个副本供给办事。单层构造和双层构造的故障恢复机制有所不合。
单层构造和双层构造如下图所示:
磁盘故障可以分为两种情况:磁盘破坏和磁盘数据缺点。磁盘破坏瓯,将会损掉存储在膳绫擎的数据,因而,分布式存储体系须要推敲将数据存储到多台办事器,即使个一一台办事器磁盘出现故障,也能大年夜其他办事器上恢复数据。对于磁盘数据缺点,往往可以采取校验和机制来解决,如许的机制既可以在操作体系层面实现,又可以在上层的分布式存储体系层面实现。
推荐阅读
数据分析对于运营来说异常重要,它就像帆海中的指南针,越精确的数据细度能反竽暌钩不合运营手段对应的不合效不雅。那么,到底该若何应用数据分析明显晋升运营效不雅呢?本文将大年夜4个维>>>详细阅读
本文标题:分布式存储系统基础
地址:http://www.17bianji.com/lsqh/34788.html
1/2 1