【发布时间】:2018-09-22 20:55:18
【问题描述】:
考虑一个关键应用程序,我必须进行两次外部调用来执行事务,第二次调用取决于第一次调用的状态。如果我必须使这个方法成为原子方法,即,我想确保整个事务发生或什么都没有发生。如果系统在两次调用之间出现故障,我该如何处理?
如果我在面试中被问到这个问题,我该怎么回答?
【问题讨论】:
标签: java algorithm transactions atomic acid
考虑一个关键应用程序,我必须进行两次外部调用来执行事务,第二次调用取决于第一次调用的状态。如果我必须使这个方法成为原子方法,即,我想确保整个事务发生或什么都没有发生。如果系统在两次调用之间出现故障,我该如何处理?
如果我在面试中被问到这个问题,我该怎么回答?
【问题讨论】:
标签: java algorithm transactions atomic acid
SQL 数据库通过分布式事务支持这种情况。如果您可以在数据库级别实现您的要求(即在分布式事务中执行您的原子方法),那将是实现这一目标的最简单方法。
另一种方法(虽然要复杂得多)是自己实现分布式事务协议。 SQL 数据库通常使用两阶段提交协议。详情请见https://en.wikipedia.org/wiki/Two-phase_commit_protocol。
【讨论】: