zookeeper為何稱之為CP系統
首先我們知道zookeeper是一個cp系統,那么zookeeper就無法保證高可用了么,不是說zookeeper也有對應的高可用方案么。答:是的,zookeeper確實是有高可用方案的,但是高可用方案中有很多種:按照數量來說
兩臺機器:
主從復制主備復制主主復制主從切換主備切換
兩臺以上機器:
集中式集群
一主多備一主多從
分散式集群
數據分片到多節點
而其中zookeeper采用的是集中式集群中的一主多從方案,為的是提升性能和可用性,但是有人就問了,這個不是高可用么,為什么不是AP系統呢。我這里舉個場景:有3個節點的zookeeper集群(節點分別為:1、2、3),其中一個業務配置了其中一個節點3,假設節點3跟另外兩個節點網絡斷開,也就是出現了腦裂,那么這個時候節點3還能對外提供服務么?不能,因為zookeeper為了防止腦裂問題,做了限制,就導致節點3是無法再對外提供服務,即使業務節點和3節點之間的網絡是OK的也不行。但是整個zookeeper集群的其他節點對外仍然是可用的,但是這個不行,那么這個就叫不可用。因而就不能滿足AP。