03.分布式基础理论
约 1172 字大约 4 分钟...
CAP定理:(主要应用于分布式系统)
定义:
- C
一致性
(Consistency):每次读取要么获得最近写入的数据,要么获得一个错误 - A
可用性
(Availability):每次请求都能获得一个(非错误)响应,但不保证返回的是最新写入的数据 - P
分区容忍
(Partition tolerance):在网络分区的情况下,系统仍继续运行。即使存在网络延迟等分区带来的问题。
CAP的目标和核心:
- 在分布式系统中,尤其是在网络分区发生时,不能同时保证一致性、可用性和分区容忍性。只能选择其中的两个特性进行优化。
CAP常见组合:
CA
:关注一致性和可用性(单体应用系统)- 它需要
非常严格的全体一致的协议
,比如“两阶段提交”(2PC)。 - CA系统
不能容忍网络错误或节点错误
。一旦出现这样的问题,整个系统就会拒绝写请求,因为它并不知道对面的那个结点是否挂掉了,还是只是网络问题。唯一安全的做法就是把自己变成只读的。 - 举例:MySQL、单数据中心的应用系统
- 它需要
CP
:关注一致性和分区容忍性(分布式协调系统)- 它关注的是系统里大多数人的一致性协议,比如:Paxos算法(Quorum类的算法)。
- 这样的系统只需要
保证大多数结点数据一致
,而少数的结点会在没有同步到最新版本的数据时变成不可用的状态。从而提供一部分的可用性。 - 举例:HBase、Zookeeper
AP
:关注可用性和分区容忍性 (最终一致性系统)- 这样的系统不能达成一致性,会尽量响应请求,即使数据不一致。
- 这样的系统需要维护数据版本,通过版本比较,给出数据冲突。
- 举例:DNS、Dynamo
补充:
- CAP定理中的一致性与ACID数据库事务中的一致性截然不同
- CAP关注的粒度是
分布式系统的数据
,ACID关注的是事务
- CAP是忽略网络延迟的???
ACID属性:(主要应用于传统的单机数据库、事务)
目标和核心:
- 是数据库管理系统为了保证事务的正确性而提出来的一个理论
四个约束:
A
原子性
(Atomicity):- 一个事务中的所有操作,要么全部完成,要么全部不完成,不会在中间某个环节结束。事务在执行过程中发生错误,会被回滚到事务开始前的状态,就像这个事务从来没有执行过一样。
C
一致性
(Consistency):- 在事务开始之前和事务结束以后,数据库的完整性没有被破坏
I
隔离性
(Isolation):- 数据库允许多个并发事务同时对数据进行读写和修改的能力。隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)
D
持久化
(Durability):- 事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。
与CAP对比:
- ACID中的A(Atomicity)和CAP中的A(Availability)意义完全不同
- ACID中的C和CAP中的C名称虽然都是一致性,但含义也完全不一样。ACID中的C是指数据库的数据完整性,而CAP中的C是指分布式节点中的数据一致性。
- ACID的应用场景是
数据库事务
,CAP关注的是分布式系统数据读写
BASE理论:(对ACID属性的一种放松)
定义:
- BASE理论是对ACID属性的一种放松,选择最终一致性;适用于大规模分布式系统。
属性:
- BA
基本可用
(Basically Available):- 系统在出现故障时,仍能够基本可用
- S
软状态
(Soft State):- 系统状态可以在不同节点之间不同步
- E
最终一致性
(Eventual Consistency):- 系统中的数据最终会达到一致
目标和核心:
- BASE理论强调在大规模分布式系统中,*** 通过牺牲强一致性,来换取系统的高可用性和分区容忍性***。(AP系统)