ZooKeeper的核心原理

ZooKeeper核心原理详解 在分布式系统领域,协调与一致性是永恒的挑战。Apache ZooKeeper作为一个高性能的分布式协调服务,为分布式应用提供了诸如配置管理、命名服务、分布式锁等核心功能。本文将深入解析ZooKeeper的核心原理,包括数据模型、一致性协议、会话管理和Watch机制等,并结合具体代码示例展示其使用方法。ZAB(ZooKeeper Atomic Broadcast)是ZooKeeper使用的原子广播协议,用于保证分布式事务的一致性。 阅读详情

前言

在了解了zk的基本概念以后,我们来介绍一下ZK的核心原理。 没有了解过zk的同学,请先去了解zk的基本概念---->>>ZooKeeper入门指南

zk的角色

ZooKeeper的zab协议

zookeeper的核心是原子广播,这个机制保证了各个server之间的同步。实现这个机制的协议叫做Zab协议。 zab协议有两种模式,分别是恢复模式和广播模式。当服务启动或者leader崩溃后,Zab就进入了恢复模式。当leader被选举出来且超过一半的server完成了跟leader的状态同步以后,恢复模式结束。

zookeeper的工作原理

为了保证事务的顺序一致性,zookeeper采用了递增的事务id号(zxid)来标识事务。所有的提议(proposal)都在被提出的时候加上了zxid。实现中zxid是一个64位的数字,它高32位是epoch用来标识leader关系是否改变,每次一个leader被选出来,它都会有一个新的epoch,标识当前属于那个leader的统治时期。低32位用于递增计数。

每个Server在工作过程中有三种状态:

  • LOOKING:当前server没有发现leader的情况,通常出现在server启动时。
  • LEADING:当前server成为了leader。
  • FOLLOWING:leader已经选举出来,当前Server与之同步

一、选主流程

当leader奔溃或者leader失去超过一半的follower,这时候会进入恢复模式,恢复模式需要重新选举一个 新的leader,让所有server都恢复到一个正确的状态。

zk的选举算法有两种:一种是基于basic paxos算法实现的,另一种是基于 fast paxos算法实现的(系统默认)。

1.1 Basic Paxos 选举原理

paxos算法[帕克索斯]是最重要的分布式一致性算法,很多人都把它称作”分布式一致性协议“的代名词。分布式一致性算法是分布式计算领域的基础性问题,其最基本的功能是为了多个进程之间对某个某些值达成强一致性;进而解决分布式系统的高可用的问题 。

选举线程由当前server担任,该server负责对投票结果进行统计并选出推荐leader。

  1. 选举线程向集群中所有节点发起提议(proposal),包括自己。
  2. 选举线程收到server的回复之后,通过ZXID验证对方的回复信息,是否是自己发起的提议。验证通过后,选举线程去获取对方server的ZXID并存储到当前提议列表。并获取对方server提议的leader信息,将推荐leader的关键信息存储到本次选举投票记录表。
  3. 当选举线程收到所有的server回复之后,判断本次选举投票记录表中是否有leader获得超过一半((集群节点数/2)+1)票数的推荐。 若有,新leader产生,选举成功! 若无,从选举投票记录表计算出ZXID最大的server节点,并将这个server节点设置成下一次要投票的server,继续选举流程。
  • tips:为了选举成功,要求zookeeper集群部署必须是奇数节点。
1.2 Fast Paxos 选举原理
  1. 与Basic Paxos选举的区别在于,选举线程在发起提议之初,会主动提议自己成为leader。
  2. 当其他server收到提议后,解决epoch和zxid的冲突,并接受对方的提议,然后向对方发送接受提议完成的消息,重复整个流程,完成选举。

二、状态同步流程

重新选举leader之后,zk就会进入状态同步的过程。

  1. leader等待server连接
  2. follower连接leader,将最大的zxid发送给leader
  3. leader根据follower的zxid确定同步点
  4. 完成同步后通知follower已经成为uptodate状态
  5. follower收到uptodate消息后,又可以重新接受client的请求了。

三、leader的工作流程

  1. 恢复数据
  2. 维持与learner的心跳,接受learner请求并判断learner的请求消息类型,根据不同 消息类型,进行不同处理。 消息类型包括:
  • PING消息 - leader与learner心跳监测
  • REQUEST消息 - follower发送的提议请求、写请求和同步请求
  • ACK消息 - follower对提议的回复
  • REVALIDATE消息 - 用来延长session的有效时间

四、follower的工作流程

  1. 向leader 发送请求(PING,REQUEST,ACK,REVALIDATE)
  2. 接收leader消息并处理
  3. 接收client请求,如果为写请求,转发送给leader
  4. 返回client结果
Zookeeper实现分布式锁的核心原理 文章目录INFO一、回顾二、实现思路三、安全性 INFO 作者: 编程界的小学生 日期: 2021/09/20 修订: 初版,未修订。2021/09/20 版权: 内部资料,切勿泄漏,违者必究。 一、回顾 之前我们花了十几个篇幅来讲解分布式锁是什么以及Redis实现分布式锁的各种方式的底层源码剖析。实现分布式锁的方式不仅有Redis,还有Zookeeper,那Zookeeper如何实现分布式锁呢?相当于Redis来讲,Zookeeper实现分布式锁太简单了!也相对更可靠。 二、实现思路 Zookeeper实 阅读详情

相关推荐

深度剖析 ZooKeeper 核心原理

从 0 到 1 深入浅出 ZooKeeper 核心技术:你不仅会掌握 ZooKeeper 核心设计思想,而且还会对其底层源码有深刻认识,更会学习到一些优秀的代码设计。

斌擎科技 890

Zookeeper选举机制

   ZooKeeper 是一个开放源码的分布式应用程序协调服务,它具有可靠的、可扩展的、分布式的、可配置的协调机制。它的核心是原子广播,这个机制保证了各个Server之间的同步。    实现原子广播机制的协议叫做Zab协议。Zab协议有两种模式,它们分别是恢复模式(选主)和广播模式(同步)。当服务启动或者在领导者崩溃后,Zab就进入了恢复模式,当领导者被选举出来,且大多数Server完成了和l...

无名虫博客 253

风控IV、AUC、KS python计算代码

df_temp:数据集,Y:是否逾期标签,feas_list:需要计算IV的 变量。2、 按月和不同Y 下的 IV计算。

暮雨听轩的专栏 1618

Zookeeper的功能以及工作原理

1.ZooKeeper是什么? ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户 2.ZooKeeper提供了什么? 1)文件系统 2)通知机制 3.Zookee

sun 1808

Mac上Ollama服务IP访问失败的3种修复方法(含永久生效配置)

本文详细介绍了Mac上Ollama服务IP访问失败的3种修复方法,包括临时环境变量覆盖、永久Shell配置修改及进阶排查技巧。重点解析了OLLAMA_HOST环境变量的配置原理,帮助开发者解决Connection refused问题,实现局域网IP访问Ollama服务的需求。

weixin_29209805的博客 209

PostGIS 小白入门详细指南

PostGIS 是 PostgreSQL 的一个扩展,它将 PostgreSQL 转变为一个功能强大的空间数据库,使其能够存储、查询和分析地理空间数据。PostGIS 遵循开放地理空间联盟(OGC)的标准,支持各种空间数据类型和操作,如点、线、多边形、缓冲区、空间连接等。存储各种空间数据类型(如几何类型和地理类型)空间索引,提高查询性能丰富的空间函数和操作支持投影和坐标系统转换城市规划与管理环境监测与分析物流与运输优化地图制作与可视化位置服务与导航。

落魄书生的职业学习生涯 1万+

Zookeeper原理详解

Zookeeper是什么 Zookeeper 分布式服务框架是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等 Zookeeper 作为一个分布式的服务框架,主要用来解决分布式集群中应用系统的一致性问题,它能提供基于类似于文件系统的目录节点树方式的数据存储, Zookeeper 作用主要是用来维护和监控存储的数据的状态变化,通过监控这些数据状态的变化,从而达到基于数据的集群管理 简单的说,zo

qq_20161461的博客 1万+

【突变检验合集】含Pettitt突变检验等

突变检验方法合集

WW、forever的博客 3534

Zookeeper工作原理(详细)(2)

1、Zookeeper的角色 领导者(leader),负责进行投票的发起和决议,更新系统状态 学习者(learner),包括跟随者(follower)和观察者(observer),follower用于接受客户端请求并向客户端返回结果,在选主过程中参与投票 Observer可以接受客户端连接,将写请求转发给leader,但observer不参加投票过程,只同步 leader的状态,observer的...

u013915286的博客 553

TC3XX - MCAL知识点(三十五):Tasking编译器下,Tc3xx的MCAL代码如何使用多核,多核中断、多核任务、多核外设之间的MCAL配置与代码例程

文章用于记录在裸机情况下使用多核Tc387芯片,如何高效运行以及正确的代码、工程属性、链接文件配置等问题,相互结合、相互影响的地方,以示后续使用记录。

梦想技术家 963

078、镜头阴影校正:LSC算法原理与标定优化

文章摘要 镜头阴影校正(LSC)是手机影像系统中的关键技术,用于解决镜头渐晕效应导致的画面边缘暗角问题。本文详细分析了LSC算法的核心原理,包括非均匀网格划分、双线性插值等关键技术点,并揭示了标定流程中的常见陷阱(光源均匀性、灰卡反射特性、温度漂移)。文章还深入探讨了增益计算的工程实现细节,以及实际调优中的关键考量因素(色差校正、动态场景适应等)。作者结合15年经验,给出了包括验证方法、网格参数设计、产线标定等实用性建议,强调LSC算法应与光学设计协同优化,才能达到最佳效果。

sundong_81的博客 42

zookeeper工作原理、核心机制

工作原理:1.ZooKeeper是什么?ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户2.ZooKeeper提供了什么?1)文件系统2)通知机制3.Zookeeper文件系统每个子目录项如 Na...

冯三思 1万+

Python爬取小红书种草商品评论数据:从入门到实战全攻略(附反爬+情感分析方案)

Python爬取小红书种草商品评论数据,核心是“抓包找到正确的接口+处理登录验证+合理的反爬策略”。新手不用一开始就追求多笔记批量爬取和情感分析,先把单笔记的评论抓取和存储跑通,再逐步扩展功能。我做的这个系统现在每天帮朋友爬取3-5款美妆产品的评论,自动做情感分析和关键词提取,她再也不用手动翻评论了,效率提升了80%。如果你们在开发中遇到具体问题,比如接口找不到、Cookie过期、IP被封,都可以在评论区留言,我会一一解答。后续也可以出一期小红书笔记种草数据爬取的教程,帮助大家更全面地分析竞品数据。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1351

Zookeeper核心原理

Zookeeper 的核心原理 Zookeeper 的由来 1.各个节点的数据一致性 2.怎么保证任务只在一个节点执行 3.如果orderserver1挂了,其他节点如何发现并接替 4.存在共享资源,互斥性、安全性 Apache 的Zookeeper Google 的Chubby 是一个分布式锁服务,通过Google Chubby 来解决分布式协作、Master选举等与分布式锁服务相关的问题 ...

weixin_44159009的博客 374

在Tricore上移植μC/OS-III——1.1 AURIX Development Studio的使用

本文主要介绍AURIX Development Studio软件的安装和使用方法。 英飞凌针对Tricore系列单片机推出了一款免费的软件——AURIX™ Development Studio,集成了iLLD库,内置Tasking compiler和Tasking Debugger,但这两个模块只能用于非商业用途,可供学习和试用。iLLD库是英飞凌为TC2XX和TC3XX Tricore系列单片机提供的底层驱动库,有完善的使用手册,和较好的移植性。 可从下面的链接获取软件安装包,软件安装好后,新建工程时会自

weixin_42967006的博客 2290

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Zookeeper的核心原理

1.背景介绍 Zookeeper是一个开源的分布式协调服务,用于构建分布式应用程序和服务的可靠性和可用性。它提供了一种可靠的、高性能的分布式协同服务,以实现分布式应用程序和服务的一致性、可用性和可靠性。Zookeeper的核心原理是基于一种称为Zab协议的分布式一致性算法。 Zookeeper的核心原理可以分为以下几个部分: 背景介绍 核心概念与联系 核心算法原理和具体操作步骤以及数学模型...

AI天才研究院 1195

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

zookeeper核心原理

zookeeper名字由来 其名字汉译为动物管理员,因为Hadoop,Hbase,Hive等大数据技术的图标都是动物,而zookeeper作为Hadoop,Hbase集群的协调者来讲,像是一个动物园的管理员。 zookeeper选举机制 zookeeper启动后,分为两阶段①数据恢复阶段②选举阶段。 在第①阶段中会读取事物id,在第②阶段中根据选举协议来确定leader。 选举协议中有三个重要的概念: a.事物id b.选举id(配置文件中的myid) c.过半性原则(得到的选票超过半数,除

chuixue24的博客 8683

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Zookeeper原理与核心深入剖析

尽管拜占庭的“幽灵”很难处理,但在实际工作应用中, 却并不需要过分去考虑它,因为对于大多数系统来说,内部环境里,硬件故障导致消息错误的概率本身就很低,还要按照拜占庭叛徒的策略来处理故障就更为困难了。3.如果N大于该Acceptor已经响应过的所有请求的编号,那么它就会将它已经接受过(已经经 过第二阶段accept的提案)的编号最大的提案作为响应反馈给Proposer,如果还没有的accept提案的话返回{pok,null,null}空信息,同时该Acceptor承诺不再接受任何编号小于N的提案。

秃了也弱了 2725

java zookeeper 主从热备_zookeeper 核心原理

zookeeper 核心原理1、了解zookeeper的设计2、zookeeper集群角色3、深入分析ZAB协议4、从源码层面分析leader选举的实现过程5、关于zookeeper的数据存储6、关于zookeeper数据存储zookeeper 的由来zookeeper的设计防止单点故障集群方案(leader、follower)、还能分担请求每个节点的数据是一致的leader、master、red...

weixin_39988930的博客 365

ZooKeeper核心原理与实战应用

ZooKeeper作为一个高效的分布式协调服务,其核心价值在于解决分布式环境下多个进程间的同步控制问题。在微服务架构和分布式系统日益普及的当下,进程间数据一致性、资源争用等问题愈发突出。ZooKeeper通过其精心设计的数据模型和协议机制,为分布式锁、配置管理、命名服务等场景提供了可靠的基础设施支持。

weixin_39016831的博客 437

【Java核心能力】一篇文章了解 ZooKeeper 底层运行原理

该文章主要说一下 ZooKeeper 底层运行原理,以及其中比较核心的功能 CAP 是分布式系统中的基本理论,一般只能满足 AP 和 CP,常用的注册中心 ZK 和 Nacos: ZooKeeper 符合 CP ,选择了一致性而抛弃了部分可用性 ,因为 ZK 集群中只有 Leader 节点可以写数据,如果 Leader 挂了,需要重新选举 Leader,在这期间 ZK 集群不可用,ZK 只有 Leader 可以写,所以整个写入操作是 中心化 的 Nacos 符合 AP ,选择了可用性并且满足最终一致性

qq_45260619的博客 1498

Zookeeper核心原理解析

前言 上一篇:《分布式一致性最强算法之Paxos透析》 我们对于一致性算法有一定的了解,今天我们来一起学习一下Zookeeper的基础概念与核心原理,以及根据其核心原理去解决一些常见的分布式问题。 ❝ 比如分布式锁、数据发布与订阅、命名服务、配置中心、注册中心等。 ❞ 本文主要对以下问题进行介绍: zookeeper的基础信息概述。 zookeeper的核心原理是什么? ...

chengzi12345的博客 520

深入了解Zookeeper核心原理

之前的文章Zookeeper基础原理&应用场景详解中将Zookeeper的基本原理及其应用场景做了一个详细的介绍,虽然介绍了其底层的存储原理、如何使用Zookeeper来实现分布式锁。但是我认为这样也仅仅只是了解了Zookeeper的一点皮毛而已。所以这篇文章就给大家详细聊聊Zookeeper的核心底层原理。不太熟悉Zookeeper的可以回过头去看看。 ZNode优惠券平台 https://m.cqfenfa.com/ 这个应该算是Zookeeper中的基础,数据存储的最小单元。在Zookeep.

nidongla的博客 148

hadoop系列:zookeeper(2)——zookeeper核心原理(选举)

1、前述 上篇文章《hadoop系列:zookeeper(1)——zookeeper单点和集群安装》(http://blo...

1218
上一篇: ZooKeeper入门指南
下一篇: zookeeper集群配置实战
留白1108
博客等级 码龄11年 45粉丝 152原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值