请教一致性区别

来源:7-7 按消息流程实现业务

qq_郭靖_03148326

2019-04-23

1.强一致性指的是多个服务多个数据源之间相互调用的任一服务出错都能自动有效的回滚是这样理解么?
2.那弱一致性和最终结果一致性怎么区分理解?

写回答

1回答

大漠风

2019-06-08

强一致性不止是说出错了能回滚,他还要求:

  1. 在这个请求处理过程中,别的请求看不到中间的数据状态,即并发请求时的隔离性

  2. 出错回滚,其他以及后续的请求看到的都是更新前的数据状态。

  3. 在当前的请求结束后,后续的请求也都能看到之前操作后更新的数据(在分布式系统中,后续的请求可能会从不同的实例返回,这种情况存在于数据有多个备份的情况)

弱一致性就是:

  1. 在一个请求处理过程中,另一个请求可能会看到中间的数据状态,请求之间没有隔离行。

  2. 如果处理过程中出错,虽然能自动回滚,但是可能会有一段时间内,其他的请求会访问到未回退完的数据。

  3. 即使在处理结束后的后续请求中,也可能会有一段时间,看到的原先未更新的数据,可能数据未更新到所有节点。

最终一致性:

  1. 如果数据有多个备份,如果数据停止更新,就能够达到一致的状态。

  2. 在出错情况下,需要自动回滚的时间比较长,甚至需要人工处理,但是经过一定时间后,数据能够达到一致的状态。

由于在我们的课程当中,考虑的是多个数据源,如数据库、MQ等,而不是一个分布式的数据库、分布式的RocketMQ等,所以,我说一致性的时候偶,没有考虑一个数据有多个备份的情况,而是从出错恢复角度来区分弱一致性,和最终一致性。

1
0

分布式事务实践,从原理到实例,解决数据一致性

掌握分布式事务实现技术,是架构师必备技能。

1149 学习 · 153 问题

查看课程