Zookeeper简介、原理和功能?
一.Zookeeper简介
Zookeeper是一个开源的、分布式的应用程序协调服务。它提供的功能包括:命名服务、配置管理、集群管理、分布式锁、负载均衡、分布式队列等。
(1)命令服务。可以简单理解为电话簿。打电话前,先查找这个人名对应的号码。分布式环境下,经常需要对应用/服务进行统一命名,便于识别不同的服务。类似于识别不同的服务。类似于域名与IP之间的对应关系,域名容易记住。Zookeeper通过名称来获取资源或服务的地址、提供者等信息。
(2)配置管理。分布式系统有大量的服务器,比如在搭建Hadoop的HDFS的时候,需要在一台Master主机器上配置好HDFS需要的各种配置文件,然后通过scp命令把这些配置文件复制到其他节点上,这样各个机器拿到的配置信息是一致的,才能成功运行HDFS服务。Zookeeper提供了这样一种服务:一种集中管理配置的方面,我们在这个集中的地方修改了配置,所有对这个配置感兴趣的服务都可以获取变更。这样就省去手动复制配置,还保证了可靠性和一致性。
(3)集群管理。集群管理包含两点:是否有机器退出和加入、选举Master。在分布式集群中,经常会由于各种原因,比如硬件故障、网络问题等,有些新的节点会加入进来,也有老的节点会退出集群。这个时候,集群中有些机器(比如Master节点)需要感知到这种变化,然后根据这种变化做出对应的决策。Zookeeper集群管理就是感知变化,做出对应的策略。
(4)分布式锁。Zookeeper的一致性文件系统使得锁的问题变得容易。锁服务可以分为两类,一类是保持独占;另一类是控制时序。单机程序的各个进程需要对互斥资源进行访问时需要加锁,分布式程序分布在各个主机上的进程对互斥资源进行访问时也需要加锁。
二.Zookeeper的原理
Zookeeper一个常用的使用场景是担任服务生产者和服务消费者的注册中心。服务生产者将自己提供的服务注册到Zookeeper中心,服务消费者在进行服务调用的时候先到Zookeeper中查找服务,获取服务生产者的详细信息之后,再去调用服务生产者的内容与数据.
三.Zookeeper集群总体架构
Zookeeper集群中有4种角色,如表所示:
1)领导者(Leader):领导者负责投票的发起和决议,更新系统状态;
2)跟踪者(Followe): 接受客户端请求并返回结果,在选举阶段参与投票;
3)观察者(Observer): 接受客户端连接,将写请求转发给Leader,不参与选举阶段
4)客户端(Client): 请求的发起方;
ZooKeeper集群由一组Server节点组成,这一组Server节点中存在一个角色为Leader的节点,其他节点为Follower或Observer。