Zookeeper是一个分布式应用程序协调服务
1.命名服务(比如服务部署在5台服务器上,有5个不同的ip,此时有个B服务需要调用A的接口,如果提供某一台服务器的ip,则存在该服务器宕机接口不可用的情况,此时,可以使用zookeeper作为注册中心,A服务的5台服务器在znode下创建子节点,B服务通过指定znode的路径可以获取到A服务中的ip信息。同时zookeeper动态维护这部分节点,定时利用心跳请求检查服务的服务器状态,一旦发现某服务器无反馈,就删除节点,防止接口被B服务调用)
2.配置管理
3.集群管理(zookeeper监控节点的状态,每个节点都要在zookeeper上创建一个临时节点,通过心跳保持连接,如果这个节点宕掉了,这个心跳会消失,临时节点也会消失,客户端可以在节点上注册监听机制,如果临时节点消失客户端就会感知到)
4.master选举
5.分布式锁(比如有两个客户端要抢zk上的一把分布式锁,假设客户端A先对zk发起加锁请求,那么客户端A会在"my_lock"这个锁节点下创建一个临时顺序节点,假设编号为001,然后客户端A判断自己的节点编号是不是最小,如果是则加锁成功,然后客户端B想要加锁,一样的创建一个临时顺序节点,假设编号为002,然后客户端判断自己的编号是不是最小,显然不是,那就加锁失败,之后客户端B就会对它的上一个顺序节点建立监听,如果A释放锁了就会删除自己的临时顺序节点,然后B再次判断自己的节点编号是不是最小,如果是则加锁成功)