1. 基础存储架构 Dynamo
Dynamo 概况2. Dynamo的存储节点
Dynamo的存储节点3. Dynamo 需要解决的主要问题及方案
Dynamo在设计时被定位为一个基于分布式存储架构的,高可靠、高可用且具有良好容错性的系统。下图列举了 Dynamo 设计时面临的主要问题及所采取解决方案。
问题&解决方案
3.1. 数据均衡分布问题
-
Dynamo采用了分布式的数据存储架构,均衡的数据分布可以保证负载平衡和系统良好的扩展性。
-
因此,如何在各个节点上数据的均衡性是影响Dynamo性能的关键问题。
-
Dynamo中使用改进后的一致性哈希算法,并在此基础上进行数据备份,以提高系统的可用性。
一致性哈希算法 -
一致性哈希算法除了能够保证哈希运算结果充分分散到整个环上外,还能保证在添加或删除设备节点时只会影响到其在哈希环中的前驱设备节点,而不会对其他设备节点产生影响。
-
一致性哈希算法可以大大降低在添加或删除节点时引起的节点间的数据传输开销。
3.2. 数据备份
-
在Dynamo中,每个数据的副本备份存储在哈希环顺时针方向上该数据所在虚拟节点的后继节点中。
-
数据备份在存储数据的同时进行,会使每次写操作的延时变长。
-
Dynamo中对写操作进行了优化,保证一个副本必须写入硬盘,其他副本只要写入节点的内存即返回写成功。
-
每个虚拟节点上实际存储了分配给它以及分配它的前N-1个前驱虚拟节点的数据。
3.3. 数据冲突问题
Dynamo选择通过牺牲一致性来保证系统的可靠性和可用性,没有采用强一致性模型而采用了最终一致性模型。
三个因素
由于Dynamo中可能出现同一个数据被多个节点同时更新的情况,且无法保证数据副本的更新顺序,这有可能会导致数据冲突。
向量时钟技术
3.4. 成员资格及错误检测
Gossip协议Seed node
分层Dynamo结构
网友评论