首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >顺序一致性和因果一致性

顺序一致性和因果一致性
EN

Stack Overflow用户
提问于 2014-11-09 04:57:20
回答 1查看 596关注 0票数 3

对于唯一的商品销售数据库,如果我们使用顺序一致性,我们可以保证,例如,唯一的商品永远不会被重复销售给不同的人。因果一致性能保证我们做到这一点吗?

如果有一些销售同时开始/结束,是否会中断系统?

因为商品是独一无二的,所以每件商品我们只能卖一件。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2015-07-07 21:39:34

通常的一致性保证了如果两个事件通常是相关的,那么每个人都会同意它们发生的顺序。它允许对通常不相关(或“同时”)的事件的顺序存在分歧。

由系统中的不同节点执行的购买物品的两次尝试通常不会是相关的-买家B几乎肯定不会尝试购买该物品,因为他已经看到买家A已经购买了它。在通常一致的系统中,这意味着这两个事件是同时发生的,并且系统中的不同节点可能不同意它们的相对顺序-A可能认为她的购买尝试是最先发生并成功的,而B可能相信相同的事情。

您可以强制这两次购买尝试通常与一些额外的最终结果相关。不是让买家直接购买商品,而是让他们写一份记录,表明他们想要购买商品。将单个节点指定为项目的“所有者”。每当它看到想要购买的记录时,它就会读取商品的当前状态,如果有的话,就把它卖给给定的购买者。购买者观察商品,看它是卖给他们还是卖给其他人。

这建立了两个事件之间的顺序:要么所有者首先看到A的记录并将其出售给她,要么首先看到B的记录并将其出售给B。这两个事件通常不相关,所以其他节点可能会以相反的顺序看到记录,但这很好-他们的意见不算数,只有所有者的意见算数。所有者的第二次读取(应该看到物品已经售出)通常与它之前标记物品已售出的写操作有关,因为它们在同一节点上执行,所以我们保证它只会售出一次物品。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26822007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档