Closed zhoutianqi613 closed 7 years ago
您好,首先感谢对本项目的关注。在confirm的时候如果发生网络抖动或异常,此时TCC协调器会自动发起重试。如果该Confirm是第一个Participant的话,那么对于后面的Confirm是没有影响的,这里保持了一致性。如果是已有Confirm之后由其他Participant抛出异常的话,那么就属于Partial Confirm Exception,此时只能人工介入处理,所以你能看到有一个表记录了部分确认的情况。当然,要避免的这种情况,首先要保证代码质量,第二要保证其高可用。
ok,清楚明了。
如有更多问题欢迎新开issue。
部分confirm失败的case可以由控制器回滚所有的预留资源,也就是调用所有资源的cancel API即可,前提是comfirm和cancel对资源幂等 人工处理的前提一般是调用过程中服务中心down掉,此时comfirm/cancel均fallback,可以考虑用定时任务处理该情况,人工太肉
@RogerLuoXuan confirm是最终态,该状态没有回滚一说,若confirm状态存在回滚的可能,就是真正的不幂等。
楼主在confirm时,如果其中某项数据库操作(扣除余额或者消费产品) 发生异常,是如何统一全部回滚的???