theme: channing-cyan
这是我参与8月更文挑战的第12天,活动详情查看:8月更文挑战
一、ACID 原则
对于大多数使用关系型数据库的开发人员,ACID(原子性、一致性、隔离性和持久性)原则对于他们再熟悉不过了。这个概念已经存在了几十年了,直到最近,它一直也是所有书库努力实现的主要基准,如果一个给定的数据库系统中未满足ACID的要求,那么这个系统的可靠性就很值得怀疑。
ACID当然是有四个组成部分:
- Atomicity(原子性) :在执行事务的任务集合内,要么都不执行,要么每一个都执行成功。有一种宁缺毋滥的含义。
- Consistency(一致性) :事务必须在任何时候都能满足系统定义的所有协议和规则。数据库必须在事务的开始和结束时保持一致的状态,永远不存在完成一半的事务。
- Isolation(隔离性) :任何事务都不能访问处于中间状态或未完成状态的其它事务。因此每笔交易都是独立的。
- Durability(持久性) :一旦交易完成,它将持续作为完整的数据,并且不能撤销;它能经受住系统故障等其它类型的故障。
总的来说,在关系型数据库中,ACID是绝对的霸主。较适合于,规模较小、水平伸缩、数据模式驱动、规范化的关系性数据系统中。
二、CAP原则
时代已经发生了翻天覆地变化,我们需要面对非结构化数据、大数据、非关系型数据结构、分布式计算系统等等。ACID已经显得不够用了,我们需要权衡,有所取舍,所以有了CAP原则。
CAP原则有三个部分组成部分:
- Consistency,一致性,意味着所有的分布式节点在同一时间读取的数据都是相同的。
- Availability,可用性,它是一种保证,意味着每个请求都会收到一个关于他是否成功或失败的响应。
- Partition Tolerance,分区容错性,意味着系统可以在分布式部分节点系统故障、网络通讯故障等情况下继续提供服务。
在分布式系统正常运行情况下,以上三个功能都提供。一旦发生故障,分区容错性必须保证,一致性或可用性只能二选一,这是一种利弊权衡。
三、BASE原则
BASE 是 B
asically A
vailable(基本可用)、S
oft state(软状态)和 E
ventually consistent(最终一致性)三个短语的简写。BASE原则是 CAP 定理对于一致性与可用性权衡的结果。
BASE 理论的核心思想是:即使无法做到强一致性,但每个系统都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性。
- Basically Available,基本可用,是指分布式系统在出现不可预知故障的时候,允许损失部分可用性。比如损失响应时间、服务降级。
- Soft state,软状态,是指允许系统数据存在的中间状态,并认为该中间状态的存在不会影响系统的整体可用性,即允许系统主机间进行数据同步的过程存在一定延时。
- Eventually consistent,最终一致性,强调的是系统中所有的数据副本,在经过一段时间的同步后,最终能够达到一个一致的状态。最终一致性包括因果一致性、读己之所写、会话一致性、单调读一致性、单调写一致性。
总的来说,CAP
、BASE
原则是对ACID
的一种权衡的选择,针对系统的复杂性增强,计算成本增加,我们要保持高效地与客户互动。在必要的可用性和分区容忍度下,降低各项成本,但同时也能让系统运行良好,使客户满意,何乐而不为?