ZooKeeper 的工作流程
ZooKeeper 集群中的角色简介:
- Leader: 负责发起投票和决议,更新系统状态
- Follower:用于接收客户端请求并向客户端返回结果,在选主过程中参与投票
- Observer: 可以接收客户端连接,将写请求转发给 Leader 节点,但不会参与 Leader 发起的投票,也不会被选举为 Leader,Observer 的目的是为了扩展系统,提高读取速度
一个 ZooKeeper 集群中同一时间只有一个 Leader,其他的都是 Follower 或 Observer
一、Leader 的工作流程
Leader 的主要功能有三个:
- 恢复数据
- 维持与 Learner(Follower 和 Observer) 的心跳,接收 Learner 的请求并判断 Learner 的请求消息类型
Learner 的消息类型:
- PING 消息:Leaner 的心跳信息
- REQUEST 消息:Follower 发送的提议信息,包括读写请求
- ACK 消息:Follower 对提议的回复,超过半数的 Follower 通过,则 Commit 该提议
- REVALIDATE 消息:用来延长 SESSION 有效时间
- 根据不同的消息类型,进行不同的处理
二、Follower 的工作流程
Follower 的主要功能有四个:
- 向 Leader 发送请求(PING 消息、REQUEST 消息、ACK 消息、REVALIDATE 消息)
- 接收 Leader 消息并进行处理
- 接收 Client 的请求,如果为写请求,则转发给 Leader
- 返回 Client 结果
Follower 循环处理如下几种来自 Leader 的消息:
- PING 消息:心跳消息
- PROPOSAL 消息:Leader 发起的提案,要求 Follower 投票
- COMMIT 消息:服务器端最新一次提案的信息
- UPTODATE 消息:表明此 Follower 同步已完成
- REVALDATA 消息:根据 Leader 的 REVALDATE 结果,确定关闭等待 revalidate 的 session 还是允许其接收消息
- SYNC 消息:返回 SYNC 结果到客户端,这个消息最初由客户端发起,用来强制得到最新的更新
三、Observer 的工作流程
Observer 的工作流程和 Follower 的唯一不同就是 Observer 不会参加 Leader 发起的投票,也不会被选举为 Leader,此处不再赘述。
ZooKeeper 的工作流程相关推荐
- logagent同步mysql_LogAgent的工作流程
项目架构设计 LogAgent的工作流程: 读日志 -tailf第三方库 func main() { fileName := "./my.log" config := tail.C ...
- Hadoop生态圈-Zookeeper的工作原理分析
Hadoop生态圈-Zookeeper的工作原理分析 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 无论是是Kafka集群,还是producer和consumer都依赖于Zoo ...
- Eureka工作原理(Eureka简介Eureka ServerEureka Client自我保护机制分布式系统中的CAP理论Eureka 工作流程)
一.Eureka简介 Eureka Server(注册中心,相当于zookeeper) Eureka Client: Provider Consumer 多个Eureka就叫集群.集群之间会定时通过r ...
- MapReduce概述及工作流程
内容 mapreduce原语(独创) mapreduce工作流程(重点) MR作业提交流程(重点) YARN RM-HA搭建(熟练) 运行自带的wordcount(了解) 动手写wordcount(熟 ...
- kafka的基本概念和工作流程分析
为什么需要消息队列 周末无聊刷着手机,某宝网APP突然蹦出来一条消息"为了回馈老客户,女朋友买一送一,活动仅限今天!".买一送一还有这种好事,那我可不能错过!忍不住立马点了去.于是 ...
- 原来大数据工作流程可以这样理解------生米煮成熟饭!
碎碎念 最近一直在思考作为测试工程师,如何以大数据为方向,提升自己的知识储备,适应接下来的市场需求,于是看了很多大数据相关的前辈们的文章,加上自己的理解,竟然觉着大数据工作处理流程,就好像我们在煮饭! ...
- Elasticsearch基础1——搜索引擎发展史和工作流程、es/es-head/kibana的基础安装
文章目录 一.搜索引擎 1.1 搜索引擎的发展背景 1.2 Lucene和Elasticsearch 1.3 Solr和Elasticsearch对比 1.4 数据搜索方式 1.5 搜索引擎 1.5. ...
- 【大数据入门笔记系列】第六节 分布式计算框架MapReduce的工作流程
[大数据入门笔记系列]第六节 分布式计算框架MapReduce的工作流程 前言 MapReduce分布式运算 MapReduceApplication MapTask ReduceTask split ...
- Zookeeper笔记(二)Paxos算法与Zookeeper的工作原理
Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目, 它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务.状态同步服务.集群管理.分布式应用配置项的管 ...
最新文章
- 学java培训开发需要多少钱
- html中全选按钮代码怎么写,html中的javascript 全选/取消全选操作示例代码
- 【原创】RabbitMQ 之 Access Control(翻译)
- 5月第2周编辑部标题训练:寻找读者最关注的新闻点
- 使用SpringBoot Actuator监控应用
- java中的内存泄漏
- java 采样_Java编程实现beta分布的采样或抽样实例代码
- 【静态站点(三)】之 Gridsome + Strapi + Vercel + Pm2 部署案例
- iQOO Pro 5G评测:配置彪悍定价亲民 成功拉低5G手机准入门槛
- padding和卷积的区别_NiN:使用11卷积层替代全连接层
- PSP??? 生产者与消费者框架,还是线程模型?
- 云栖大会day2总结 上午
- MPSK 通信系统的 Monte Carlo 仿真
- DBeaver Read-only:No corresponding table column
- C++如何写一个函数
- Windows起一个Docker镜像——起起起起起~不~来~
- 达人评测 i7 13700和i7 12700选哪个
- Linux 复制、粘贴快捷键
- php三元运算符怎么用,PHP三元运算符使用说明
- 笔记整理--Linux守护进程
热门文章
- zabbix监控平台添加服务(http,nginx,mysql)
- wfm扩展_WFM的完整形式是什么?
- RocketMQ一行代码造成消息发送失败
- the development of c language(转)
- vue数组刷新_Vue中数组更新后,页面没有动态刷新问题
- java全文检索工具_全文检索工具elasticsearch:第三章: Java程序中的应用
- mfc 子窗体 按钮不触发_VBA与Excel入门——用户窗体1
- linux apache certbot,从操作系统软件包安装Certbot
- linux脚本算术函数,Linux基础之bash脚本编程初级-变量与算术运算
- java怎么让1的数据2可以拥有,【如何让代码变“高级”(二)】-这样操作值得一波666(Java Stream)(这么有趣)...