Zookeeper中的角色
在zookeeper集群中,节点也有不同的角色,承担着不同角色。
zookeeper有三种角色:
- 老大:Leader (领导者) : 客户端提供读服务和写服务。
- 老二:Follower(跟随者) : 为客户端提供读服务,参与Leader选举过程
- 老三:Observer(观察者) : 为客户端提供读服务,不参与Leader选举过程
其中:Follower 和 Observer 归类为 Learner(学习者)
集群管理图如下:
Leader
Leader在集群中只有一个节点,可以说是老大No.1,是zookeeper集群的中心,负责协调集群中的其他节点。从性能的角度考虑,leader可以选择不接受客户端的连接。
所有的跟随者Follower与观察者Observer节点的写请求都会转交给领导者Leader执行。Leader接受到一个写请求后,首先会发送给所有的Follower,统计Follower写入成功的数量。当有超过半数的Follower写入成功后,Leader就会认为这个写请求提交成功,通知所有的Follower commit这个写操作,保证事后哪怕是集群崩溃恢复或者重启,这个写操作也不会丢失。
Leader的作用
- 在ZAB崩溃恢复之后,消息广播之前,进行集群中的数据同步;
- 维持与Learner的心跳,接收Learner请求消息,并据不同的消息类型,进行不同的处理;
- Learner处理的消息类型包括:PING消息、REQUEST消息、ACK消息、REVALIDATE消息等。
其中:
- PING消息:指Learner的心跳信息;
- REQUEST消息:是Follower发送的提议信息,包括写请求及同步请求;
- ACK消息:是Follower的对提议的回复,超过半数的Follower通过,则commit该提议;
- REVALIDATE消息:是用来延长SESSION有效时间。
Leader的工作流程简图如下所示,实际上流程要比下图复杂得多,启动了三个线程来实现功能:
Follower
Follow在集群中有多个,主要的作用有:
- 与老大Leader保持心跳连接
- 当Leader挂了的时候,经过投票后成为新的leader。leader的重新选举是由老二Follower们内部投票决定的。
- 向Leader发送请求(PING请求、REQUEST消息、ACK请求、REVALIDATE消息)
- 处理leader发来的消息与请求
- 接收Client的请求,如果为写请求,发送给Leader进行投票;
- 返回Client请求结果。
Follower的工作流程简图:
其中:
- UPTODATE消息:表示同步完成;
- REVALIDATE消息:根据Leader的REVALIDATE结果,关闭待revalidate的session还是允许其接受消息;
- SYNC消息:返回SYNC结果到客户端,这个消息最初由客户端发起,用来强制得到最新的数据更新。
Observer
Observer角色除了不参与Leader选举和Proposal投票外,与Follower的作用相同。
可以说Observer是zookeeper集群中最边缘的存在。Observer的主要作用是提高zookeeper集群的读性能。通过leader的介绍我们知道zookeeper的一个写操作是要经过半数以上的Follower确认才能够写成功的。那么当zookeeper集群中的节点越多时,zookeeper的写性能就 越差。为了在提高zookeeper读性能(也就是支持更多的客户端连接)的同时又不影响zookeeper的写性能,zookeeper集群多了一个儿子Observer,只负责:
- 与leader同步数据
- 不参与leader选举,没有投票权。也不参与写操作的提议过程。
- 数据没有事务化到硬盘。即Observer只会把数据加载到内存。
参考资料
- https://www.cnblogs.com/DeepInThought/p/11061550.html
- https://blog.csdn.net/lamfang/article/details/109039288
Zookeeper中的角色的更多相关文章
- 【3】Zookeeper中的角色
一.Zookeeper角色的分类 领导者(leader) Leader服务器为客户端提供读服务和写服务. 学习者(learner) 跟随者(follower) Follower服务器为客户端提供读服务 ...
- zookeeper中Watcher和Notifications
问题导读:1.zookeeper观察者什么时候调用?2.传统远程轮询服务存在什么问题?3.zk中回调服务的机制是什么?4.zk中watcher为什么不永久注册?5.什么是znode? 在阅读之前首先明 ...
- Apache ZooKeeper在Kafka中的角色 - 监控和配置
1.目标 今天,我们将看到Zookeeper在Kafka中的角色.本文包含Kafka中需要ZooKeeper的原因.我们可以说,ZooKeeper是Apache Kafka不可分割的一部分.在了解Zo ...
- 【分布式】Zookeeper的服务器角色
一.前言 前一篇已经详细的讲解了Zookeeper的Leader选举过程,下面接着学习Zookeeper中服务器的各个角色及其细节. 二.服务器角色 2.1 Leader Leader服务器是Zook ...
- Zookeeper中Session Timeout的那些事
前言: RDS系统致力于MySQL数据的高可用,高可靠,高性能以及在线扩展功能,实现这些特性的主要逻辑功能都运行在管理服务器上,一旦管理服务器宕机,数据库的在线扩展功能/备份功能/故障恢复功能等都无从 ...
- zookeeper中的分布式一致性协议
1. zookeeper中的一致性协议-ZAB协议 在深入了解ZK之前,相信很多同学都会认为ZK就是Paxos算法的一个实现.但事实上,ZK并没有完全采用Paxos算法,而是使用了一种称为ZooKee ...
- Zookeeper中的watcher监听和leader选举机制
watcher监听 什么是watcher接口 同一个事件类型在不同的通知状态中代表的含义有所不同,下图列举了常见的通知状态和事件类型. Watcher通知状态与事件类型一览 上图列举了ZooKeepe ...
- Zookeeper中的Leader选取机制
一.Zookeeper是什么? ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应 ...
- 面试官:说一说Zookeeper中Leader选举机制
哈喽!大家好,我是小奇,一位不靠谱的程序员 小奇打算以轻松幽默的对话方式来分享一些技术,如果你觉得通过小奇的文章学到了东西,那就给小奇一个赞吧 文章持续更新 一.前言 今天又是一个阳光明媚的一天,我又 ...
- Twitter Storm源代码分析之ZooKeeper中的目录结构
徐明明博客:Twitter Storm源代码分析之ZooKeeper中的目录结构 我们知道Twitter Storm的所有的状态信息都是保存在Zookeeper里面,nimbus通过在zookeepe ...
随机推荐
- MyBatis 简介、优缺点
40)谈谈 MyBatis Mybatis 是一个半自动化的 ORM 框架,它对 jdbc 的操作数据库的过程进行封装,使得开发者只需要专注于 SQL 语句本身,而不用去关心注册驱动,创建 conne ...
- Visual Studio快捷键总览,推荐VS+Resharper实现高效开发
VS2022之后,其实还挺好用的,但个人还是习惯VS+Resharper的强强组合,尤其是Ctrl+N快捷键的全局搜,比VS自带的Ctrl+T好用太多了,Ctrl+B还能直接查看反编译之后的dll的方 ...
- #树形dp,二分#UVA1407 Caves 洛谷 3698 [CQOI2017]小Q的棋盘
题目 给定一棵树,现在需要找到一条由节点1出发长度为\(x\)的路径, 问最多经过的节点数,重复经过只计算一次(不一定是简单路径) UVA的那道题多组数据多组询问,边权还不一定是1,\(n\leq 5 ...
- #网络流,二分#洛谷 3324 [SDOI2015]星际战争
题目 分析 二分答案,然后建图判断可行性 代码 #include <cstdio> #include <cctype> #include <queue> #defi ...
- GitHub互赞快速涨星,最简单的涨星方法
各位代码们,是不是厌倦了在GitHub上孤独地刷着自己的项目页面,眼巴巴地等待那星星数的涨幅?今天给大家安利一个超级实用的新玩意儿--涨星互助平台,一个让你的GitHub项目星星数飞起来的秘密基地! ...
- Seaborn分布数据可视化---直方图/密度图
直方图\密度图 直方图和密度图一般用于分布数据的可视化. distplot 用于绘制单变量的分布图,包括直方图和密度图. sns.distplot( a, bins=None, hist=True, ...
- 空间音频技术与生态发展高峰论坛成功举办,业界首个Audio Vivid创作工具花瓣三维声亮相
11月26日至27日,UWA世界超高清视频产业联盟(以下简称"UWA联盟").上海交通大学-南加州大学文化创意产业学院.华为联合举办了"互联智慧,共赢未来" 超 ...
- ContOS7搭建RAID-0磁盘阵列
RAID-0条带数据: 优点:2块硬盘同时在写数据,而且各写各的不影响,速度较快:性能提升2倍(理论): 缺点:服务器硬盘特别容易损坏,一点损坏一个,其余不能用:没有容错性:服务器用的不多,都是配合使 ...
- HTML基础之input系列
<form action=""> <div> 用户名:<input type="text" name="user&quo ...
- docker 应用篇————容器卷[十一]
前言 简单介绍一下容器卷. 正文 我们发现一个文件,就是什么呢? 就是说因为我们的容器一但删除那么什么都没有了. 那么如何能够不删除呢?那么可以使用容器卷. 比如说系统我们容器内的/usr 使用我们的 ...


