Zookeeper 作为一款强大的分布式协调系统, 可以帮助分布式系统完成一些难以实现却又十分重要的功能. Zookeeper 适合以下 3 种应用场景, 如下图所示:
使用场景
统一命名服务
Zookeeper 的命名空间是一个类似于 Linux 文件系统的树形结构, 它的每个 Znode 都拥有唯一的路径标识符. 利用这个特性分布式系统, 可以将 Zookeeper 当作统一命名服务来使用, 类似 Java 中的 JNDI.
心跳感知
利用 Zookeeper 中 Znode 临时节点类型的特性, 可以实现心跳感知的功能. 例如可以在 Zookeeper 上创建一个根目录, 如 / cluster1. 利用 Znode 临时节点类型的特性, 当某个集群服务进程启动的时候, 可以在 / cluster1 上创建代表自己服务的临时节点, 用以表示其会话状态. 由于临时节点是会话绑定的, 所以当节点存在的时候即代表状态正常, 当进程失效的时候, 节点客户端会话也会失效, 这时临时节点也会被删除. 这样, 只要查看临时节点的存活状态便能一览集群状态了.
选举机制
Zookeeper 能够保证当多个客户端同时创建一个相同路径节点的时候, 只会有一个客户端成功. 借用这个机制我们可以实现选举功能. 因为在同一时刻, 有且仅有一个客户端会成功创建节点, 这个创建成功的客户端就是选举的胜者.
来源: http://www.jianshu.com/p/6c3c79c982f6