Java架构师笔记-ZooKeeper到底是什么?

从零上手HiAgent:构建能听懂指令的智能体框架实战指南 智能体(Agent)作为人工智能领域的重要范式,正从传统的预设流程自动化转向以目标驱动的自主规划与执行。其核心原理在于利用大语言模型(LLM)作为决策大脑,通过任务规划、工具调用与记忆机制,将模糊的自然语言指令转化为可执行的工作流。这一技术显著提升了人机协作的效率和自然度,其价值在自动化办公、数据分析与智能流程编排等场景中尤为突出。本文聚焦于HiAgent这一具体框架,深入解析其作为智能体开发平台的核心架构,涵盖规划器、执行器、工具集等关键组件,并提供从环境配置、自定义工具开发到复杂任务链构建的完整工程实践 阅读详情

在传统的集群应用中,每个节点(服务器)的职责或功能都是一样的。而在ZooKeeper的集群中,分为三个角色,而且是各尽其责、相辅相成的。因为每个角色的职责不一样,所以就需要选举出一个Leader,作为ZooKeeper集群的领导者,负责对分布式系统全局的写操作,Leader选举是保证分布式数据一致性的关键所在。

角色

  • Leader 领导者
  • Follower 跟随者
  • Observer 观察者

Leader 领导者:

  1. 正常情况下只存在一个。
  2. 事务请求的唯一处理者,保证集群中事务处理的顺序性。

Follower 跟随着:

  1. 可以存在多个。
  2. 负责集群中的读请求,将事务请求转发给Leader处理。
  3. 参与Leader选举。

Observer 观察者:

  1. 可以存在多个或不存在。
  2. 与Follower的唯一区别在于不能参与Leader的选举。
  3. Observer的存在是为了不影响写性能的同时提高系统的吞吐量。

Leader选举的过程就是确定ZooKeeper角色的过程。当ZooKeeper未确定角色或处于选举过程中时,是不能对外提供服务的,服务器启动后会立即进入Leader选举,整个选举过程只会选出一个Leader,其余的会成为Follower,后面加入进来的ZooKeeper会成为Observer。ZooKeeper每个角色职责虽然不同,但是每个角色都会保存一份数据,并且这份数据是全局一致的。

 

 

 

状态

ZooKeeper在服务器中,会存在四种状态。分别是LOOKING,LEADING,FOLLOWING,OBSERVING。

  • LOOKING 寻找状态 说明当前集群中没有Leader,需要进行Leader选举。
  • LEADING 领导状态 说明当前服务器ZooKeeper是Leader。
  • FOLLOWING 跟随状态 说明当前服务器ZooKeeper是Follower。
  • OBSERVING 观察状态 说明当前服务器ZooKeeper是Observer。

Leader选举发生的场景

  • 服务器启动时,需要进行Leader选举。
  • 服务器运行时,现有的Leader宕机或发生故障无法正常连接,需要重新进行Leader选举。

投票数据包

在Leader选举的过程中,每个参与投票的ZooKeeper会将自己的投票结果以广播的方式推送给其他参与者,推送的数据包包含一下数据:

  • myid:所推举的Leader的SID(服务器ID)。
  • zxid:事务ID (上篇文章已介绍)。
  • electionEpoch:逻辑时钟,用来判断多个投票是否在同一轮选举周期中,该值在服务端是一个自增序列,每次进入新一轮的投票后,都会对该值进行加1操作。
  • peerEpoch:被推举的Leader的Epoch,用于标记事务请求所属的轮次,如果不属于本次Leader选举的事务请求直接拒绝。
  • state:当前服务器的状态。

myid和zxid是决定投票结果的关键参数,使用(myid, zxid)来表示。ZooKeeper会优先比较zxid的只值,如果zxid的值相等则再比较myid的值, 数值越大在选举算法中的权重越大。

Leader选举过程

集群中,ZooKeeper至少要部署两台机器才能进行Leader选举,当所有集群的ZooKeeper都启动后,服务器间会进行通讯,每台机器都试图寻找Leader,此时ZooKeeper的状态都是LOOKING,由于此时还没有Leader,ZooKeeper会进入Leader投票选举过程:

假若现在有三台服务器Server1,Server2,Server3,他们的票分别为(1,3),(2,3),(3,2)。

  1. 第一轮投票:每台机器都会把票投给自己,推选自己为Leader,即Server1投票为(1,3),Server2投票为(2,3),Server2投票为(3,2),各个服务器会把自己的投票结果通知其他机器。
  2. 变更投票:收到其他机器的投票后,每台机器会根据一定规则来处理收到的其他机器的投票,并以此来决定是否需要变更自己的投票,这个规则也是整个Leader选举算法的核心所在。算法大致规则如下:
  • 如果收到的zxid大于自己的zxid,就认可收到的投票,把自己的票改为收到的票,并再次将该票发送出去。
  • 如果收到的zxid小于自己的zxid,那么坚持自己的投票,继续推选自己为Leader。
  • 如果收到的zxid等于自己的zxid,那么就对比两者的myid,如果收到的myid大于自己myid,那么就认可当前收到的票,并再次将该投票发送出去。
  • 如果收到的zxid等于自己的zxid,并且收到的myid小于自己myid,那么坚持自己的投票,继续推选自己为Leader。
  1. 确定Leader:每一轮投票结束,ZooKeeper都会进行票数统计,如果有一台机器收到了超过半数的相同的投票,那么这个投票对应的SID机器即会成为Leader。显示,上面机器中,Server2将成为Leader。

由上面规则可知,通常那台服务器上的数据越新(ZXID会越大),其成为Leader的可能性越大,也就越能够保证数据的恢复。如果ZXID相同,则myid越大机会越大。

ZooKeeper集群的数目最好为奇数

  • Leader选举采用Paxos算法,Paxos核心思想是当多数Server写成功,则任务数据写成功。如果有3个Server,则两个写成功即可;如果有4或5个Server,则三个写成功即可。
  • Server数目一般为奇数(3、5、7)如果有3个Server,则最多允许1个Server挂掉;如果有4个Server,则同样最多允许1个Server挂掉。

由此,我们看出3台服务器和4台服务器的的容灾能力是一样的,所以为了节省服务器资源,一般建议采用奇数个数部署。

Python爬虫实战:如何抓取POI信息(公共场所)位置信息 获取公共场所的信息:如餐厅、商店、医院、景点等。抓取POI的基本信息:如名称、类别、地址、评分等。获取POI的地理坐标:经度和纬度信息。存储POI数据:将抓取到的POI信息存储到本地数据库中。通过本篇文章,我们详细介绍了如何使用Python爬虫抓取POI信息。通过Google Maps API和OpenStreetMap(Overpass API),我们展示了如何获取餐厅、商店、医院等公共场所的位置信息,并进一步探讨了如何处理分页、存储数据以及反爬虫策略。 阅读详情

相关推荐

Raid5损坏两块盘

  以下为浪潮Inspur NF5460M4型号服务器故障处理过程: 设备raid5组损坏两块硬,并raid组处理离线状态,情况如图:     由于硬盘数据比较重要,面对此情况不要慌我们尽量做到安全保守的保证数据尽可能完整,以下为处理方法,(遇raid5两块盘出现问题处理方法)   以下截图均为遇相同问题的解决图案,并非现场截图。 Ctrl+H 进WebBios界面,发现两...

chen_lipeng的博客 2万+

什么是myid、ZXID编号?

在ZAB协议中,每个事务都有一个编号ZXID,ZXID由两部分组成,高32位是epoch,低32位为递增计数器。 epoch:选举周期,也就是每换一次Leader,epoch的值加一; 计数器:随事务的到来每次加一,每当换一次Leader,计数器会清零,从零开始加; myid: 当我们搭建zookeeper的集群时,我们需要手动创建一个myid的文件,这个文件里面我们随便写入一个数字,但zk集群里面每个节点的数字都不能相同,在Leader的选举时会用到ZXID和myid。

m0_51697147的博客 2960

RK3588 EVB开发板原理图讲解【六】

该原理图展示了eMMC Flash与主控芯片之间的连接关系,以及相关的电源、信号线路和去耦电容等。

weixin_48721556的博客 1178

Zookeeper选举机制(myid,zxid)

初始化 当启动初始化集群的时候,server1的myid为1,zxid为0 server2的myid为2,zxid同样是0,以此类推。此种情况下zxid都是为0。先比较zxid,再比较myid 1.服务器1启动,给自己投票,然后发投票信息,由于其它机器还没有启动所以它收不到反馈信息,服务器1的状态一直属于Looking(选举状态)。 2.服务器2启动,给自己投票,同时与之前启动的服务器1交换结果,由于服务器2的myid大所以服务器2胜出,但此时投票数没有大于半数,所以两个服务器的状态依然是LOOKIN.

秀发去无踪,代码更出众 7147

rk3568 RGMII KSZ8795 MAC TO MAC

参考《Rockchip_Developer_Guide_Linux_MAC_TO_MAC_CN.pdf》

明天乌儿会歌唱 6496

ADS2019学习笔记:三、SPICE model导入

以BZX84-C33 SPICE model为例,学习如何在ADS2019中导入SPICE model。

qq_42945911的博客 6495

JAVA面试题分享一百六十七:Zookeeper选举机制?主节点故障,如何重新选?

​​ 参考 ​​Paxos​​算法,专门设计了一种支持崩溃恢复的原子广播协议 ​​Zab​​(​​),​​Leader​​选举是其核心思想,也是保证​​数据一致性的关键所在。熟悉 ​​Leader​​​ 选举的底层理论,可以很好的应对集群的迁移和扩缩容。​​​ 在Leader选举期间和正常服务个数不过半数都无法对外提供服务,并且会丢弃一些未完成的事务,以保证数据一致,所以它是​​CP​​​,即保证数据一致性(​​​)和分区容错性(​​​),但不保证可用性(​​)。​​Leader​​​选举,先比较​。

之乎者也·的博客 1266

【DSP】【工程实战】从零构建C6678多核工程:CCS环境配置与启动模式详解

本文详细介绍了在CCS开发环境中从零构建TMS320C6678多核DSP工程的完整流程。内容涵盖KeyStone架构解析、工程创建、基础代码编写、链接命令文件配置、仿真器调试,并重点深入讲解了包括I2C EEPROM在内的多种一级启动模式原理与配置方法,为开发者提供了一套清晰、可复用的实战指南。

weixin_29164185的博客 420

Zookeeper详解

Zookeeper详解 一、 zookeeper是什么 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务 具体介绍可以看官方网站:https://zookeeper.apache.org/ 二、 zookeeper能做什么 1、 配置维护:在分布式系统中,一般会把服务部署到n台机器上,服务配置文件都是相同的,如果配置文件的配置选项发生了改变,那我们就得一台一

走在大数据的边缘 502

LIN总线CAPL函数实战——动态控制报文发送(linDeactivateSlot与linActivateSlot)

本文深入解析了LIN总线测试中动态控制报文发送的核心CAPL函数linDeactivateSlot与linActivateSlot的实战应用。通过详细拆解函数参数、生效范围及限制,并结合故障注入、功耗测试等实际场景的代码示例,指导测试工程师在仿真LIN主节点时,灵活调度报文发送,实现高效自动化测试。

weixin_29255731的博客 349

PCI Express 权威指南:从协议原理到芯片实现

目录 全文总览第一部分:PCIe体系结构概览第1章 互连技术的演进与PCIe的诞生1.1 从ISA到PCI:并行总线的辉煌与瓶颈1.2 PCI-X的尝试与局限1.3 串行革命:从AGP、PCI到PCIe的范式转移1.4 PCIe的核心优势第2章 PCIe系统全局视角2.1 系统拓扑:Root Complex, Switch, Endpoint的职能与关系2.2 拓扑结构实例:服务器、工作站、嵌入式系统2.3 枚举与配置:系统如何发现和组织PCIe设备2.4 地址空间第3章 PCIe协议分层架构3.1 分层模

qq_42882296的博客 2895

理解zookeeper选举机制

原文转自:https://www.cnblogs.com/ASPNET2008/p/6421571.html https://blog.youkuaiyun.com/cnh294141800/article/details/52959028/ http://blog.itpub.net/30109892/viewspace-2089610...

weixin_30274627的博客 393

V90伺服 EPOS模式下回原(详细配置+SCL源代码)

/ 输出上限 100.0%rSetPoint : Real;// 设置目标值工程量。// 通道转换参考值。Td : Real;

RXXW_Dor的博客 2666

新大陆!阿里 P9 整理出:Java 架构师“成长笔记”共计 23 版块

阿里巴巴一位 P9 级架构师总结出的共计 23 版块的 Java 架构师“成长笔记”,一经发布就受到了众多 Java 程序员的追捧,这份“成长笔记”涵盖了:Java 基础、JVM、多线程与高并发、Spring 源码解析、Spring Boot、Spring Cloud、微服务、Netty、RPC、网络、ZooKeeper、消息中间件、设计模式、负载均衡、数据结构与算法、分布式缓存等等内容!

m0_73311735的博客 217

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

啃透这份 java 高级工程师面试 1000 题,还怕跟面试官对线吗?

4 月份利用空余时间收集整理了一份《java 高级工程师面试 1000 题》和《java 架构师学习书籍笔记大全》,初衷也很简单,就是希望在面试复习的时候能够帮助到大家,减轻大家的负担和节省时间。 前几天定了初稿,朋友圈分享了一波,收到了很多建议,因此重新改进,写了个二稿,重新分享。 废话不多说,《java 高级工程师面试 1000 题》目前涵盖了:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、Spring

m0_50180963的博客 371

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

新大陆!阿里P9整理出:Java架构师“成长笔记”共计23版块

阿里巴巴一位P9级架构师总结出的共计23版块的Java架构师“成长笔记”,一经发布就受到了众多Java程序员同学的追捧,这份“成长笔记”涵盖了:Java基础、JVM、多线程与高并发、Spring源码解析、Spring Boot、Spring Cloud、微服务、Netty、RPC、网络、ZooKeeper、消息中间件、设计模式、负载均衡、数据结构与算法、分布式缓存等等内容! 由于这份“成长笔记”的内容过多,楼主将会通过“每个模块讲了哪些知识点”+部分内容截图方式为大家展示,完整版已经为大家整合成PDF格式

Java0258的博客 321

VC中sqlite的使用

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

Java架构师8年开发笔记整理汇总

为啥要分享? 在写代码的路上,我们都遇到过很多的艰难险阻,遇到过很多自己没有办法解决的问题,接受过别人的帮助,到现在既然有这个能力了,我也想去帮助他人! Java架构师 应该算是一些Java程序员们的一个职业目标了吧。很多码农码了五六年的代码也没能成为架构师。那成为Java架构师要掌握哪些技术呢,总体来说呢,有两方面,一个是基础技术,另一个就是组织能力和提出解决方案能力了。我就跟大家来简要地说说吧。 如果你是想成为Java架构师,那么你首先要是一个Java高级攻城狮。也就是说,基础必须牢固,对Ja.

Java0258的博客 232

java面试难吗_银四30天,苦心啃透java高级工程师面试1000题,涨薪10K很难吗?

3月份利用空余时间收集整理了一份《java高级工程师面试1000题》和《java架构师学习书籍笔记大全》,初衷也很简单,就是希望在面试复习的时候能够帮助到大家,减轻大家的负担和节省时间。前几天定了初稿,朋友圈分享了一波,收到了很多建议,因此重新改进,写了个二稿,重新分享。废话不多说,《java高级工程师面试1000题》目前涵盖了:Java、MyBatis、ZooKeeper、Dubbo、Elast...

weixin_39642687的博客 137

腾讯资深架构师抛出的“Java架构提升笔记”在B站疯传,GitHub已标星80k!

前言 “马云”,中国首富之一,提起马云和淘宝大家首先想到的肯定就是“阿里巴巴”,Alibaba旗下有蚂蚁金服、支付宝、阿里云、阿里软件等等知名子公司,形成了一个庞大的商业帝国。这么庞大的商业帝国除了优秀的管理,技术的重要性肯定少不了的,毕竟Alibaba可以说是突显中国程序员最高水平的典范。 就在前段时间,腾讯资深架构师抛出的“Java架构技术提升笔记”,以多维度、全新展示及其超高专业度的突出特点,迅速在B站疯传,且GitHub已标星80k。 知道你们懒得整理,我已经为大家整理好了,如果你想要提升自

bieber007的博客 189

花了两个月肝完美团架构师总结整理的这份《Java面试复习笔记》我成功拿到了阿里P6级offer

Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架。是由于软件开发的复杂性而创建的,它使用基本的JavaBean代替EJB,并提供了更多的企业应用功能,适用于任何Java微服务架构现在是一项在云中部署应用和服务的新技术。大部分围绕微服务的争论都集中在容器或其他技术是否能很好的实施微服务。网络通信这一块建议结合视频资料看更容易理解ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。

afsdfrsg的博客 851

银四30天,苦心啃透java高级工程师面试1000题,涨薪10K很难吗?

3月份利用空余时间收集整理了一份《java高级工程师面试1000题》和《java架构师学习书籍笔记大全》,初衷也很简单,就是希望在面试复习的时候能够帮助到大家,减轻大家的负担和节省时间。 前几天定了初稿,朋友圈分享了一波,收到了很多建议,因此重新改进,写了个二稿,重新分享。 废话不多说,《java高级工程师面试1000题》目前涵盖了:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、Spring Boot、..

m0_50180963的博客 148

后端JAVA面试太难,吃透这份JAVA架构面试笔记后,成功跳槽涨薪18K

昨天跟一位高级架构师的前辈聊天时,聊到今年的面试。有两个感受,一个是今年面邀的次数比往年要低不少,再一个就是很多面试者准备明显不足。不少候选人能力其实不差,进入团队干活后达到期望不难,但由于没准备或不会表达,就是无法通过面试。从Boss直聘上看到,Java开发岗大厂的薪资已经达到20-30K/月。关键是互联网岗位对专业的限制很小,未来的发展前景与涨薪空间都非常大。那么,到底该如何准备高级开发、P6+ 级别的面试呢?

m0_71777195的博客 168

B站疯传、GitHub标星80k!阿里限量“Java架构技术提升笔记”,堪称惊艳!

前言 “马云”,中国首富之一,提起马云和淘宝大家肯定首先想到的就是“阿里巴巴”,Alibaba旗下有蚂蚁金服、支付宝、阿里云、阿里软件等等知名子公司,形成了一个庞大的商业帝国。这么庞大的商业帝国除了优秀的管理,技术的重要性肯定少不了的,毕竟Alibaba可以说是突显中国程序员最高水平的典范。 就在前段时间,阿里资深架构师抛出的“Java架构技术提升笔记”,以多维度、全新展示及其超高专业度的突出特点,迅速在B站疯传,且GitHub已标星80k。 知道你们懒得整理,我已经为大家整理好了,如果你想要提升自

weixin_51954021的博客 1962

干货满满,字节跳动架构师爆肝一周整理的面试笔记,现在全部分享给大家!

前言 首先说点鸡汤吧,在校招过程中心态真的很重要,我们可能会遇到简历挂、笔试挂、面试挂等各种各样的问题,一定要调整好心态,不要被网上一些贩卖焦虑的信息影响到,专心去提升自己,找准自己的定位和方向,然后不断坚持下去,一定会有所收获的。祝愿还没上岸的朋友们最终都能收获一份满意的工作!!! 字节一面 上来先是个人介绍和项目经历 1 递归,写一个递归判读字符串是否回文(aba 是回文,abab 不是) 2单链表逆转,写一个吧 3 单链表有环?说说 4 操作系统的东西:进程和线程的关系 5 线程的通信(想让我回答管程

weixin_53170684的博客 521

P8架构师熬夜血书这份“Java架构宝典”万字干货!学习指导+实战笔记+职业规划祝你打开架构师大门

我为什么要写这一篇文章? 这是一篇比较适合有一定Java基础的同学阅读的文章。 我知道关注我的朋友,其实大部分都是有一定的Java基础的,我的粉丝群体比较杂,有在小公司待着的,有些是想转行在自学的,有些就是在外包公司的。 正是因为这样,从而经常有粉丝发私信跟我埋怨:外包公司、小公司没有成长机会只有加不完的班,敲不完的代码,想跳槽奈何自己技术不到家。转行自学的伙伴,学习迷茫不知道怎么学习才是正确的,就很容易放弃。 所以在2021的年初这篇文章就因此诞生了! 首先我们肯定要知道这篇文章到底有什么,献上

bieber007的博客 439

Alibaba师姐晚上偷偷给了我一份阿里P8十年心血999页Java岗核心笔记,助我怒斩蚂蚁offer

笔记作者:来自于阿里P8级架构师 笔记特点:条理清晰,含图像化表示更加易懂。 内容概要:包括 Java 集合、JVM、多线程、并发编程、设计模式、Spring全家桶、Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、MongoDB、Redis、MySQL、RabbitMQ、Kafka、Linux、Netty、Tomcat等大厂面试题等、等技术栈! 由于细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!

javassb的博客 169
上一篇: Java开发必须要掌握的20个核心技术,你掌握了多少?JVM是重点!
下一篇: 程序员抱怨:1万2的工资我真的活不下去了 网友:我3千咋说
程序员林子
博客等级 码龄7年 369粉丝 149原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值