0
想象有两个客户端client1和client2,都写入相同的密钥。此密钥有三个副本,分别命名为A,B,C。第一个接收client1的请求,然后是client2',而B接收client2的请求,然后接收client1的请求。现在A和B必须彼此不一致,即使使用矢量时钟也不能解决冲突。我对吗?Dynamo中的写入冲突
如果是这样,似乎很容易发生在发电机的写冲突。为什么这么多基于发电机设计的开源项目?
想象有两个客户端client1和client2,都写入相同的密钥。此密钥有三个副本,分别命名为A,B,C。第一个接收client1的请求,然后是client2',而B接收client2的请求,然后接收client1的请求。现在A和B必须彼此不一致,即使使用矢量时钟也不能解决冲突。我对吗?Dynamo中的写入冲突
如果是这样,似乎很容易发生在发电机的写冲突。为什么这么多基于发电机设计的开源项目?
不能谈论HBase,但我可以关于Cassandra,这是受Dynamo启发的。
如果发生在卡桑德拉,最近的关键胜利。
Cassandra使用协调器节点(可以是任何节点),它接收客户端请求并将它们重新发送到所有副本节点。每个请求的含义都有其自己的时间戳。
想象一下,客户端2具有最近的请求,即在客户端1之后的毫秒数。
副本A收到客户端1,它被保存,然后客户端2,因为客户端2这是保存在客户端1是该密钥的最新信息。
副本B接收已保存的客户端2,然后接收由于具有较旧的时间戳而被拒绝的客户端1。
副本A和B都有Client2,最新的信息,因此是一致的。
明白了。谢谢你的解释。 – Edison