ZK集群
1.zk集群节点可见
通过配置文件达到节点间相互可见
2.为什么集群设置奇数个节点
1.奇数节省资源:zk容错,zk节点剩下的个数必须要大于挂掉的节点(大于n/2),整个集群才可用。5节点容错2个,6节点容错2个
2.奇数节点集群可用性更高,2n,2n+1容错都是n-1,奇数个挂掉n-1个节点的概率小一点
3.可用性高,网络通信导致失联,裂出的节点使集群可用的概率更高,5节点失联3节点,失联的3节点可以选出leader集群可用,6节点失联3节点,两个集群都不可用
3.集群只有一个leader
如果节点挂了,且剩余节点在配置文件所有节点中的个数还是过半的,就会进行重新选举leader
Kafka集群
1.Kafka集群节点可见
依赖zk集群实现节点间相互可见,Kafka集群节点通过zk维护,Kafka的topic的offset由Kafka自己内部生成一个特定的topic维护
2.集群节点不要求奇数或者偶数,看资源设置---->Kafka的精髓在于其分区特性
3.集群只有一个controller
如果节点挂了,zk会帮助Kafka重新选举controller
ES集群
1.ES集群节点可见
2.角色分离,master候选节点n个,discovery.zen.minimum_master_nodes: n/2 + 1
达到minimum_master_nodes节点认为master挂了才开始选举
并且集群节点数大于等于minimum_master_nodes,才能进行选举主节点(防止脑裂)
数据节点---不参与选举---指定主节点
3.集群只有一个master,可以设置多个master候选节点用来做高可用---选举
redis集群
1.redis集群节点可见
2.不要求整个候选主节点的个数为奇数个,最多为16384个节点(16384个hash槽)
3.集群只有一个master