云计算AWS之Dynamo采用的改进算法及数据备份 - 新闻中心 - 福州哈唐网络-福建IDC企业!专注云主机及服务器租用托管13年!

新闻中心

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

云计算AWS之Dynamo采用的改进算法及数据备份

时间:2016-12-28 10:59:25   阅读:

Dynamo采用的改进算法

  Dynamo采用一致性哈希算法的主要原因是每个节点只需处理落在它和它的前驱节点之间的数据,这样增/删节点时系统振荡较小。一致性哈希函数是一种随机性的函数,在节点数量较少的情况下很可能造
成环上节点分布的不均匀,导致负载不均匀;在选择节点位置时,并没有考虑环上不同节点的性能差异。为了解决这些问题,Amazon在Dynamo中引入了虚拟节点的概念。每个虚拟节点都属于某一个实际的物理节点,一个物理节点根据其性能的差异可能拥有一个或多个虚拟节点。每个虚拟节点能力基本相当,并随机分布在哈希空间中。存储时,数据按照哈希值落到某个虡拟节点负责的区域,然后被存储在该虚拟节点所对应的物理节点中,如图3-4所示。
 
\
 
  假设将一个值域为2^n 的Hash环划分成2个等份,每个等份称做一个数据分区 (Partiti0n),有S个虚拟节点,并且满足Q〉〉S,则每个虚拟节点对应的分区数V=Q/S,将两个虚拟节点之间的所有分区称为一个键值区间,如图3-5所示。这种数据分区和等份存储的好处在于:首先,数据以分区为单元进行存储,实现了数据划分(Datj Partitioning)和数据存储(Data Placement)的分离。在增/删节点时,只是引起键值区间的变化,不需要改变相应节点内数据的存储位置,对于存储大量数据的系统是非常有效的。其次,当删除节点时,该节点的负载会比较均匀地分摊到其他节点,因为该节点所对应的虚拟节点比较均匀地分布在环上;同样的道理,当添加新节点时,其他虚拟节点的负载会比较均匀地转移到新节点上。另外,通过虚拟节点和物理节点多对一的配置可以实现处理能力权重配置,可以解决基本一致性哈希算法未考虑节点处理能力差异的问题。注意,随着节点的增加,特别是Q接近S后,Dynamo的性能会急剧下降,因此在设计之初,要选择好Q值。
 
\
 
数据备份
 
  当数据被均匀存储到环上各节点后,0ynamo将冗余存储数据(备份数据)。设N代表每份数据保存在系统中的副本数,考虑到存在节点失效的情况,preference list大于N并且只存储实际的物理节点而不存储虚拟节点。Dynamo中N—般取3,节点的数据副本备份在环上它的顺时针方向后继节点中。例如,图3-5中键k对应的数据存储在虚拟节点A中,而它的数据副本将按顺时针方向备份在虚拟节点B、C上。根据这个规定,上面提到的键值区间实际存储的就是它和它的前个前驱键值运间的数据。这种设计提高了系统的可用性。由于在写操作的同时进行副本备份,会使用户每次的写操作时延变长,因此Dynamo在写操作时采用了优化的方式,写操作时,保证一个副本必须写入硬盘,其他副本只要写入节点的内存即返回写成功。这样既保证了副本的数量又减少了时延。实际上Amazon提供了更高的可靠性保证,它可以保证相邻的节点分别位于不同地区区域,即使某个数据中心由于自然灾害或断电的原因整体瘫痪,仍可以保证在世界上其他数据中心中保存有数据的备份。这里就有一个非常重要的问题,如何进行节点分布,保证相邻节点位于不同的数据中心,有兴趣的读者可以自己思考一下。


闽公网安备 35010002000114号