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