可靠性事件模式线上运用

最近完成一个项目,使用springboot微服务架构。不免遇到分布式事务的难题。业务情况是:用户可以使用积分和返利来支付订单,在订单创建的事件中,需要占用积分账户和返利账户,然后消费积分,消费返利,最后完成订单创建。实际开发中,积分和返利都是另外第三方的系统,不可能提供给我们许多接口,因此,分布式事务最后采用了可靠性事件模式。总体上保证数据一致性。


本地事件表

  • 微服务在同一个本地事务中记录业务数据和事件。

  • 微服务实时发布一个事件立即通知关联的业务服务,如果事件发布成功立即更新记录的事件状态。

  • 事件恢复服务定时从事件表中恢复未发布成功的事件,重新发布,重新发布成功才更新记录的事件状态。

可靠性事件模式线上运用

补偿模式
补偿模式是更复杂的业务处理逻辑,可以允许有逆操作的业务可以使用该模式。
(微服务实现补偿操作不是简单的回退到业务发生时的状态,因为可能还有其他的并发的请求同时更改了状态。一般都使用逆操作的方式完成补偿。)补偿模式使用一个额外的协调服务来协调各个需要保证一致性的微服务,协调服务按顺序调用各个微服务,如果某个微服务调用异常(包括业务异常和技术异常)就取消之前所有已经调用成功的微服务。
TCC模式和补偿模式一样需要需要有协调服务和工作服务,协调服务也可以作为通用服务一般实现为框架。与补偿模式不同的是 TCC 服务框架不需要记录详细的业务流水,完成 confirm 和 cancel 操作的业务要素由业务服务提供。

转载于:https://blog.51cto.com/17099933344/2054673

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值