zookeeper_1 zookeeper简单介绍
一、zk简介
zookeeper是一个高性能<并发数比较高>、分布式的<>,开源分布式应用协调服务<>。基于java语言开发,基于TCP协议暴露端口;
分布式:
1>多台机器构成,2>它们之间网络通信,有交互关系,3>完成共同的目标对外来讲是一个整体;
分布式环境下可能存在的问题:
1>自动协调<多个节点一起完成一个动作>服务(举例:集群成员管理/锁/选主/同步/发布or订阅)
协调服务:
二、zk的数据模型
分层结构
树形结构中的每个节点叫做Znode
每个Znode都有数据(byte[]类型),也可以有子节点
节点路径<没有相对路径的概念都是绝对路径,以/分割>
通过数据结构stat来存储数据的变化ACL的变化和时间戳
数据发生变化时,版本号会递增
可以对znode中的数据进行读写操作
三、zk典型的应用场景
1.数据的发布和订阅<类似消息中间件,但是实现机制不同,发布者将数据发布到zk的节点,订阅者进行数据订阅>
2.负载均衡<并非特别好,与nginx相比的话> 、
服务提供者把自己的域名及IP端口的映射注册到zk中
服务消费者通过域名从zk中获取到对应的ip及端口,这个ip及端口有多个但是只获取一个
当提供者宕机的时候,对应的域名及ip的对应就会减少一个映射
例如dubbo实现负载均衡
3.命名服务:
查找类似J2EE的JNDI的效果,其实是命名查找
4.分布式协调和通知<类似发布/订阅但是通过watcher来实现的>
watcher和通知机制
分布式锁
分布式事务
5.集群管理:
管理内容:
集群中的机器数量
集群中机器的运行状态
集群中节点的上下线操作
集群节点的统一配置
6.master选举:
临时节点
顺序节点
同一时刻修改相同的数据,但是不同的机器上,这样没办法保证各个机器的一致,所以在主上做操作
7.分布式锁:zk本身是没有锁的概念的,但是可以通过获得最小id来获得或者创建节点成功的来获得
排他锁
共享锁
8.分布式队列:一般用消息中间件
FIFO
集群的管理,分布式锁等等应用的比较多
四、zk的基本概念
1.集群角色:
leader:为客户端提供读和写服务
follower:提供读服务,写都需要转交leader,参与选举
observer:提供读服务,不参与选举过程,一般是为了增强zk集群的读请求并发能力
2.会话(session)
zk的客户端与zk服务端之间的连接(长连接)
通过心跳检测保持客户端连接的存活
接收来自服务端的watch事件通知
可以设置超时时间
3.数据节点(znode)
数据节点用于存储数据
持久节点:c连接s之后,一旦创建,只能主动调用删除,否则一直存储在zk上
临时节点:与客户端的会话绑定,一旦客户端会话失效,这个客户端创建的所有临时节点都会被移除;
客户端会话失效不是tcp断开例如拔掉网线,但是超时关闭会话那么就是一个失效的会话
sequential znode 顺序的特性;设置属性SEQUENTIAL,则会自动在节点名后面加一个数字
4.版本;
version: 当前znode的版本
cversion:当前节点子节点的版本
aversion:当前节点acl(访问控制)版本
5.watcher:(类似于观察者)
作用于znode节点上
多种事件通知: 数据更新,子节点状态等。
五.zk的运行情况:可单机可多机
zk的单机模式:
zk是基于java开发的,就是普通的java程序;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理