Amazon Dynamo论文学习
Dynamo是一个key-value数据存储系统,去中心化、高可扩展、高可用,使用一致性哈希来分区和备份数据,使用数据版本化来实现一致性。
核心技术
- CAP:一致性、可用性、扩展性
- 一致性哈希:切分数据,实现系统增量扩展
- 最终一致性:永远可写,利用数据版本(vector clock)协调数据冲突(由读端自行解决)。使用R+W > N来仲裁操作是否成功,R-参与读成功的最少节点数,W是写操作成功的最少节点数,N是数据的副本数。
- 临时故障处理:Hinted handoff,当一节点A故障时,落到该节点的副本数据放到另一节点B(暗示节点),B将数据和预期接收者信息(A)存到本地,当A复活时,将数据传回A。
- 永久故障恢复:如果没法用暗示副本来恢复数据,就需要进行副本同步(从一个副本节点拷贝数据)。使用Merkle Tree来检查两个节点的副本数据是否一致,快速查找发生变化的数据。(原理:所有非叶子节点的值都由其子节点Hash而来)
- 成员和故障检查:Gossip协议,去中心化,节点间互相通信发现故障节点。
待续。。。。