Spring Cloud微服务系统下的数据一致性探讨

我想这个问题需要根据自己的系统具体架构来分别讨论,这边拿一个车联网的系统举例。

拆除GPS这个功能接口需要分几个步骤实现(不涉及数据更新的步骤略去了):

①更改GPS设备状态(设备管理服务)

②更改工单状态(工单管理服务)

假设调用拆除GPS这个接口的时候,由于各种原因②不能工作了。

架构1:普通的微服务架构

工单管理服务要调用设备管理服务的功能,用的是spring cloud的自己的restTemplate,这个很简单,加上普通的事务就可以了。

架构2:引入了消息中间件

这个时候,服务之间调用加了一层消息中间件(以activemq为例),这也没关系,activemq有消息确认机制ACK,可以指定ACK_MODE为SESSION_TRANSACTED=0进行事务提交

,然后再配合原来的数据库事务,也可以实现。并且activemq还有失败重发机制,可以尝试N次重发失败之后再回滚。

架构3:用到了分库

那就涉及到多数据源了,这方面spring也可以集成atomiko实现分布式事务。

转载于:https://www.cnblogs.com/shamo89/p/8098050.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值