分布式
约 496 字大约 2 分钟
CAP定理?为什么不可兼得?模型和应用√BASE理论
分布式系统中, CAP三者不可兼得
一致性Consistency:所有节点在同一时间对同一份数据的访问结果是相同的
可用性Availability:每个请求不管成功或者失败都有响应
分区容忍性Partition tolerance:系统在出现网络分区(网络中某些节点间无法通信)情况下仍能继续运行
网络分区不可避免,如硬件故障、网络延迟或链路中断
保证一致性。则可用性保证不了,因为要拒绝一些请求等到所有节点数据一致
保证可用性。则一致性保证不了,因为所有节点数据达到一致要时间
CA(单机):放弃分区容错性,集群数据库、xFS文件系统
AP:在网络分区发生时,可能会暂时牺牲一致性,允许数据延迟同步或最终一致性。=>Web缓存、DNS、GOSSIP、MySQL主从异步复制、Redis
CP:在网络分区发生时,可能会牺牲部分可用性,拒绝某些请求。=>分布式数据库、分布式锁、paxo、raft、zab.MySQL主从半同步复制
采用XA协议的强一致规范以及柔性事务的最终一致规范。
对AP的扩展,业务系统牺牲一致性来换取系统的可用性和分区容错性。BASE是下面三个短语的缩写
Basically Available基本可用:系统在发生故障时,允许降级服务以保持核心功能的可用性
Soft State软状态:允许系统中存在不影响系统可用性的中间状态
Eventually Consistent最终一致:指经过一段时间后,所有节点数据都将会达到一致。取决于网络延时、系统负载、数据复制方案设计等因素