架构作业 -- CAP 原理
请简述 CAP 原理:
CAP原理
C:Consistency 一致性:所有节点在同一时刻的数据是相同的,即更新操作执行结束并相应用户完成后,所有节点存储的数据会保持相同;
A:Availability 可用性:系统提供的服务一直处于可用状态,对于用户的请求即时相应;
P: Partition Tolerance 分区容忍性: 在分布式系统遇到网络分区情况下(网络故障或者延时),不同节点分布在不同的子网络中,各子网络内网络正常;
在分布式环境下,网络故障和网络延迟是一定会发生的,在分布式系统要满足分区容忍性的前提下,可用性和一致性的无法同时满足,所以分布式系统就是两者进行取舍的过程;
CP弃A:在金融体系,涉及到资金交易相关时,数据的一致性至关重要(所以看到很多银行的APP通常响应时间比较慢,这是因为就是在保障数据的强一致性,牺牲一些用户的可用性的体验感)。【金融体系数据的绝对正确,这是红线;选择C】。典型的系统有:Redis、Hbase、Zookerper等
AP弃C:其他的大多数场景下,基本可以选择AP而牺牲C,因为很多情况下不需要太强的数据一致性,只要满足最终一致性即可;常见的系统有:CoachDB、Eureka、Cassandra等;
最终一致性:不要求集群节点的数据每时每刻保持一致,在可接受的时间内最终达到一致即可; 这时等于在某时刻节点不一致的状态,这就引申BASE原理;
Base原理
BA :Basically Available 基本可用 ,分布式系统出现故障时,保证核心可用,允许损失部分可用性;
S:Soft 软状态 数据存在中间状态,并认为中间状态不会影响系统整体可用性;(数据同步的延时)
E:Eventually consistent 最终一致性 数据的多个数据副本,在一段可接受的时间内,最终能达到一致的状态;
评论