强一致性、弱一致性、最终一致性
内容
定义与介绍
- 将不同的组件分布在不同的服务器上,给用户提供一个可靠统一的服务。
- 分布:不同
- 用户:可靠,统一的服务
- C一致性
- A可用性
- P分区容错性
- 强一致性
- 对多个数据源,多个数据库的所有的操作它是原子性完成的,然后它的数据是满足一致性的要求,以及隔离性,在分布式系统几乎不可能全部完成强一致性
- 弱一致性
- 当我的一个业务请求调用不同服务的时候,它是一个一个调用然后每一个服务的调用都是在这个事务内去满足一致性要求,对于一个用户来说他看到的结果是实际上他有可能看一个中间的结果,比如说他下单完了以后他有可能会看到扣费完成但是票还没有转移的一种状态,但是如果说他稍微等个几秒种或者说在一个很短的时间内,这个我所有的业务都能够正常的完成然后我的数据还是能达到一致性的要求
- 对于这个弱一致性来说有一个问题就是说,如果说出错了怎么办,一个业务操作先操作了一个服务然后再操作另外一个服务,但是在操作第二个服务的时候出错了,那我的第一个服务我应该怎么回滚,或者说我的整个业务我该怎么回滚,这个就是弱一致性比较难的地方,如果说我要考虑数据回滚、重试等等这些个机制的话,那我的这个分布式系统设计就会比较复杂
- 最终一致性
- 在弱一执行的基础上先允许出错,但是呢我可以通过一些重试机制或者通过些定时任务去扫描然后针对这种出错的情况直接进行取消,甚至通过人工干预的方式我能够让这些数据达到最终一致性
- 最终一致性大家很容易就能想象到,因为它不需要考虑很多数据的回滚,它的实现起来呢就会相对的容易,而它的性能就会比较好,因为我不需要考虑它的一致性或者同步性等一些操作,而且开发维护的成本也会比较低
- 所以在现在的分布式系统中大部分使用的还是通过这种最终一致性的方式去实现分布式事务
- BASE: Basically Available (基本可用)、Soft state (软状态)和Eventually consistent (最终一致性 )
- 相当于CAP原则中的一致性和可用性的权衡结果
推荐阅读
- 一个人的碎碎念
- 野营记-第五章|野营记-第五章 讨伐梦魇兽
- Shell-Bash变量与运算符
- 清明,是追思、是传承、是感恩。
- 牛人进化+|牛人进化+ 按自己的意愿过一生
- 七老修复好敏感、角质层薄、红血丝
- 华为旁!大社区、地铁新盘,佳兆业城市广场五期!
- 标签、语法规范、内联框架、超链接、CSS的编写位置、CSS语法、开发工具、块和内联、常用选择器、后代元素选择器、伪类、伪元素。
- 螃蟹和这些食物同吃,轻则腹泻、重则中毒!要小心哦~
- 八、「料理风云」