zooKeeper基础
集群最少几台机器?集群规则是怎么样?集群中一个节点宕机,这个时候zookeeper还可以使用吗?
集群规则为2N+1台,N>0 即至少3台,可以继续使用,单数服务器只要没超过一半的服务器宕机就可以继续使用
部署方式分为单机/集群模式
角色:leader/follower
集群最少需要的机器数:3
选举机制
1 半数机制:集群中半数以上机器存活,集群可用,所以Zookeeper适合安装奇数台服务器
2 zookeeper虽然在配置文件中并没有指定master和slave,但是,Zookeeper工作时,是有一个节点为leader,其他则为follower,Leader是通过内部的选举机制临时产生的
3 以一个简单的例子来说明整个选举的过程
假设有五台服务器组成的zookeeper集群,他们的id从1-5,同时他们都是最新启动的,也就是没有历史数据,在存放数据量这一点上,都是一样的,假设这些服务器依顺序启动,来看看会发生什么
1.服务器1启动,此时只有它一台服务器启动了,它发出去的报文没有任何响应,所以它的选举状态一直是looking状态
2.服务器2启动,它与最开始启动的服务器1进行通信,互相交换自己的选举结果,由于两者都没有历史数据,所以id值较大的服务器2胜出,但是由于没有达到超贵半数以上的服务器同意选举它,所以服务器1,2还是继续保持looking状态
3.服务器3启动,根据前面的理论分析,服务器3成为服务器1,2,3中的老大,而与上面不同的是,此时三台服务器选举了它,所以它成为了这次选举的leader
4.服务器4启动,根据前面的理论分析,理论上服务器4欧盟改革送服务器1,2,3,4中的老大,但是由于前面已经有半数以上的服务器选举了服务器3,所以它只能接受当小弟的命了
5.服务器5启动同服务器4一样
监听器原理
一个zk的节点可以被监控,包括这个目录中存储的数据的修改,子节点目录的变化,一旦变化可以通知监护的客户端,这个功能是zookeeper对于应用最重要的特性,通过这个特性可以实现的功能包括配置的集中管理,集群管理,分布式锁等.
watc机制的官方说明:一个Watch事件是一个一次性的触发器,当被设置了Watch的数据发生了改变的时候,则服务器将这个改变发送给设置 了Watch的客户端,以便通知他们