Dynamo数据库论文小结

Dynamo是Amazon为实现高可用性和可扩展性而创建的key-value数据库,采用最终一致性模型。数据通过一致性哈希分布和备份,使用Vector Clock处理副本不一致,借助gossip协议进行错误探测。在节点故障情况下,Dynamo通过Hinted Handoff和anti-entropy协议确保数据恢复和同步。其设计着重于分区、负载均衡、故障检测与恢复,不支持复杂的查询和事务。
摘要由CSDN通过智能技术生成

论文链接:

http://www.allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf

Dynamo数据库提供了一个key-value的高可用性的数据库。它更是直接启发了Cassandra数据库的存储模式。总结来说,这个数据库的目的是为了高可用和可拓展,为了这两个目标,它采用了最终一致性的模型。这篇总结很简略地描述了Dynamo在设计时候考虑的重点和对应的技术选择。


首先,什么是Dynamo数据库?这个数据库的目的是什么?

这个是数据库是Amazon为了实现高可用和可拓展而开发的,是一个key-value数据库。加入我们要设计这个数据库,从哪里入手呢?

如何在集群中分发数据和如何备份数据?

在去中心化的集群里分发数据,采用一致性哈希算法。而备份数据,也是在一致性哈希算法的基础上采用多个节点存储。

接下来,如何副本之间的一致性?

Dynamo为了维护高可用(尤其是“写”可用)采取了最终一致性的模型。如何读?如何写? 这个要用到经典的三元组 (N, R, W),分别代表副本数目,读成功所需最少返回书,写成功需要最少执行数。而既然允许不一致的存在,必然要找到解决的办法,所以

如何解决副本之间不一致?

试想一下,遇到网络分区,不同分区的写操作如何保证?读数据时遇到不同的数据如何取舍?为了解决这些不一致,Dynamo采用了Vector Clock来处理不一致。

正常的情况都考虑完了,我们知道了怎么存储数据,怎么备份数据,怎么解决数据不一致,假设系统出现错误,该怎么办呢?

如何错误探测?

简单一点说,Dynamo使用gossip协议,利用心跳机制来进行错误探测。

节点暂时失效怎么办?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值