网站首页 > 精选文章 正文
视频链接:ZK集群服务节点角色、状态以及数据存储
ZK集群服务节点角色
ZK集群中的 server 分为三种角色:leader, follower, observer。
那么角色是在哪配置定义的呢?首先我们需要打开zk集群的配置文件,目录为:zk解压目录/zookeeper/conf/zoo.cfg,我们搭建配置的节点信息如下:
- server.1=localhost:2287:3387
- server.2=localhost:2288:3388
- server.3=localhost:2289:3389
- server.4=localhost:2290:3390:observer
下面我们用一张图来总结下ZK集群节点中leader, follower, observer 角色的作用
- 事务请求的唯一处理者,保证集群事务处理的顺序性,它会将每个状态更新请求进行顺序管理,以便保证整个集群内部消息处理的 FIFO,遵循了顺序一致性(Sequential Consistency)。
- 集群内部各服务器的调度者,负责响应集群的所有对Zookeeper数据状态变更的请求。leader 内部维护单调递增的 Zxid(ZooKeeper Transaction Id),针对客户端连接,断开连接,节点的写操作都会分配一个全局唯一的Zxid,同时这些操作是原子性的,并且是严格顺序性的,遵循ZAB原子广播一致性协议完成事务(transaction)操作。如果客户端有些操作,都会被 follower 统一转发给leader处理,然后leader会下发提案让follower投票,如果投票超过半数,则提交事务并通知follower和observer。
- leader内部维护 session ,来自客户端的连接和断开连接,都会被统一follower 或 observer 转发给leader处理。
- 处理客户端非事务请求、转发事务请求给 leader 服务器;
- 参与事务请求 Proposal 的投票(需要半数以上服务器通过才能通知 leader commit 数据; Leader 发起的提案, 要求 Follower 投票);
- 参与 Leader 选举的投票 。
observer 是 zookeeper3.3 开始引入的一个全新的服务器 角色,从字面来理解,该角色充当了观察者的角色。 观察 zookeeper 集群中的最新状态变化并将这些状态变化同步到 observer 服务器上。observer 的工作原理与 follower 角色基本一致,而它和 follower 角色唯一的不同 在于 observer 不参与任何形式的投票,包括事务请求 Proposal的投票和leader选举的投票。简单来说,observer 服务器只提供非事物请求服务,通常在于不影响集群事物处理能力的前提下提升集群非事物处理的能力 。相当于对zk集群完成了水平扩展。
ZK集群服务节点状态
Zookeeper 的存储
zookeeper中的znode数据都是在内存中优先维护和提供读服务,当事务被提交以及最终提交都会持久化到磁盘的日志文件中。
不断分享开发过程用到的技术和面试经常被问到的问题,如果您也对IT技术比较感兴趣可以「关注」我
猜你喜欢
- 2025-08-01 企业级大数据安全架构(三)修改集群节点hostname
- 2025-08-01 当kafka集群其中一台宕机后,会怎么样?
- 2025-08-01 Redis 集群最大节点个数是多少?
- 2025-08-01 解惑 | kafka挂掉一个节点,为什么消费者消费不到数据了
- 2025-08-01 Redis集群更换节点IP后如何恢复集群并保留完整集群数据
- 2025-08-01 Elasticsearch集群节点下线和分片感知意识
- 2025-08-01 浪潮信息发布全球首个单存储16节点SAP HANA集群方案
- 2025-08-01 【好文推荐】openGauss主备集群节点的添加与删除
- 2025-08-01 超万卡集群算力节点和基础设施的挑战
- 2025-08-01 Redis集群搭建(服务安装、节点配置)
- 08-03Gitlab搭建及配置
- 08-03如何修改Dify默认80端口
- 08-03WeClone 用微信聊天记录打造你的「数字分身」
- 08-03使用vite为vue项目配置@别名
- 08-03NAS轻松部署自己的即时通讯—唐僧叨叨,八年时间打造
- 08-03Spring Boot 的 3 种动态 Bean 注入技巧
- 08-03手摸手,带你用vue撸后台
- 08-03无感刷新Token:如何做到让用户“永不掉线”
- 最近发表
- 标签列表
-
- 向日葵无法连接服务器 (32)
- git.exe (33)
- vscode更新 (34)
- dev c (33)
- git ignore命令 (32)
- gitlab提交代码步骤 (37)
- java update (36)
- vue debug (34)
- vue blur (32)
- vscode导入vue项目 (33)
- vue chart (32)
- vue cms (32)
- 大雅数据库 (34)
- 技术迭代 (37)
- 同一局域网 (33)
- github拒绝连接 (33)
- vscode php插件 (32)
- vue注释快捷键 (32)
- linux ssr (33)
- 微端服务器 (35)
- 导航猫 (32)
- 获取当前时间年月日 (33)
- stp软件 (33)
- http下载文件 (33)
- linux bt下载 (33)