0
点赞
收藏
分享

微信扫一扫

Zookeeper特性

一、长连接:zk集群启动后,分配好角色。客户端就会跟zk建立链接,TCP长连接。可以通过心跳感知会话是否存在。

二、数据模型

核心数据模型就是Znode树,我们写入的数据就是创建出树形结构的znode。

节点类型:持久节点、临时节点

持久节点:客户端断开,节点仍然存在。可做元数据的存储

临时节点:客户端断开,节点就不存在。可做分布式锁。curator框架实现分布式锁就是采用的临时顺序节点。加锁的时候,创建一个临时顺序节点。zk自动给创建的临时节点加上一个后缀,全局递增的编号,如果客户端断开,临时节点消失,其他客户端就会感知到,进而尝试去加锁。

三、watcher监听回调

当客户端对znode进行监听,如果znode发生变更,zk会回调通知当前客户端。

四、数据同步

zk通过ZAB协议(ZooKeeper Atomic Broadcast)zk原子广播协议,进行数据一致性同步。

主从同步机制:根据集群划分Leader和Follower两种角色

Leader:可以接受读、写操作,收到事务请求,转换为事务Proposal(提议)同步给所以的Follower,超过半数的Follower接受到事务Proposal,Leader再给所有的Follower发送Commit消息,让所有的Follower提交一个事务。

Follower:接受读操作,接受Leader发送的事务Proposal和Commit。

ZK集群启动时,集群进入恢复模式,选举出Leader,然后Leader会和Follower进行数据同步,过半的的Follower完成数据同步后,就会退出恢复模式。集群就可以对外提供服务了。







举报

相关推荐

0 条评论