CAP理论
在一个分布式计算系统中,不可能同时满足以下三点:
C 一致性:每个节点读写数据时,保证各个节点上的数据是一致的。
P分区容错性:当系统中的节点故障时,系统就不再联通,系统会被划分为两个分区,而分区容错性则是保证每个分区都可以对外提供服务。
A可用性:即便是服务中的某个节点挂掉了,服务也是可用的,但是响应的内容可能不是最新的数据。
在分布式架构中,最多保证其中两项:
CP: 不要求可用性,只要求一致性,在客户端修改节点中的数据时,需要暂时阻塞客户端的其他请求,直到将数据同步到其他的节点上为止,如果不阻塞的话,客户端的请求可能会再次修改节点中的数据。在阻塞的过程中,服务是不可用的,这就是为什么不能保证可用性的原因。
AP:不要求一致性,客户端请求修改数据后,立即将响应返回,同步过程则是以异步的方式进行,如果同步失败则没办法保证数据一致性。
CA: 在分布式系统中不常用,如果不满足P分区容错性的话,会导致某一节点挂到,整个系统都挂掉,所以一般在单体系统中常用些。
Base理论
BA:基本可用,在出现故障,允许丢失部分可用性,比如在双十一购物时,为了保证系统的稳定性,可以将部分用户引导至一个降级页面中。
S: 软状态:允许有中间状态,且中间状态不会影响系统的可用性。
E: 最终一致性:允许系统中的节点可以经过一定时间达到一致性。
强一致性:系统中的某一节点发生了修改,其他节点同步完成才能对外提供服务。
弱一致性:数据修改后,可以容忍某些节点访问不到,最终一致性就是弱一致性。
顺序一致性:读取数据时读到的数据是上次修改的数据。
Zookeeper
一致性
zookeeper写是最终强一致性,只要大多数节点写成功就表示成功,但是读是顺序一致性的,在写的过程中有些节点因为网络延迟或系统原因没有写入数据,这时候客户端是读取不到最新数据的,所有只能保证顺序一致性。
标签:可用性,Zookeeper,系统,特性,一致性,数据,节点,客户端 From: https://www.cnblogs.com/lyraHeartstrings/p/17135987.html