ZooKeepr, 其官网对它的描述为:A Distributed Coordination Service for Distributed Applications。 译为,为分布式应用提供分布式的协调服务,在我的理解里,就是协调和管理分布式服务。
这里的核心概念是Coordination,协调。在实际的生产环境中,大型的系统往往有很多服务器构成一个个服务模块来组成一个完整的系统,这些服务器之间需要协调来共同工作,这里就是ZK发挥其作用的地方。ZK通过提供一个类似文件系统的树结构来完成协调服务。客户端可以通过对树结构中节点数据的查询、修改、监听来协调合作。
有几个概念要区分:
ZK服务器,ZK是独立的服务,运行在独立的服务器上,这里的ZK服务器指的是提供ZK服务(维护树结构)的服务器,而特性中说的“超过一半的服务器正常就可以工作”,也是指的ZK服务器,要注意与生产环境中的其他服务器区分开来。
ZK客户端,这个客户端就是指使用ZK服务的客户端,这个客户端有可能是生产环境中的服务器,也可能是中间件,也要注意区分这个概念。
Persistent Node、Ephemeral Node, 持久节点和临时节点,两个节点都是ZK树上的节点,区别在于临时节点会在ZK检查到创建它的Client断开后自动删除这个节点,而持久节点不会。
ZK中树形的数据结构如下,
[img]http://dl2.iteye.com/upload/attachment/0085/2595/4b82b8b9-fcb9-3c5a-87ba-3d9353f4a6f8.png[/img]
通过这个数据结构,可以在很多分布式的应用场景中发挥作用。
这里的核心概念是Coordination,协调。在实际的生产环境中,大型的系统往往有很多服务器构成一个个服务模块来组成一个完整的系统,这些服务器之间需要协调来共同工作,这里就是ZK发挥其作用的地方。ZK通过提供一个类似文件系统的树结构来完成协调服务。客户端可以通过对树结构中节点数据的查询、修改、监听来协调合作。
有几个概念要区分:
ZK服务器,ZK是独立的服务,运行在独立的服务器上,这里的ZK服务器指的是提供ZK服务(维护树结构)的服务器,而特性中说的“超过一半的服务器正常就可以工作”,也是指的ZK服务器,要注意与生产环境中的其他服务器区分开来。
ZK客户端,这个客户端就是指使用ZK服务的客户端,这个客户端有可能是生产环境中的服务器,也可能是中间件,也要注意区分这个概念。
Persistent Node、Ephemeral Node, 持久节点和临时节点,两个节点都是ZK树上的节点,区别在于临时节点会在ZK检查到创建它的Client断开后自动删除这个节点,而持久节点不会。
ZK中树形的数据结构如下,
[img]http://dl2.iteye.com/upload/attachment/0085/2595/4b82b8b9-fcb9-3c5a-87ba-3d9353f4a6f8.png[/img]
通过这个数据结构,可以在很多分布式的应用场景中发挥作用。