重生之超级富二代下面我们来看,在这些步骤中,会有哪些失败场景和各自特点:本地 DB 的 SQL 执行:SQL 错误、与 DB 网络中断或者 DB 不可用的时候,会失败,但这种失败可补偿,且概率很低;远程调用:在本例中是“同步调用第三方支付渠道扣款”,因为这是网络调用,最复杂的一种,可能会超时、也可能会连接中断或其他错误原因中断,这里的失败是有无法补偿的可能的,尤其是业务类错误——用户余额不足、用户银行卡状态不爸爸的女朋友也是我的女朋友对等,都可能导致业务终止而无法继续下去;发送 MQ 和本地 DB 的 SQL 执行类似,是可补偿的失败,从可用性的角度来看,比 SQL 执行的失败概率略高一些,在我们实际场景中,就有发送失败的情况(我们使用的是 RocketMQ,曾经出现过几次 broker 刷盘缓慢导致流控的发送失败);异步系统执行:我们这里是触发账务系统入账,是 RPC 类(我们用的 Dubbo)操作,有一定的失败可能性(账务系统压力过大、内存溢出、磁盘占满等都可能导致其不能或部分服务器不能提供服务),但又因为它在业务上是肯定能成功的记账操作,所以即使失败,也是可以补偿的; 综合上面这些分析,考虑到步骤 2“同步调用第三方武动乾坤小说免费阅读全文支付渠道扣款”是唯一一种无法补偿的业务,且处于流程链最靠前的地方,所以整个业务流,我们是向着可补偿的方式,即保证最终都会成功的最终一致性的方向去做。
”这句话一瞬间就让我深刻地体会到了什么叫“价值取向。”在“按时吃营养餐”和“到国家