- Dynamo
问题与方案
数据分布 一致性Hash 分片内一致性协议 NWR 数据冲突处理 向量时钟 临时故障处理 数据回传 永久性故障恢复 Merkle哈希树 节点故障探测及元信息 Gossip协议 数据分布
常见的一致性Hash(虚拟节点、哈希环等),集群的元信息通过Gossip传播,每个节点都全量的存储集群元信息。
一致性与复制
NWR保证数据的读写一致性,问题是分片内不区分主从,数据更新的协调者不是单点,引入的问题就是数据更新冲突。Dynamo的解决方案是向量时钟,向量时钟只能解决偏序关系的冲突,非偏序关系冲突,需要其他因素作为评判标准,Dynamo默认是机器时间(机器时钟可能跳变、可能篡改),还可以交给用户,根据用户的规则进行解决冲突。
注:Dynamo这种分片内无主的模型也称作多活。如果将不同的分片放在不同的地域,这种模型称作异地多活。目前在一些大公司异地多活是一个比较受业务方欢迎的亮点。
容错