zookeeper
2023-03-20 22:07:25 7 举报
a
作者其他创作
大纲/内容
只允许myid大的连接小的,避免重复连接
isReadable
run方法,追加事务日志
QuornmPeer.start()
放
增删改查
start
创建一个管理器Manager--qcm
取
获取vote
启动recvWorker
反序列化
将选票包装成Notification放到queue中
SyncRequestProcessor
zk 思维导图单机启动流程 : https://www.processon.com/view/link/630529371efad40752c48716?pw=Jackclient建立连接,创建node流程: https://www.processon.com/view/link/63052994f346fb0714ba0433?pw=Jack查询数据,添加监听和回调: https://www.processon.com/view/link/630891fc1efad40752cbfbd3?pw=Jack集群源码:https://www.processon.com/view/link/6308b3d5e0b34d072661cccb?pw=Jackdata数据同步:https://www.processon.com/view/link/630f282ff346fb0714cc42f1?pw=Jackzab协议:https://www.processon.com/view/link/631398b0e401fd5080c4328a?pw=Jack
sendThread.start()
case: notification
eventQueue
1.移除watch2.给客户端发送个notification
FinalRequestProcessor
isWriteable
创建recvWorker
包装Request
for循环向所有节点发送选票
队列
FastLeaderElection#start()
优先选择zxid大的。zxid一样选择myid大的。
new Zookeeper()
链式调用
执行方法
发送选票到sendQueue中
使用选举算法进行选举
发送选票
结果返回true
offer
SendWorker#run()
myid和传过来的sid比较
case Looking
读操作:从dataTree上面读node如果getNode()包含watch,server端还会维护节点和watch关系。
起个线程
sid和myid不一样,说明要通过网络发送
读配置
放-写操作
创建netty连接工厂
准备leader选举startLeaderElection()
集群启动
客户端启动
acceptConnections()
取出来执行
while(running)
RequestProcessor
PrepRequestProcessor
将vote信息封装成Notification
WorkerSender开启线程发送vote
实例化QuoraPeer
设置选举类型type为3设置myid
socket发送过去
sendQueue
eventThread.start()
runFromConfig
quornmPeer.start()
监听端口数据,直到有数据进来,否则一直accept阻塞在这里
唤醒通知处理
processEvent,从事先维护好的列表中取出回调,调用回调方法。服务端不需要知道你是具体回调的过程
workerReceiver开启线程接收vote
recvQueue<Notification>
netty监听2181
如果当前机器状态为looking
单机zkServer启动
start()
super.start()线程启动
启动server监听程序:netty/jetty
服务端发送watch通知
font color=\"#323232\
满足条件myid<sid
处理数据
获取选举端口端口
更新下次要推荐的leader和zxid
如果sid==myid,给自己投一票
nio建立服务端和客户端连接
解析配置
recvQueue
不断从queue中获取数据,通过网络发送出去
SendThread.run()
loadDataBase()
qcm创建监听器listerner
receiveConnection()
创建sendWorker
取event
从recvQueue中获取选票
packet
case 3
启动jetty,查看运维信息8080
自己投给自己
listerner.start()
初始化五个节点,并加载已经含有的节点到dataTree上面
写操作:写到内存DataTree上,后触发回调watch
服务端返回操作结果
epoch每次新一轮选举+1
0 条评论
回复 删除
下一页