Zookeeper快速入门:摆设服务、根本概念与操作

[复制链接]
发表于 2024-12-3 08:51:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
一、摆设服务

1.下载与安装



  • 下载:
一定要下载编译后的文件,后缀为bin.tar.gz
  1. wget https://dlcdn.apache.org/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz
复制代码


  • 解压:
targetUrl填目标安装目录
  1. tar -zxf apache-zookeeper-3.8.4-bin.tar.gz  targetUrl
复制代码
2.查看并修改配置文件

配置文件在解压目录下的/conf中,提供了一个示范文件zoo_sample.cfg:
  1. # The number of milliseconds of each tick
  2. tickTime=2000
  3. # The number of ticks that the initial
  4. # synchronization phase can take
  5. initLimit=10
  6. # The number of ticks that can pass between
  7. # sending a request and getting an acknowledgement
  8. syncLimit=5
  9. # the directory where the snapshot is stored.
  10. # do not use /tmp for storage, /tmp here is just
  11. # example sakes.
  12. dataDir=/tmp/zookeeper
  13. # the port at which the clients will connect
  14. clientPort=2181
复制代码


  • 解析:

    • tickTime=2000:这是 ZooKeeper 中最根本的时间单位,以毫秒为单位。它用于心跳检测以及最小会话超时时间的盘算。在这个例子中,tickTime 被设置为 2000 毫秒(即 2 秒)。
    • initLimit=10:这个参数界说了集群中的 follower 节点与 leader 节点举行初始同步的最大时间限定,以 tickTime 为单位。例如,如果 tickTime 是 2000 毫秒,那么 initLimit 设置为 10 就意味着初始同步的最大时间是 20000 毫秒(即 20 秒)。
    • syncLimit=5:这个参数界说了 follower 节点与 leader 节点之间发送哀求和接收相应的最大时间限定,同样以 tickTime 为单位。例如,如果 tickTime 是 2000 毫秒,那么 syncLimit 设置为 5 就意味着这个时间限定是 10000 毫秒(即 10 秒)。
    • dataDir=/tmp/zookeeper:这个参数指定了 ZooKeeper 存储数据快照的目录。在生产环境中,不发起利用 /tmp 目录,由于 /tmp 目录可能会在系统重启时被清空。应该选择一个持久化的存储位置来存放数据。
    • clientPort=2181:这个参数指定了客户端连接 ZooKeeper 服务的端口。默认环境下,ZooKeeper 服务监听 2181 端口。

  • 修改配置文件:
  1. # 复制一份
  2. cp zoo_sample.cfg zoo.cfg
  3. # 将dataDir=/tmp/zookeeper这一行的目录修改为存储数据的目录
  4. vim zoo.cfg
复制代码
3.启动

现在将zookeeper摆设为单体结构的,先不思量集群。
在bin目录下执行以下命令:
  1. sh zkServer.sh start
复制代码


  • 通过客户端举行连接:
在bin目录下执行以下命令:
  1. ./zkCli.sh -server localhost:2181
复制代码
二、根本概念与操作

1.节点类型

在 Apache ZooKeeper 中,节点(也称为 znode)是存储数据的根本单元。ZooKeeper 支持多种类型的节点,每种类型具有不同的特性和用途。

  • 持久节点 (Persistent Node)

    • 创建后不会自动删除,除非显式地调用删除操作。
    • 示例命令:
      1. ./zkCli.sh -server localhost:2181
      2. create /persistent-node "data"
      复制代码

  • 临时节点 (Ephemeral Node)

    • 当创建该节点的客户端会话结束时,节点会被自动删除。
    • 临时节点不能有子节点。
    • 示例命令:
      1. ./zkCli.sh -server localhost:2181
      2. create -e /ephemeral-node "data"
      复制代码

  • 持久序次节点 (Persistent Sequential Node)

    • 创建时,ZooKeeper 会在节点路径末尾自动添加一个递增的序列号。
    • 序列号是全局唯一的,即使节点被删除后,序列号也不会被重用。
    • 示例命令:
      1. ./zkCli.sh -server localhost:2181
      2. create -s /persistent-sequential-node "data"
      复制代码

  • 临时序次节点 (Ephemeral Sequential Node)

    • 兼具临时节点和序次节点的特性。
    • 当创建该节点的客户端会话结束时,节点会被自动删除,而且创建时会自动添加一个递增的序列号。
    • 示例命令:
      1. ./zkCli.sh -server localhost:2181
      2. create -e -s /ephemeral-sequential-node "data"
      复制代码

特性总结



  • 持久节点 (Persistent Node):

    • 不会自动删除。
    • 可以有子节点。
    • 适用于必要恒久存在的数据。

  • 临时节点 (Ephemeral Node):

    • 客户端会话结束时自动删除。
    • 不能有子节点。
    • 适用于表示客户端的存在或状态。

  • 持久序次节点 (Persistent Sequential Node):

    • 不会自动删除。
    • 创建时自动添加序列号。
    • 适用于必要唯一标识符的场景,例如任务分配。

  • 临时序次节点 (Ephemeral Sequential Node):

    • 客户端会话结束时自动删除。
    • 创建时自动添加序列号。
    • 适用于必要临时唯一标识符的场景,例如临时任务分配。

利用场景示例



  • 分布式锁:

    • 利用临时序次节点实现分布式锁。每个客户端创建一个临时序次节点,通过比力节点的序列号来决定谁得到锁。

  • 配置管理:

    • 利用持久节点存储配置信息,所有客户端都可以读取这些配置。

  • 服务发现:

    • 利用临时节点注册服务实例,当服务实例宕机时,对应的临时节点会被自动删除。

  • 任务调度:

    • 利用持久序次节点分配任务,每个任务有一个唯一的序列号,确保任务的唯一性和有序性。

查看节点

依次创建以上四种节点,然后执行ls /命令可以看到创建的所有节点:

查看节点数据

示例:
  1. get /ephemeral-node
复制代码

2.文件系统层次结构

在 Apache ZooKeeper 中,节点(znode)可以形成一个层次结构,类似于文件系统中的目录和文件。每个节点可以有父节点和子节点。
注意,不能为临时节点创建子节点。
假设我们已经有了一个名叫persistent-node的父节点,可以为它创建一个子节点:
  1. create /persistent-node/node1 "node1"
复制代码

3.watcher

ZooKeeper 的 Watcher 机制是一种事件通知机制,允许客户端在特定事件发生时收到通知。这对于实现分布式协调和同步非常有用。


  • Watcher 机制的工作原理:
    注册 Watcher:客户端可以在创建节点、获取节点数据、列出子节点等操作时注册一个 Watcher。注册 Watcher 后,当指定的事件发生时,ZooKeeper 会向客户端发送一个通知。
  • 事件类型:
    NodeCreated:节点被创建。
    NodeDeleted:节点被删除。
    NodeDataChanged:节点的数据发生变革。
    ChildChanged:节点的子节点列表发生变革。
  • 一次性通知:
    每个 Watcher 只触发一次。一旦触发,客户端必要重新注册 Watcher 以继续接收后续的通知。
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表