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

Posted 那啥快看

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Cloud微服务系统下的数据一致性探讨相关的知识,希望对你有一定的参考价值。

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

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

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

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

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

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

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

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

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

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

架构3:用到了分库

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

以上是关于Spring Cloud微服务系统下的数据一致性探讨的主要内容,如果未能解决你的问题,请参考以下文章

微服务框架Spring Cloud之使用事件和消息队列实现分布式事务

(转)如何保障微服务架构下的数据一致性?

Spring Cloud 分布式事务管理

Spring Cloud微服务运维神器之Consul Template?

Spring Cloud同步场景分布式事务怎样做?试试Seata

Spring Cloud Alibaba - 18 Nacos Config配置中心加载相同微服务的不同环境下的通用配置