Zookeeper的基本介绍

一 .  zookeeper是什么

      zookeeper 是一个分布式的,开源的分布式应用程序协调服务 (官方网站:https://zookeeper.apache.org/

二 . zookeeper能做什么

      1. 配置维护:在分布式系统中,一般会把服务部署到n台机器上面,服务配置文件都是相同的,如果配置文件的配置选项发生了改变,那我们就得一台一台的去改变这些配置文件。这时zk就起作用了,可以把zk当做一个高级的可用的配置存储器,把配置文件的事情交给zk去管理,将集群的配置文件拷贝到zk的某一个节点上面,然后zk去监控所有分布式系统里的配置文件状态,一旦发现现有配置文件发生改变,那么每台服务器同步zk的配置文件,zk同时保证同步操作的原子性,确保每个服务器的配置文件都能被更新。

    2. 命名服务:在分布式应用中,通常需要一个完整的命名规则,既能产生唯一的名称又便于人们识别。zk就提供了这样的一种服务,类似于域名和ip之间的对应关系,域名容易记住,通过名称来获取资源和服务的地址,提供者等信息。

    3. 分布式锁:分布式程序分布在不同主机上的进程对互斥资源进行访问时需要加锁。理解:很多分布式系统有多个服务窗口,但是某个时刻只让一个服务去干活,当这台服务器出问题的时候锁释放,里脊fail over到另外的服务。举例子,比如去某个地方办理证件的时候,只能有一个窗口对你服务,如果这个窗口的柜员有急事走了,那么系统或者经理给你指定另外一个窗口继续服务。

   4. 集群管理:分布式集群中,经常会由于各种原因,比如硬件故障,网络问题,有些节点挂掉、有些节点加进来。这个时候机器需要感知到变化,然后根据变化做出对应的决策,那么zk就实现了类似这种集群的管理。

  5.  队列管理:类似一些mq实现队列的功能,这个不常用,不适合高性能的应用。

三. zookeeper的角色管理

    领导者(Leader):领导者负责进行投票的发起和决议,更新系统状态。

    学习者(Learner):

               跟随者(Follower):用于接受客户请求并向客户端返回结果,在选主过程中参与投票。

        观察者(ObServer):ObServer可以接受客户端连接,将写请求转发给leader节点,但 ObServer不参加投票过程,只同步leader状态。ObServer的目的是为了扩展系统,提高读取速度。

              客户端(Client):请求发起方。

四 . zookeeper设计原则

     1. 最终一致性:客户端(Client)无论连接到哪个zk的节点,展示给他的视图都是一样的。

     2. 可靠性:消息message被到一台服务器接受,那么它到任何服务器都被接受。

     3. 实时性:zk保证在一个时间间隔范围内获得服务器的更新信息,或者服务器失效信息。但是由于网络延时等一些其他原因,zk不能保证两个客户端同事得到跟新或者失效信息。

     4. 等待无关:慢的或者失效的客户端(Client)不得干预快速的client的请求,使得每个client都能有效的等待。

     5. 原子性:更新只能成功或者失败,没有其他中间信息。

     6 顺序性:包括全局有序和偏序两种:全局有序是指如果再一台服务器上消息a在消息b前发布,则在所有Server上消息a都将          在消息b前被发布;偏序是指如果一个消息b在消息a后被同一个发送者发布,a必将排在b前面。

猜你喜欢

转载自blog.csdn.net/qq_22230709/article/details/81584510