Skip to content

Commit 1e7e29a

Browse files
authored
Merge pull request Vonng#215 from songzhibin97/patch-25
Update ch5.md
2 parents 8c6126d + 7368aaa commit 1e7e29a

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

ch5.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -617,7 +617,7 @@ Dynamo 风格的数据库允许多个客户端同时写入相同的 Key,这意
617617

618618
正如 **“最近”** 的引号所表明的,这个想法其实颇具误导性。在 [图 5-12](img/fig5-12.png) 的例子中,当客户端向数据库节点发送写入请求时,两个客户端都不知道另一个客户端,因此不清楚哪一个先发送请求。事实上,说这两种情况谁先发送请求是没有意义的:我们说写入是 **并发(concurrent)** 的,所以它们的顺序是不确定的。
619619

620-
即使写入没有自然的排序,我们也可以强制任意排序。例如,可以为每个写入附加一个时间戳,挑选最 **最近** 的最大时间戳,并丢弃具有较早时间戳的任何写入。这种冲突解决算法被称为 **最后写入胜利(LWW, last write wins)**,是 Cassandra 【53】唯一支持的冲突解决方法,也是 Riak 【35】中的一个可选特征。
620+
即使写入没有自然的排序,我们也可以强制任意排序。例如,可以为每个写入附加一个时间戳,挑选的最大时间戳作为**最近的**,并丢弃具有较早时间戳的任何写入。这种冲突解决算法被称为 **最后写入胜利(LWW, last write wins)**,是 Cassandra 【53】唯一支持的冲突解决方法,也是 Riak 【35】中的一个可选特征。
621621

622622
LWW 实现了最终收敛的目标,但以 **持久性** 为代价:如果同一个 Key 有多个并发写入,即使它们报告给客户端的都是成功(因为它们被写入 w 个副本),也只有一个写入将存活,而其他写入将被静默丢弃。此外,LWW 甚至可能会删除不是并发的写入,我们将在的 “[有序事件的时间戳](ch8.md#有序事件的时间戳)” 中讨论。
623623

0 commit comments

Comments
 (0)