zookeeper为何称之为CP系统
首先我们知道zookeeper是一个cp系统,那么zookeeper就无法保证高可用了么,不是说zookeeper也有对应的高可用方案么。答:是的,zookeeper确实是有高可用方案的,但是高可用方案中有很多种:按照数量来说
两台机器:
主从复制主备复制主主复制主从切换主备切换
两台以上机器:
集中式集群
一主多备一主多从
分散式集群
数据分片到多节点
而其中zookeeper采用的是集中式集群中的一主多从方案,为的是提升性能和可用性,但是有人就问了,这个不是高可用么,为什么不是AP系统呢。我这里举个场景:有3个节点的zookeeper集群(节点分别为:1、2、3),其中一个业务配置了其中一个节点3,假设节点3跟另外两个节点网络断开,也就是出现了脑裂,那么这个时候节点3还能对外提供服务么?不能,因为zookeeper为了防止脑裂问题,做了限制,就导致节点3是无法再对外提供服务,即使业务节点和3节点之间的网络是OK的也不行。但是整个zookeeper集群的其他节点对外仍然是可用的,但是这个不行,那么这个就叫不可用。因而就不能满足AP。