一个动物管理员的故事。 在集群的管理中,zookeeper主要负责分布式应用程序的协调的工作。
阿里的dubbo中使用了zookeeper来作为其命名服务,维护全局的服务地址列表。 在leader统一命名的管理下,集群中的数据读写的方式:
1.1.写数据,一个客户端进行写数据请求时,会指定Zookeeper集群节点,如果是Follower接收到写请求,会把请求转发给Leader,Leader通过内部的Zab协议进行原子广播,直到所有Zookeeper节点都成功写了数据,然后Zookeeper会给Client发回写完响应。1.2.读数据,因为集群中Zookeeper按照统一的命名空间,所有Zookeeper节点呈现相同的命名空间视图(文件目录名称结构),所以读数据的时候请求任意一台Zookeeper节点都一样。 配置管理 将人工维护的每台机器都一样的配置环境一样的东西交给zookeeper来维护。如图所示,将配置信息保存在Zookeeper(Leader节点)的某一个目录中,然后将所有需要修改的应用机器订阅该Zookeeper(Leader节点)节点,一旦Leader节点发布新配置信息,每台订阅的机器就会收到Zookeeper的通知,然后从Zookeeper获取新的配置信息应用到系统中,完成配置的集中统一管理。
集群管理 监控集群和leader选举。 看不懂了。ZooKeeper的基本运转流程: 1、选举Leader。 2、同步数据。 3、选举Leader过程中算法有很多,但要达到的选举标准是一致的。 4、Leader要具有最高的执行ID,类似root权限。 5、集群中大多数的机器得到响应并接受选出的Leader。
我个人觉得zookeeper在hadoop中的作用就是为了防止夯机,所以实时监管了一个NN。