分布式消息最终一致性事务
2016-12-14 14:50
501 查看
现在先抛出问题,假设有一个主数据中心在北京M,然后有成都A,上海B两个地方数据中心,现在的问题是,假设成都上海各自的数据中心有记录变更,需要先同步到主数据中心,主数据中心更新完成之后,在把最新的数据分发到上海,成都的地方数据中心A,地方数据中心更新数据,保持和主数据中心一致性(数据库结构完全一致)。数据更新的消息是通过一台中心的MQ进行转发。
先把问题简单化处理,假设A增加一条记录Message_A,发送到M,B增加一条记录 MESSAGE_B发送到M,都是通过MQ服务器进行转发,那么M系统接收到条消息,增加两条数据,那么M在把增加的消息群发给A,B,A和B找到自己缺失的数据,更新数据库。这样就完成了一个数据的同步。
从正常情况下来看,都没有问题,逻辑完全合理,但是请考虑以下三个问题
1 如何保证A->M的消息,M一定接收到了,同样,如何保证M->A的消息,M一定接收到了
2 如果数据需要一致性更新,比如A发送了三条消息给M,M要么全部保存,要么全部不保存,不能够只保存其中的几条记录。我们假设更新的数据是一条条发送的。
3 假设同时A发送了多条更新请求,如何保证顺序性要求?
这两个问题就是分布式环境下数据一致性的问题
原文详细分析,原文地址:http://www.cnblogs.com/BrightMoon/p/5622614.html
附分布式最终一致方案梳理:http://www.cnblogs.com/BrightMoon/p/5622618.html
先把问题简单化处理,假设A增加一条记录Message_A,发送到M,B增加一条记录 MESSAGE_B发送到M,都是通过MQ服务器进行转发,那么M系统接收到条消息,增加两条数据,那么M在把增加的消息群发给A,B,A和B找到自己缺失的数据,更新数据库。这样就完成了一个数据的同步。
从正常情况下来看,都没有问题,逻辑完全合理,但是请考虑以下三个问题
1 如何保证A->M的消息,M一定接收到了,同样,如何保证M->A的消息,M一定接收到了
2 如果数据需要一致性更新,比如A发送了三条消息给M,M要么全部保存,要么全部不保存,不能够只保存其中的几条记录。我们假设更新的数据是一条条发送的。
3 假设同时A发送了多条更新请求,如何保证顺序性要求?
这两个问题就是分布式环境下数据一致性的问题
原文详细分析,原文地址:http://www.cnblogs.com/BrightMoon/p/5622614.html
附分布式最终一致方案梳理:http://www.cnblogs.com/BrightMoon/p/5622618.html
相关文章推荐
- 分布式事务五_基于可靠消息的最终一致性_异常流程
- 分布式消息最终一致性事务
- 分布式事务解决方案一之:可靠消息最终一致性
- 【分布式事务】可靠消息最终一致性方案
- 分布式事务解决方案之消息最终一致性(可靠消息服务)上篇
- 分布式事务解决方案之消息最终一致性(可靠消息服务)下篇
- 分布式事务八_可靠消息最终一致性方案
- (微服务)分布式事务-最大努力交付 && 消息最终一致性方案
- 如何选择分布式事务形态(TCC,SAGA,2PC,基于消息最终一致性等等)
- 分布式事务四_基于可靠消息的最终一致性
- 分布式事务九_基于可靠消息的最终一致性代码
- 消息中间件(一)分布式系统事务一致性解决方案大对比,谁最好使?
- QNJR-GROUP/EasyTransaction: 依赖于Spring的一个柔性事务实现,包含 TCC事务,补偿事务,基于消息的最终一致性事务,基于消息的最大努力交付事务交付QNJR-GROUP/EasyTransaction: 依赖于Spring的一个柔性事务实现,包含 TCC事务,补偿事务,基于消息的最终一致性事务,基于消息的最大努力交付事务交付
- 微服务架构分布式事务解决方案设计思路(可靠消息最终一致方案-概念)
- 分布式事务?No, 最终一致性
- 分布式事务方案:可靠消息最终一致方案
- 消息中间件(一)分布式系统事务一致性解决方案大对比,谁最好使?
- 分布式事务:两段式提交(最终一致性)
- 漫谈事务与分布式事务(4)- 最终一致性
- 分布式事务最终一致性常用方案