注意:首先需要明确zookeeper选举的规则:leader选举,要求 可用节点数量 > 总节点数量/2 。注意 是 > , 不是 ≥。
Zk集群节点总数为什么要是为奇数
1.加入Zookeeper的集群节点为5的话,宕机几个Zookeeper节点之后剩余的节点个数大于宕机个数;也就是必须大于剩下服务器个数n(集群节点总数)/2,Zookeeper才可以继续使用
2.无论是奇数还是偶数个数可以做选举leader的,如果是5台集群节点也就是最多只可以允许两台zk宕机;如果是六台zk集群节点那么也是最多只能宕机2台,如果宕机3台的话zk无法可能。
3.所以占用服务器空间利用成本角度考虑,建议zk集群节点一定是为奇数。
网络通讯
因为在分布式系统中,服务之间可能会设计通讯、可能因为某种原因 比如停电了、光纤被挖断导致网络不可用;
网络分区(脑裂)
在集群的情况下,一般只会选举一个master节点、其他都是为从节点,那么如果发生了网络抖动或者部分节点相互无法通讯那么就会导致部分节点从新选举,这样就会存在多个master节点;
CAP概念
① C:Consistency 在分布式系统中的所有数据备份,在同一时刻是否同样的值。等同于所有节点访问同一份最新的数据副本
② A:Availability,在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求
③ P:Partition tolerance 在分布式系统中网络分区存在脑裂问题以后,部分server与集群其他节点失去联系 无法组成一个群体; 该问题一定是存在的~~~
目前我们当前技术环境下,不能同时满足CA,但是可以满足CP或者AP