股票交易接口
➹回到我们的交易系统,先不考虑多数据库之间的数据一致性问题,简单的交易流程为:
➹上面问题产生的原因其实是过早地向金币数据库提交事务,所以我们可以采取后置提交事务策略来解决此问题,即先在金币数据库与道具数据库上执行SQL,最后再提交金币数据库与道具数据库上的事务,这样当执行SQL出现异常时,我们就能通过同时回滚两个数据库上事务的方式,来保证数据一致性。
➹正常情况下,上面的流程不会产生数据一致性问题,但如果在步骤[7]执行SQL添加道具时出现异常,由于扣除金币的事务已经在步骤[5]提交无法回滚,就会出现扣除玩家金币后没有为玩家添加道具的数据不一致情况。
➹ 基于两段提交的多数据事务
➹所谓两段式事务提交指的是在执行提交commit操作前,添加预提交prepare操作,其中预提交操作执行了传统意义上提交操作的大部分工作,我们可以简单地认为只要预提交prepare操作成功,后续的提交commit操作一定会成功。