Zookeeper
2020-08-17 15:20:02 0 举报
zookeeper
作者其他创作
大纲/内容
reConnect
LEADING
ZKDatabase
loadDataBase();
ServerCnxnFactory
createFactory();
queuePacket
分布式锁基于临时节点和watcher机制
②返回读结果
Client
.......
①get path等读操作
messageReceived
命令解析等等都在下面
开始集群
QuorumPeerMain.main(配置文件)
Follower、Observer两个角色统称为Learner
⑤inform消息
start();
通过环境变量决定通讯框架是NIO还是netty并初始化(默认是NIO)
事件监听回调
zookeeper集群是基于CP的高可用架构
client
FOLLOWING
connectToZK
QuorumPeer
loadDataBase();cnxnFactory.start(); startLeaderElection();super.start();
QuorumPeerMain
initializeAndRun
集群
开始选举
......
ZooKeeper
createdeleteconnect....
把数据加载到路径种
Observer
⑤commit
从快照中把数据加载到内存中
④ack
由于网络问题、服务器故障等引起的会话断开时,客户端会自动连接到其他的服务器,如原会话未超时则保持原会话,如超时则需新建会话
CreateRequest
CnxnChannelHandler
channelClosedchannelConnected...messageReceived...processMessage
MBeanRegistry.getInstance().register
读取并解析配置文件
OBSERVING
runFromConfig
ServerCnxn
processMessage
run
返回写结果
写请求处理过程:(zab协议-消息广播模式)①客户端提交写请求到Learner服务器②Learner服务器会将写请求转发到Leader服务器③leader生成全局唯一事务id(zxid)并广播写请求(proposal)给Followers④Follower会回复ack确认消息⑤当leader收到半数以上的ack消息时会向Followers发commit消息,同时向observer发包含写内容的inform消息
QuorumPeerConfig
①set path data、delete path等写操作
ZooKeeper
ZooKeeperServer
class CnxnChannelHandler extends SimpleChannelHandler
设置协议jute
❌
ZooKeeperServerMain
DatadirCleanupManager
Leader
基于TCP长连接的会话
NIO框架
startLeaderElection
switch (getPeerState()
QuorumBean(仲裁)
processCmd
(zookeeper atomic broadcast)zab协议保证服务器间的事务提交顺序一致且不会跳过任何事务的执行;包含恢复和消息广播两种模式
start
创建选举算法
executeLine(line);
ZooDefs
ClientCnxn.start
表示TCP长连接
③广播写请求
snapLog.restore
createElectionAlgorithm
SendThread
run()
zookeeper
数据清理器:定时清理快照数据就是配置文件中autopurge.snapRetainCount=3
config.parse;
NettyServerCnxn
LOOKING
单机
操作类型
ZooKeeperMain
session
FastLeaderElection
Follower
EventThread
System.getProperty()configure()
发送命令
ZooKeeperMain
②转发写请求
从新switch
DataTree
客户端与zk服务器会通过长连接保持一个会话,会话用于保证请求的顺序、添加监视点、接收事件通知等
0 条评论
下一页