云计算AWS之Dynamo容错机制 - 新闻中心 - 福州哈唐网络-福建IDC企业!专注云主机及服务器租用托管13年!

新闻中心

首页 > 新闻中心 > 行业新闻 >

云计算AWS之Dynamo容错机制

时间:2017-01-05 09:21:14   阅读:

 
  出于成本等方面的考虑,Dynamo中很多服务器托管采用的是普通PC主机(无显示器、键盘)。普通PC硬盘的性能和专业的服务器硬盘的性能相比相距甚远,出错在所难免,因此容错机制在Dynamo中非常重要。机器故障包括临时故障和永久性故障,下面从这两方面分别介绍Dynamo容错机制。
 
1)临时故障处理机制
 
  Dynamo临时故障处理机制主要体现在两方面,首先,在数据读写中采用了一种称为弱quorum (Sloppy quorum)的机制,涉及三个参数W、R、N,见其中W代表一次成功的写操作至少需要写入的副本数,R代表一次成功读操作需由服务器返回给用户的最小副本数,N是每个数据存储的副本数。Dynamo要求R+W〉N,满足这个要求,保证用户读取数据时,始终可以获得一个最新的数据版本。用户可以自行配置R和W,调节可用性和容错性之间的平衡。如果将E、W配低,则系统的可用性好于容错性,反之提高系统的容错性会降低可用性。从用户的角度来看,如果用户对于读操作要求较髙,可以将R设置为1,W设置成N,保证只要有一个节点可用,就可以进行读操作,反之则可以保证在只有一个节点情况下也可以进行写操作。这种固定N的设置方式和传统的quorum机制类似,但是Dynamo采用的弱quorum机制对其做了改进。这种机制规定系统对每个数据的存储量仍为N,但此时的N并不限定为preference list的N个节点,而是将N限制为前N个正常节点。巧妙之处在于,一方面当preference list中前N个节点中有出现临时故障的,则会自动由后面的正常节点接替其工作,增强了系统的容错性。另一方面,一旦某个节点出现问题,则将这个节点值传送给preference list中的下一个正常节点,并在这个数据副本的元数据中记录失效的节点位置,便于数据回传;然后,由这个节点上一个临时空间进行存储和处理数据,同时该节点还对失效的节点进行监测,一旦失效的节点重新可用,则将自己所保存的最新数据回传给它,然后删除自己开辟的临时空间数据。简单地说这是一种带有监听的数据回传机制(HintedHandoff)。图3-7是pynamo临时故障处理机制示意图。
 
\
 
2)永久性故陣处理机制
 
  节点出现永久性故障时,Dynamo必须检査和保持数据的同步 ,Dynamo采用一种称为反熵协议(Anti-entropy Protocol)的手段来保证数据的同步。为了减少数据同步检测中需要传输的数据量,加快检测速度,Dynamo使用了Merkle哈希树技术,每个虚拟节点保存三颗Merkle树,即每个键值区间建立一个Merkle树。Dynamo中Merkle哈希树的叶子节点是存储每个数据分区内所有数据对应的哈希值,父节点是其所有子节点的哈希值。图3-8是两棵不同的Merkle哈希树A和B。
 
\
 
  系统比较两棵同一键值区的Merkle哈希树时,首先査看根节点,如果相同则说明数据一致,不需要进行数据同步,否则需要继续比较,直到哈希值不同的叶子节点,快速定位差异。例如,图3-8中A和B的根节点不同,说明需要进行数据同步。紧接着比较A和B的子节点,发现右子树的根节点2≠5,继续比较右予树根节点的子节点,按同样的步骤一直进行下去,发现需要同步的数据位置。Merkle树最大特点是只要比较某个子树就可以完成数据同步检测和定位,进而进行同步,大大减少了同步过程中所需传输数据量,提高了系统效率。


闽公网安备 35010002000114号