CAP, BASE, 最终一致性

  • Post author:
  • Post category:其他


目前关于事务的几大理论包括:

ACID事务特性,CAP分布式理论,以及BASE

等。

ACID在数据库事务中体现



CAP和BASE则是分布式事务的理论。



1、ACID 特性

  • 原子性(Atomicity)  原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。
  • 一致性(Consistency)  事务前后数据的完整性必须保持一致。
  • 隔离性(Isolation)        事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离。
  • 持久性(Durability)       持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响



2、CAP特性

  • C(一致性)一致性是指数据的原子性,在经典的数据库中通过事务来保障,事务完成时,无论成功或回滚,数据都会处于一致的状态,在分布式环境下,一致性是指多个节点数据是否一致;
  • A(可用性)服务一直保持可用的状态,当用户发出一个请求,服务能在一定的时间内返回结果;
  • P(分区容忍性)在分布式应用中,可能因为一些分布式的原因导致系统无法运转,好的分区容忍性,使应用虽然是一个分布式系统,但是好像一个可以正常运转的整体


CAP一句话就是,在网络分区时,不能同时保证可用性和一致性。


为了保证分布式中间件的可用性,大部分中间件会支持最终一致性。


3、BASE特性

  • BA: Basic Availability 基本业务可用性;
  • S: Soft state 柔性状态;
  • E: Eventual consistency 最终一致性;


4、一致性

  • 强一致性

强一致性(即时一致性) 假如A先写入了一个值到存储系统,存储系统保证后续A,B,C的读取操作都将返回最新值

  • 弱一致性

假如A先写入了一个值到存储系统,存储系统不能保证后续A,B,C的读取操作能读取到最新值。此种情况下有一个“不一致性窗口”的概念,它特指从A写入值,到后续操作A,B,C读取到最新值这一段时间。

  • 最终一致性

最终一致性是弱一致性的一种特例。假如A首先write了一个值到存储系统,存储系统保证如果在A,B,C后续读取之前没有其它写操作更新同样的值的话,最终所有的读取操作都会读取到最A写入的最新值。此种情况下,如果没有失败发生的话,“不一致性窗口”的大小依赖于以下的几个因素:交互延迟,系统的负载,以及复制技术中replica的个数(这个可以理解为master/salve模式中,salve的个数),最终一致性方面最出名的系统可以说是DNS系统,当更新一个域名的IP以后,根据配置策略以及缓存控制策略的不同,最终所有的客户都会看到最新的值。

引用:


https://www.cnblogs.com/moonandstar08/p/5334820.html

https://blog.csdn.net/dengjili/article/details/82468576

转载于:https://www.cnblogs.com/killerqi/p/10875428.html