考虑一个关键的应用程序,我必须进行两个外部调用才能进行交易,第二个调用取决于第一个调用的状态。如果必须使此方法成为原子方法,即我想确保整个事务都发生或什么都没有发生。如果系统在两次调用之间出现故障,该如何处理?
如果在面试中遇到这个问题,我应该怎么回答?
答案 0 :(得分:1)
SQL数据库通过分布式事务支持此方案。如果您可以在数据库级别上实现您的要求(即在分布式事务中执行您的原子方法),那将是最简单的方法。
另一种方法(尽管要复杂得多)是自己实现分布式事务协议。 SQL数据库通常使用两阶段提交协议。有关更多详细信息,请参见https://en.wikipedia.org/wiki/Two-phase_commit_protocol。