1.A和B微服务,如果A成功,B失败,此时A回滚为之前的状态,即A和B都失败,此时满足强一致性.
lcn框架来解决强一致性.
本地事务执行前会先创建txManage事务组对象.里面存放事务组信息,当B事务执行失败时,本地事务会根据这个事务组信息来判定成功还是失败,失败的话会回滚.
2.A和B微服务,如果A成功,B失败,此时通过RocketMQ重试,xxl-job等方式进行让B最终也成功,此时满足事务的最终一致性.
RocketMQ的半消息,消息回查,重试机制,以及xxl-job捞失败的核心参数走相应逻辑,最终人工兜底来保证最终一致性.
总结:选择哪种思想根据具体的项目性质和业务场景来定.