什么是zk?
zookeeper是一个分布式协调工具,这就是笔者回答“zookeeper是什么?”这个问题的答案。
分布式锁、分布式ID、分布式配置中心、分布式服务注册与发现、分布式高可用(HA)
这些问题都可以借助zk来解决
注意:不是zk有这样那样的功能,而且基于zk的机制,上述这些问题都可以借助zk来进一步扩展来实现。
所以zk是一个工具。是一个什么工具?是一个协调处理各种分布式问题的工具。
zk服务器的4种状态
- LOOKING:寻找Leader 状态。当服务器处于该状态时,它会认为当前集群中没有Leader, 因此需要进入Leader 选举状态。
- FOLLOWING:跟随者状态。表明当前服务器角色是Follower.
- EADING:领导者状态。表明当前服务器角色是Leader.
- OBSERVING:观察者状态。表明当前服务器角色是Observer
什么是znode?
公式:znode = path + nodeValue + Stat
什么是stat?
zk的节点类型(6种)
3.5新增了2种节点,各种视频或博客如果还说4种的,要注意,说的是老版本的zk了。
持久化节点:不delete就一直存在
临时节点:session超时,被服务器删除(命令加 -e)
持久化顺序节点:持久化节点基础上,自带顺序(命令加 -s)
临时顺序节点:临时节点基础上,自带顺序(命令加 -s -e)
容器节点:当没有子节点时,未来会被服务器删除(命令加 -c)
TTL节点:超过TTL指定时间,被服务器删除
临时节点说明
server接收client的命令就会更新timeout。
但是如果client真就没命令执行了怎么办?
如图,client会发送ping为了保活,timeout也会更新。
问题1:client创建一个临时节点a,马上断开,再连上,这个节点a还存在么?
还能存在一小小会儿,然后节点a就没了。
看图,临时节点的删除不是说client断开马上就删除,而是要等timeout。
你虽然断开马上再连接,但是sessionID不一样了。