@
15399905591 #12 其实不复杂,就是创建订单和减库存都需要提供三个接口,分别是执行创建订单、提交创建订单操作和回滚创建订单操作,扣减库存也是一样的
具体实现如果你用的 mysql 的话,可以在第一个接口就把数据提交过去,然后开 mysql 事务,然后执行 sql,但是不提交 mysql 事务,如果创建订单和扣减库存两个操作的第一个接口都执行成功的话,就调用创建订单和扣减库存的第二个接口,提交刚才第一个接口打开的 mysql 事务,前两个接口有任何事务再走第三个接口回滚刚才的操作就行,回滚的时候可以判断下,如果 mysql 事务还没提交就直接回滚 mysql 的事务就行,否则可以考虑删掉之前添加的数据,当然如果你觉得删数据有风险,这种很小概率失败的风险也无所谓当然也可以不删
开 mysql 事务的时候注意添加一个超时,超时也执行回滚,一般来说分布式事务的一致性肯定是要弱于 mysql 事务这种的,就看你能承受多高的不一致概率了,如果像扣钱这样需要非常高一致性的操作就最好不要用分布式事务了