首先先介绍配置文件吧,
conf/zoo.cfg ,zoo是默认名称,当然也可以随便改名,只需在在启动时指定一下就可以了如 bin/zkServer.sh start xxx .
里面最少需要三个参数
tickTime 2000, zookeeper 最小单位是毫秒, 这个时间是心跳检测的时间, session最低的过期时间是两倍tickTime
dataDir /var/zookeeper/data 指定数据文件路径. 里面会存储一些内存数据库的快照,以及更新数据库时的事务控制日志
port 2181 监听的端口,不解释
initLimit 5 , 其他服务器连接到leader的最大时间,5×tickTime , 超过这个时间,则不再接受该服务器
syncLimit 2 是其他服务器与leader 最大可连续不同步的时间, 2*tickTime, 及如果服务器与leader失去连接长达4s则说明服务器掉线了
应用场景;
20台服务器, 1台主服务器,一台备用服务器
主服务器在zookeeper中注册 /zookeeper/master hostName
备用主服务器监控/zookeeper/master ,如果master中的值发生变化就把自己启动为主服务器,并将自己的ip放到/zookeeper/master中
20台服务器在zookeeper中注册 /zookeeper/nodes/node1 ip,还有服务器的状态
有一台web-cgi服务器,监控/zookeeper/master ,发生变化时取得最新的ip保存到本地
web-cgi 接收到搜索请求时,将请求转发到主服务器中,主服务器遍历出各分布式服务器的状态,等状态正常时,然后提供服务后将结果返回.
zookeeper的功能就是维护分布式系统的配置情况