- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
对于一个独特的商品销售数据库,如果我们使用顺序一致性,我们就可以保证,例如,这个独特的商品永远不会被重复卖给不同的人。因果一致性能保证我们做到这一点吗?
如果有一些销售同时开始/结束,系统会中断吗?
由于元素是独一无二的,我们只能出售一件元素。
谢谢
最佳答案
因果一致性向您保证,如果两个事件通常相关,那么每个人都会同意它们发生的顺序。它允许对通常不相关(或“同时”)的事件的顺序产生分歧。
由系统中的不同节点执行的两次购买商品的尝试可能不会因果关系 - 买家 B 几乎肯定不会尝试购买该商品,因为他已经看到买家A已经买了。在一个因果一致的系统中,这意味着这两个事件是同时发生的,系统中的不同节点可能不同意它们的相对顺序——A 可能认为她的购买尝试先发生并成功了,而 B 可能相信同样的事情。
您可以强制将两次购买尝试与一些额外的偶然性联系起来。与其让买家直接购买该元素,不如让他们写下他们想要购买该元素的记录。将单个节点指定为项目的“所有者”。每当它看到有购买意愿的记录时,它就会读取该商品的当前状态,并且(如果可用)将其出售给给定的购买者。购买者会观察商品是卖给他们还是其他人。
这在两个事件之间建立了一个顺序:要么所有者首先看到 A 的记录并将其卖给她,要么首先看到 B 的记录并将其卖给他。这两个事件通常没有关联,因此其他节点可能会以相反的顺序看到记录,但这没关系——他们的意见不重要,只有所有者的意见才重要。所有者的第二次读取(应该看到该元素已经售出)通常与它之前标记该元素已售出的写入有关,因为它们是在同一节点上执行的,所以我们保证它只会出售该元素一次。
关于distributed - 顺序和因果一致性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26822007/
我是一名优秀的程序员,十分优秀!