对于分布式系统而言,分区容错性是必须的,因此在3选2的前提下,对一致性和可用性进行了权衡之后出现了BASE理论;BASE理论来源于对大型互联网分布式的总结,是基于CAP理论逐步演化而来的。其核心思想:既是无法做到强一致性,但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性。
BASE理论
BA | Basically Available | 基本可用性 |
S | Soft state | 软状态 |
E | Eventually Consistent | 最终一致性 |
- 基本可用性
在分布式系统出现故障时,允许损失部分可用性(注意,这绝不等价于系统不可用)
- 响应时间上的损失:正常情况下的搜索引擎 0.5 秒即返回给用户结果,而基本可用的搜索引擎可以在 1 秒作用返回结果。
- 系统功能上的损失:在一个电商网站上,正常情况下,用户可以顺利完成每一笔订单,但是到了大促期间,为了保护购物系统的稳定性,部分消费者可能会被引导到一个降级页面。
- 软状态
软状态指允许系统中的数据存在中间状态,并认为该中间状态的存在不会影响系统的整体可用性,即允许系统在不同节点的数据副本之间进行数据同步的过程存在延时。
- 最终一致性
最终一致性强调的是所有的数据副本,在经过一段时间的同步之后,最后达到了一个一致的状态(软状态--中间状态到最后一致,保证所有副本数据的一致性)。最后达到一致的时间取决于网络延时、系统负载、数据复制方案设计等因素。
【系统能够保证在没有其他新的更新操作的情况下,数据最终一定能够达到一致的状态,因此所有客户端对系统的数据访问最终都能够获取到最新的值。】
ACID事务管理
谈到事务一般都是以下四点
原子性(Atomicity)
原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。
一致性(Consistency)
事务前后数据的完整性必须保持一致。
隔离性(Isolation)
事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离。
持久性(Durability)
持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响
小结
总的来说,BASE理论面向的是大型高可用可扩展的分布式系统,和传统的事物ACID特性是相反的,他完全不同于ACID的强一致性模型,而是通过牺牲强一致性来获得可用性,并允许数据在一段时间内是不一致的,但最终达到一致状态。但同时,在实际的分布式场景当中,不同的业务单元和组件对数据的一致性的要求是不同的,因此在具体的分布式架构设计过程中,ACID特性和BASE理论往往又会结合在一起。
参考:
- 分布式理论(二)——Base 理论:https://www.cnblogs.com/stateis0/p/9062123.html
- 架构设计 -- 服务降级:https://www.cnblogs.com/zhaochenguang/p/11042655.html
- 事务ACID理解: https://blog.csdn.net/dengjili/article/details/82468576