我们的 ZooKeeper 是怎样做到这些点的,在实际项目开发中,我们应该如何使用 ZooKeeper ?要想了解这些问题,我们先要对 ZooKeeper 的数据模型有一定了解和掌握。
数据模型对于 Zookeeper 来说尤为重要,很多典型的使用场景都使用这点基础模块,比如说我们可以利用 Zookeeper 数据模型中的临时节点和 Watch 监控机制来实现一个发布订阅的功能。
数据模型
计算机最本质的作用就是用来处理和存储数据的,Zookeeper 作为一款分布式一致性解决框架,也不例外。 其实 Zookeeper 中的数据模型是用来处理和存储数据的一种逻辑结构,与我们使用的 MySQL 数据库一样,在一个系统中,要想处理我们的复杂业务,是不是要知道如何向我们的 MySQL 数据库中新增数据。而我们的 Zookeeper 数据模型要做的事情,就是像我们的 MySQL 数据库一样,这也是 Zookeeper 最根本的功能。
对 Zookeeper 中的数据模型是什么,我们已经知道。但是 Zookeeper 数据模型这个比较抽象。
ZooKeeper 数据模型的结构与我们的 Unix 文件系统很类似,就是现在大家看到下面的这张图,整体上可以看作是一棵树,在这棵树上,它其实有很多的这个节点,每个节点称做一个ZNode。每个Znode可以类似看作是一个目录,其下可以创建子目录。
在每一个节点或者说 znode上,它都可以通过一个路径进行一个唯一标识,你可以看到每一个节点上其实都有一个对应的路径。那么这样的好处就是我们现在可以快速的、清晰的定位到每一个 znode 节点。