Zookeeper的基本使用、配置为注册中心

Zookeeper

官方文档上这么解释zookeeper,它是一个分布式服务框架,是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。

上面的解释有点抽象,简单来说zookeeper=文件系统+监听通知机制。

Zookeeper维护一个类似文件系统的数据结构:

在这里插入图片描述
每个子目录项如 NameService 都被称作为 znode(目录节点),和文件系统一样,我们能够自由的增加、删除znode,在一个znode下增加、删除子znode,唯一的不同在于znode是可以存储数据的。

在这里插入图片描述

  在装有 ZooKeeper 的机器的终端执行 zookeeper-server status 可以看当前节点的 
  ZooKeeper是什么角色(Leader or Follower)。

1.节点读写服务分工

   1.ZooKeeper 集群的所有机器通过一个 Leader 选举过程来选定一台被称为『Leader』
   的机器,Leader服务器为客户端提供读和写服务。
   2.Follower 和 Observer 都能提供读服务,不能提供写服务。两者唯一的区别在于,
   Observer机器不参与 Leader 选举过程,也不参与写操作的『过半写成功』策略,因
   此 Observer 可以在不影响写性能的情况下提升集群的读性能。

2 . Session

      Session 是指客户端会话,在讲解客户端会话之前,我们先来了解下客户端连接。在
  ZooKeeper 中,一个客户端连接是指客户端和 ZooKeeper 服务器之间的TCP长连接。

       ZooKeeper 对外的服务端口默认是2181,客户端启动时,首先会与服务器建立一个TCP
  连接,从第一次连接建立开始,客户端会话的生命周期也开始了,通过这个连接,客户端能够通
  过心跳检测和服务器保持有效的会话,也能够向 ZooKeeper 服务器发送请求并接受响应,同
  时还能通过该连接接收来自服务器的 Watch 事件通知。

      Session 的 SessionTimeout 值用来设置一个客户端会话的超时时间。当由于服务器
  压力太大、网络故障或是客户端主动断开连接等各种原因导致客户端连接断开时,只要在 
  SessionTimeout 规定的时间内能够重新连接上集群中任意一台服务器,那么之前创建的会话
  仍然有效。

3 . 数据节点

    zookeeper的结构其实就是一个树形结构,leader就相当于其中的根结点,其它节点就相当于
 follow节点,每个节点都保留自己的内容。

     zookeeper的节点分两类:持久节点和临时节点
     - 持久节点:
             所谓持久节点是指一旦这个 树形结构上被创建了,除非主动进行对树节点的移除操
        作,否则这个 节点将一直保存在 ZooKeeper 上。

     - 临时节点:
             临时节点的生命周期跟客户端会话绑定,一旦客户端会话失效,那么这个客户端创
        建的所有临时节点都会被移除。

4 . 状态信息

    每个 节点除了存储数据内容之外,还存储了 节点本身的一些状态信息。用 get 命令可以
同时获得某个 节点的内容和状态信息
    在 ZooKeeper 中,version 属性是用来实现乐观锁机制中的『写入校验』的(保证分布
式数据原子性操作)。

5.事物操作

    在ZooKeeper中,能改变ZooKeeper服务器状态的操作称为事务操作。一般包括数据节点
创建与删除、数据内容更新和客户端会话创建与失效等操作。对应每一个事务请求,ZooKeeper
都会为其分配一个全局唯一的事务ID,用 ZXID 表示,通常是一个64位的数字。每一个 ZXID
对应一次更新操作,从这些 ZXID 中可以间接地识别出 ZooKeeper 处理这些事务操作请求的
全局顺序。

6.Watcher(事件监听器)

    是 ZooKeeper 中一个很重要的特性。ZooKeeper允许用户在指定节点上注册一些 Watcher,
并且在一些特定事件触发的时候,ZooKeeper 服务端会将事件通知到感兴趣的客户端上去。该
机制是 ZooKeeper 实现分布式协调服务的重要特性。

7.ZooKeeper应用的典型场景

    ZooKeeper 是一个高可用的分布式数据管理与协调框架。基于对ZAB算法的实现,该框架
能够很好地保证分布式环境中数据的一致性。也是基于这样的特性,使得 ZooKeeper 成为了
解决分布式一致性问题的利器。

监听通知机制

客户端注册监听它关心的目录节点,当目录节点发生变化(数据改变、被删除、子目录节点增加删除)时,zookeeper会通知客户端。
在这里插入图片描述

1 . 数据发布与订阅(配置中心)

  数据发布与订阅,即所谓的配置中心,顾名思义就是发布者将数据发布到 ZooKeeper 节点上,
供订阅者进行数据订阅,进而达到动态获取数据的目的,实现配置信息的集中式管理和动态更新。

    对于:数据量通常比较小。数据内容在运行时动态变化。集群中各机器共享,配置一致。
这样的全局配置信息就可以发布到 ZooKeeper上,让客户端(集群的机器)去订阅该消息。

发布/订阅系统一般有两种设计模式,分别是推(Push)和拉(Pull)模式。
      - 推模式
          服务端主动将数据更新发送给所有订阅的客户端
      - 拉模式
          客户端主动发起请求来获取最新数据,通常客户端都采用定时轮询拉取的方式

ZooKeeper 采用的是推拉相结合的方式:
    客户端想服务端注册自己需要关注的节点,一旦该节点的数据发生变更,那么服务端就会向相应
的客户端发送Watcher事件通知,客户端接收到这个消息通知后,需要主动到服务端获取最新的数据

2 . 命名服务

    命名服务也是分布式系统中比较常见的一类场景。在分布式系统中,通过使用命名服务,客户端
应用能够根据指定名字来获取资源或服务的地址,提供者等信息。被命名的实体通常可以是集群中的
机器,提供的服务,远程对象等等——这些我们都可以统称他们为名字。

其中较为常见的就是一些分布式服务框架(如RPC)中的服务地址列表。通过在ZooKeepr里
创建顺序节点,能够很容易创建一个全局唯一的路径,这个路径就
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值