分布式协调
这是zk一个很经典的用法,举个例子就是,系统A发送了一个请求到mq,等待B系统的处理,那么系统A如何能知道B系统什么时候处理完呢。
那么系统A可以再发送请求之后在zk的某个节点注册监听器,系统B执行完之后去修改这个节点的值,那么系统A就能马上知道该消息已经被处理了。
分布式锁
对于同一条数据,两个主机同时发起修改请求,但是只能一条条执行,这时候就用到了zk的分布式锁。简单来说就是一个机器接收到请求之后先去zk获取分布式锁,创建一个znode,然后才能执行操作,另外一台机器过来也要获取创建那个znode,发现已经被创建了,就要等待前一个主机释放这个znode之后才能获取。
配置信息管理
zk可以用作很多系统配置信息的管理,kafka、strom之类的分布式系统都会用他来做一些元数据,配置信息的管理,再比如dubbo的注册中心也支持zk
HA高可用性
这个也很常见,比如hsdoop、hdfs、yarn等很多大数据系统都选择使用zk来开发高可用机制,意思就是一个重要进程一般会做主备两个,主进程挂掉就立刻通知zk感知,切换到备进程
具体一些就是,主进程会在zk上创建一个节点,当主进程挂掉的时候节点肯定就会消息,这时候zk发现了就会通知备进程:说主进程挂了,你现在赶紧来在我这重新创建节点开始工作,以后你就是主进程。