一、基础存储架构Dynamo
1.概述
(1)为了保证其稳定性,Amazon的系统采用完全的分布式、去中心化的架构。
(2)Dynamo只支持简单的键值对方式的数据存储,不支持复杂的查询
(3)Dynamo中存储的是value的原始形式,即按位存储,并不解析数据的具体内容,这使得其几乎可以存储所有类型的数据。
(4)Dynamo在设计时被定位为一个基于分布式存储架构的,高可靠、高可用且具有良好容错性的系统。
2.Dynamo的存储节点
(1)存储节点呈无中心的环状分布。
(2)偏好列表(preference list):存储与某个特定键值相对应的数据的节点列表。
(3)协调者(Coordinator):执行一次读或写操作的节点,通常,它是 preference list上的第一个节点。
3.需要解决的主要问题及解决方案
问 题 |
采取的相关技术 |
数据均衡分布 |
改进的一致性哈希算法 |
数据备份 |
参数可调的弱quorum机制 |
数据冲突处理 |
向量时钟(Vector Clock) |
成员资格及错误检测 |
基于Gossip协议的成员资格和错误检测 |
临时故障处理 |
Hinted handoff(数据回传机制) |
永久故障处理 |
Merkle哈希树 |
4.改进后的一致性哈希 算法
(1)在存储数据时,计算出数据中键的哈希值将其存放到哈希环顺时针方向上第一个标记大于或等于键的哈希值的设备节点上。
(2)保证哈希运算结果充分分散到整个环上。
(3)保证在添加或删除设备节点时只会影响到其在哈希环中的前驱设备节点,而不会对其他设备节点产生影响。