Zookeeper在Elastic-Job中的作用就是任务信息的存储和选举机制。
Elastic-Job依赖Zookeeper完成对执行任务信息的存储(如任务名称、任务参与实例、任务执行策略等)
Elastic-Job依赖Zookeeper实现选举机制,在任务执行实例数量变化时(如启动新的实例或停止实例),会触发选举机制,选举出Leader实例,让这个Leader去执行该任务
Zookeeper是一个分布式一致性协调服务,它是Apache Hadoop下的一个子项目,主要用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。
可以把Zookeeper想象成一个特殊数据库,维护着一个类似文件系统的树形数据结构,Zookeeper的客户端(如Elastic-Job任务执行实例)可以对数据进行读取
每个子目录项如/app1都被称作为zndoe(目录节点),和文件系统一样,我们能够自由增加,删除znode,在znode下增加、删除子znode,唯一的不同在于znode可以存储数据
Zookeeper为什么称为一致性协调服务?因为Zookeeper拥有数据监听通知机制,客户端注册监听它关心的znode,当znode发生变化(数据改变、被删除、子节点增加删除)时,Zookeeper会通知所有客户端。
Zookeeper管理分布式配置项的机制:
假设我们程序分布式的部署在多台机器上,如果想要改变程序的配置文件,需要逐台机器去修改,非常麻烦,现在把配置放到Zookeeper上面,保存在Zookeeper的某个目录节点中,然后所有的相关应用程序作为Zookeeper的客户端对这个目录节点去监听,一旦配置信息发生变化,每个应用程序就会收到Zookeeper的通知,从而获取新的配置信息应用到系统中。