CAP理论
分布式系统涉及读写操作时,一致性,可用性,分区容忍性三个要素只能保证两个,另外一个必须被牺牲
- C:一致性,强一致性,对于客户端来说同一时刻能看到相同的数据
- A:可用性,非故障的节点在合理的时间内返回合理的响应(不是错误和超时的响应)
- P:分区容忍性,当出现网络分区后,系统能够继续履行职责
CAP理论对于一个分布式计算系统,不可能同时满足cap三个设计约束。或一个分布式系统,当涉及读写时,只能保证cap中的两个,另一个必须被牺牲。
- 选择P,网络无法做到100%可靠,有可能出故障,所以分区是一个必然想象。
- CP:两个节点,一个N1新增数据,N2与N1通道中断,无法同步数据,此时访问N2需要反馈错误,这是违背了A
- AP:N1更新数据成Y,N2与N1通道中断,N2仍是老数据,此时违背C
分布式系统理论上不可能选择CA,只能选择CP或AP
注意
- 1、CAP关注的力度是数据,而不是整个系统,可以每个查询都不一样
如用户管理系统:用户账号数据选择cp,用户信息数据选择ap - 2、CAP是忽略网络延迟的
- 3、正常运行情况下,不存在CP和AP的选择,可以同时满足CA
- 4、放弃不等于什么都不做,需要为分区恢复后做准备
如分区期间记录日志,当分区故障解决后,根据日志进行数据恢复,重新达到CA
ACID
- A:原子性,要么全部完成,要么全部不完成。
- C:一致性,事物开始前和结束后,数据库的完整性没有被破坏。
- I:隔离性,事物之间是隔离的。
- D:持久性,修改后数据永久存在。
BASE:AP的延伸
- BA:基本可用,Basically Available
分布式系统出现故障,允许损失部分可用性,即保证核心可用
如登录时核心,注册时非核心 - S:软状态,Soft state,系统的中间状态,而中间状态不会影响系统整体可用性,就是CAP理论中的不一致性
- E:最终一致性,Eventual Consistency
总结
ACID是数据库事物完整性的理论
CAP是分布式系统设计理论
BASE是CAP理论中AP方案的延伸