Zookeeper集群中服务器之间是如何通信的
Follower与leader之间的通信主要是因为Follower接收到像(create, delete, setData, setACL, createSession, closeSession, sync)这样一些需要让leader来协调最终结果的命令,将会导致Follower与leader之间产生通信。由于leader与Follower之间的关系式一对多的关系,非常适合client/server模式,因此他们之间是采用c/s模式,由leader创建一个socket server,监听各Follower的协调请求。
Zookeeper集群如何工作
https://blog.csdn.net/WYpersist/article/details/80189732
Zookeeper选举机制
https://blog.csdn.net/WYpersist/article/details/80189709
Leader服务器是整个zookeeper集群工作的核心,负责进行选举投票的发起和决议,更新系统状态。
Follower服务器是zookeeper集群状态的跟随者,用于接收客户端的请求并向客户端返回结果,在选举过程中参与投票。
1.每个Sever服务器启动以后都会询问其他的Sever服务器要投票给谁
2.对于其他服务器的询问,服务器每次都会根据自己的状态恢复自己推荐的Leader的id和上一次处理事务的zxid,但是系统启动的时候每个服务器都会推荐自己的
3.自己服务器收到其他所有的服务器回复以后,就计算出zxid最大的那个服务器,并将这个服务器相关信息设置成下一次要投票的Sever
4.计算的过程中获得的票数最多,且票数要过半数的服务器就选为Leader,否则要一直继续这个选举的过程,知道Leader被选举出来
5.选出的Leader开始等待其他服务器Follower的连接
6.Follower连接Leader将最大的zxid发送给Leader
7.Leader根据Follwer的zxid来确定同步点,,完成同步后通知Follower已经成为update(现时)状态
8.Follower收到update消息后,就可以接受Client的请求服务了。
zookeeper-端口说明、作用
Zookeeper不同节点之间同步和通信的端口:选举端口(选举leader)
一、zookeeper有三个端口(可以修改)
1、2181
2、3888
3、2888
二、3个端口的作用
1、2181:对cline端提供服务
2、3888:选举leader使用
3、2888:集群内机器通讯使用(Leader监听此端口)
三、部署时注意
1、单机单实例,只要端口不被占用即可
2、单机伪集群(单机,部署多个实例),三个端口必须修改为组组不一样
如:myid1 : 2181,3888,2888
myid2 : 2182,3788,2788
myid3 : 2183,3688,2688
3、集群(一台机器部署一个实例)
四、集群为大于等于3个基数,如 3、5、7....,不宜太多,集群机器多了选举和数据同步耗时时长长,不稳定。目前觉得,三台选举+N台observe很不错。