本文主要是介绍Dynamo分布式键值系统的一点理解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
解决了什么问题
高可用的、可持续写入的存储服务。
P2P的系统,伸缩灵活。
几个关键问题和解决方案
问题 | 解决方案 | 好处 |
---|---|---|
数据分布 | 一致性哈希DHT | 减少数据迁移 |
数据备份 | NWR (R+W>N) | 在可用性和一致性间平衡 |
成员管理 | Gossip协议 | Seed、成员节点定期交换mapping |
短暂故障处理 | Hinted Handoff | 避免数据迁移、提高可用性 |
永久故障处理 | Merkle树 | 同步副本数据、减少数据传输、快速发现不一致数据 |
数据分布
哈希环
将待存储的键值对中键的Hash值范围看成首尾相连成为一个环。环上的每个节点负责存储的数据为顺时针方向其前一个节点到当前节点的哈希值范围对应的数据。
为了数据分布的均匀一致,并且考虑到节点的异构性(节点性能、磁盘空间差异),引入了虚拟节点。将哈希环进一步按照细粒度分割,最好等距分割(这样数据的归档、重新分布都很容易),分割后的哈希环上的每一段,都视为一个虚拟节点,再按照每个物理节点的负载,为其与分配负载相当数量的虚拟节点。
数据备份
NWR是一种一致性和可用性的平衡策略。N代表数据的副本数量,W代表写请求成功的最少副本数量,R代表读请求成功的最少副本数量。举个例子,N=3表示副本数量是3;W=2表示两个副本数据写成功后这个写请求就是成功的
这篇关于Dynamo分布式键值系统的一点理解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!