首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取数据状态的一致视图

获取数据状态的一致视图
EN

Software Engineering用户
提问于 2010-09-23 15:58:12
回答 2查看 81关注 0票数 4

这是一个理论问题。它可以应用于许多系统。例如,让我们假设RESTful Web服务。您想找出一些东西,但碰巧的是,您无法在一个查询中得到它。您可以进行多个查询。例如,您有一个联合银行帐户(或一个公司银行帐户),您想知道有多少钱在那里。与此同时,其他人把钱从支票转到储蓄。

代码语言:javascript
复制
Checking:  $5,000   Savings:  $3,000

我:查询检查。答复:5 000美元

乔:把4,000美元从支票转到储蓄

代码语言:javascript
复制
Checking: $1,000   Savings:  $7,000

我:查询储蓄。答复:7 000美元

共计12 000美元。

你如何避免这样的反常现象?该示例显示在一家银行的两个帐户,但在两家不同银行的两个帐户中也可能出现这种情况。

EN

回答 2

Software Engineering用户

回答已采纳

发布于 2010-09-23 16:23:38

您需要某种形式的并发控制来处理这样的问题。

在您的示例中,有一些可能的解决方案:

  1. 确保服务可以在一个查询中返回储蓄和核对数字,可能是一个总计。
  2. 实现某种会话,以便请求值的用户可以锁定数据,直到她完成对其感兴趣的所有值的读取。这种方法通常被称为“悲观的并发控制”。
  3. 设计该服务,以便在请求储蓄数字时,可以将先前的检查数字传回给您。如果检查数字不再与其先前的值匹配,则服务应该指示错误,而不是返回一个值以节省费用。这种方法是“光学并发控制”的一种变体。
票数 4
EN

Software Engineering用户

发布于 2010-09-23 17:49:22

这就是为什么有一些进程来指示、清除和待决的活动。就像您在同一笔交易中同时拥有提款和押金一样,这些余额必须进行合并,并表明有未完成的转账,因此可能无法获得所有余额。

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

https://softwareengineering.stackexchange.com/questions/6723

复制
相关文章

相似问题

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