首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com ToB IT社区-企服评测·应用市场
»
论坛
›
大数据
›
数据仓库与分析
›
Zookeeper快速入门:摆设服务、根本概念与操作 ...
返回列表
发新帖
Zookeeper快速入门:摆设服务、根本概念与操作
[复制链接]
发表于 2024-12-3 08:51:18
|
显示全部楼层
|
阅读模式
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
一、摆设服务
1.下载与安装
下载:
一定要下载编译后的文件,后缀为bin.tar.gz
wget https://dlcdn.apache.org/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz
复制
代码
解压:
targetUrl填目标安装目录
tar -zxf apache-zookeeper-3.8.4-bin.tar.gz targetUrl
复制
代码
2.查看并修改
配置
文件
配置
文件在解压目录下的/conf中,提供了一个示范文件zoo_sample.cfg:
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/tmp/zookeeper
# the port at which the clients will connect
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 端口。
修改
配置
文件:
# 复制一份
cp zoo_sample.cfg zoo.cfg
# 将dataDir=/tmp/zookeeper这一行的目录修改为
存储
数据的目录
vim zoo.cfg
复制代码
3.启动
现在将zookeeper摆设为单体结构的,先不思量集群。
在bin目录下执行以下命令:
sh zkServer.sh start
复制代码
通过客户端举行连接:
在bin目录下执行以下命令:
./zkCli.sh -server localhost:2181
复制代码
二、根本概念与操作
1.节点类型
在 Apache ZooKeeper 中,节点(也称为 znode)是存储数据的根本单元。ZooKeeper 支持多种类型的节点,每种类型具有不同的特性和用途。
持久节点 (Persistent Node)
创建后不会自动删除,除非显式地调用删除操作。
示例命令:
./zkCli.sh -server localhost:2181
create /persistent-node "data"
复制代码
临时节点 (Ephemeral Node)
当创建该节点的客户端会话结束时,节点会被自动删除。
临时节点不能有子节点。
示例命令:
./zkCli.sh -server localhost:2181
create -e /ephemeral-node "data"
复制代码
持久序次节点 (Persistent Sequential Node)
创建时,ZooKeeper 会在节点路径末尾自动添加一个递增的序列号。
序列号是全局唯一的,即使节点被删除后,序列号也不会被重用。
示例命令:
./zkCli.sh -server localhost:2181
create -s /persistent-sequential-node "data"
复制代码
临时序次节点 (Ephemeral Sequential Node)
兼具临时节点和序次节点的特性。
当创建该节点的客户端会话结束时,节点会被自动删除,而且创建时会自动添加一个递增的序列号。
示例命令:
./zkCli.sh -server localhost:2181
create -e -s /ephemeral-sequential-node "data"
复制代码
特性总结
持久节点 (Persistent Node)
:
不会自动删除。
可以有子节点。
适用于必要恒久存在的数据。
临时节点 (Ephemeral Node)
:
客户端会话结束时自动删除。
不能有子节点。
适用于表示客户端的存在或状态。
持久序次节点 (Persistent Sequential Node)
:
不会自动删除。
创建时自动添加序列号。
适用于必要唯一标识符的场景,例如任务分配。
临时序次节点 (Ephemeral Sequential Node)
:
客户端会话结束时自动删除。
创建时自动添加序列号。
适用于必要临时唯一标识符的场景,例如临时任务分配。
利用场景示例
分布式锁
:
利用临时序次节点实现分布式锁。每个客户端创建一个临时序次节点,通过比力节点的序列号来决定谁得到锁。
配置管理
:
利用持久节点存储配置信息,所有客户端都可以读取这些配置。
服务发现
:
利用临时节点注册服务实例,当服务实例宕机时,对应的临时节点会被自动删除。
任务调度
:
利用持久序次节点分配任务,每个任务有一个唯一的序列号,确保任务的唯一性和有序性。
查看节点
依次创建以上四种节点,然后执行ls /命令可以看到创建的所有节点:
查看节点数据
示例:
get /ephemeral-node
复制代码
2.文件系统层次结构
在 Apache ZooKeeper 中,节点(znode)可以形成一个层次结构,类似于文件系统中的目录和文件。每个节点可以有父节点和子节点。
注意,不能为临时节点创建子节点。
假设我们已经有了一个名叫persistent-node的父节点,可以为它创建一个子节点:
create /persistent-node/node1 "node1"
复制代码
3.watcher
ZooKeeper 的 Watcher 机制是一种事件通知机制,允许客户端在特定事件发生时收到通知。这对于实现分布式协调和同步非常有用。
Watcher 机制的工作原理:
注册 Watcher:客户端可以在创建节点、获取节点数据、列出子节点等操作时注册一个 Watcher。注册 Watcher 后,当指定的事件发生时,ZooKeeper 会向客户端发送一个通知。
事件类型:
NodeCreated:节点被创建。
NodeDeleted:节点被删除。
NodeDataChanged:节点的数据发生变革。
ChildChanged:节点的子节点列表发生变革。
一次性通知:
每个 Watcher 只触发一次。一旦触发,客户端必要重新注册 Watcher 以继续接收后续的通知。
回复
使用道具
举报
返回列表
浏览过的版块
虚拟化与私有云
SAP
程序人生
运维.售后
Oracle
Java
DevOps与敏捷开发
公有云
人工智能
李优秀
+ 我要发帖
登录后关闭弹窗
登录参与点评抽奖 加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表