zookeeper知识点总结

Zookeeper是一款分布式协调服务框架,主要用于命名服务、配置管理、集群管理和分布式锁等功能。它通过Znode树结构存储数据,支持多种节点类型,如持久化节点、临时节点等。Zookeeper采用ZAB协议实现数据一致性,确保顺序一致性、原子性和单一系统映像。

什么是Zookeeper?

Zookeeper是用于分布式协调和管理的框架,zookeeper的目的就是封装好容易出错复杂的关键服务,将功能稳定的系统提供给用户。

Zookeeper的职责

1.    
命名服务:是指通过指定名字来获取资源或服务器的地址,;利用zookeeper创建一个全局的路径,也就是你唯一的路径,这个路径可以作为一个名字去指向集群中的集群,服务地址,或者是一个远程对象。

2.    
配置管理:程序分配在不同电脑上,讲程序的配置信息放在zookeeper的znode上,当有配置发生改变时。可以通知zookeeper的某个znode发生改变,利用watcher,通知给各个客户端,从而更改配置信息。

3.    
集群管理:是否有机器退出和加入,选举master,对于机器的退出,所有机器约定在父目录 下创建临时目录,对于新机器的加入,所有机器创建临时顺序编号目录节点。

4.    
分布式锁:分为俩类,一个是独占锁,另一个是共享锁,独占锁一次只能给一个线程使用,读写锁是一个写,多个读。

Zookeeper的安装方式

单机模式:在一个节点上安装,往往只能启动框架上的一部分服务

伪分布式:在一个节点上安装,去模拟集群环境,往往能启动框架大部分服务或者全服务。

完全分布式:在分布式环境安装,能启动框架全部服务。

Zookeeper的特点:

Zookeeper本身是一个Znode树,根节点是/,每一个节点都叫做Znode,任何一个节点的路径都是唯一的。任何一个持久节点都可以挂载子节点。Znode树在磁盘和内存中,磁盘为了持久储存,内存为了读写快。Zookeeper把每一个写操作看成一个事务,为事务分配一个编号,为Zxid

Zookeeper节点类型:持久化节点,临时节点,持久化顺序节点,临时顺序节点。

Znode默认大小是1m

Watcher机制:(会在znode上建立一个wacther,当znode发生改变时候,这些client会收到zk的通知,然后对应做出业务的改变,)一次性触发数据改变时;一个watch event会被发送到client,但是client只会接受一次这样的消息。因为server到client是异步的,由于网络的原因导致客户端不能同时刻监听到事件Zookeeper只能保证最终一致性,而不能保证强一致性,,数据监视是由getData和exists方法,getchildren监视子节点,

注册watcher getDa  exists getchildren

触发watcher
create delete setData

Zookeeper集群选举方式leader:

每一个zookeeper都会去参加选举,并且每一个都会推荐自己为leader,将自己的的选举信息发送给其他节点进行比较,如果比较失败就会成为follower,如果比较成功继续参加选举,直到选举出leader,其他的节点成为follower。

选举信息包括:

当前节点的最大事务id,自己的myid,控制选举轮数。。

先比最大事务id,谁大谁赢,事务id一样比较myid,谁大谁赢。一个节点要想成为leader就必须胜过一半的节点,过半性。如果一个集群已经选出了leader,剩下节点都会成为follower。

Zookeeper不存在单点故障,当zookeeper一个节点宕机,会选举出另一个leader,所有zookeeper不存在单点故障。

Zookeeper的节点个数是奇数过。

在zookeeper中当节点个数存活不到一半时,该集群不对外提供服务。

Zookeeper的脑裂。

一个集群由于环境因数网络波动产生了俩个leader  这种现象就是脑裂,

Zookeeper是怎么解决脑裂的:

它会对zookeeper每次选举的leader分配一个全局递增的epochid,当出现多个leader时 会保留最新的epochid,并且杀死其他leader。

Zookeeper节点的状态:

voting/looking

  • 选举状态

follower

  • 追随者/跟随者

leader

  • 领导者

observer

  • 观察者

观察者:一个节点一旦被视为观察者,就不参加任何选举投票,但是会对选举投票的监听。一般在集群中90的节点都会设置为观察者,会提高选举效率,在一个集群中,观察者是否存活不影响集群的操作

ZAB协议:

ZAB协议是一套专门为zookeeper进行崩溃恢复和原子广播的协议。它是基于2PC算法,利用了    Paxos进行了改进。

原子广播:用2PC算法,二阶段提交,核心思想就是一票否决。

请求阶段,当协调者受到请求后会发给每一个参与者,等待参与者的恢复。

提交阶段:如果每一个参与者都发送的yes,那么协调者要求所有的参与者执行请求,

终止阶段:如果协调者收到只有一个不是yes的那么会认为这个请求不能执行,并且要求每个参与者删除这个请求。

Zookeeper的数据一致性包括

顺序一致性。原子性。单一的系统映像,持久性。

原子广播的流程:原子广播是为了数据的一致性

当leader收到一个请求后,他会记录到本地的日志文件中,如果记录成功,那么就认为该请求可执行,那么会放到队列发送给每一个follower,follower收到以后也会在本地日志文件中记录,记录成功返回leader一个yes,否则返回no,当有一半返回yes时候就执行请求,否则不执行,那么要求所有follower删除这个请求。

如果leader就要执行这个请求:

那么follower会向leader发送信息,要求重新获取刚才的操作,如果因为磁盘满了,日志记录失败,那么leader就和follower频繁的发送信息。

崩溃恢复:当一个集群的leader丢失后,会自动选一个新leader,

当一个节点重新启动时候,

当旧的节点重新启动时候,会找到自己的最大事务id 请求leader判断最大事务id是否一致,如果一致那么说明,在此期间没有进行操作。如果不一致他会请求leader,leader会把中途的操作放在队列里发送给这个节点,让这个节点补齐,在此期间
,该节点不对外进行服务。

内容概要:本文详细介绍了一个基于C++的养老院管理系统的设计与实现,旨在应对人口老龄化带来的管理挑战。系统通过整合住户档案、健康监测、护理计划、任务调度等核心功能,构建了从数据采集、清洗、AI风险预测到服务调度与可视化的完整技术架构。采用C++高性能服务端结合消息队列、规则引擎和机器学习模型,实现了健康状态实时监控、智能任务分配、异常告警推送等功能,并解决了多源数据整合、权限安全、老旧硬件兼容等实际问题。系统支持模块化扩展与流程自定义,提升了养老服务效率、医护协同水平和住户安全保障,同时为运营决策提供数据支持。文中还提供了关键模块的代码示例,如健康指数算法、任务调度器和日志记录组件。; 适合人群:具备C++编程基础,从事软件开发或系统设计工作1-3年的研发人员,尤其是关注智慧养老、医疗信息系统开发的技术人员。; 使用场景及目标:①学习如何在真实项目中应用C++构建高性能、可扩展的管理系统;②掌握多源数据整合、实时健康监控、任务调度与权限控制等复杂业务的技术实现方案;③了解AI模型在养老场景中的落地方式及系统架构设计思路。; 阅读建议:此资源不仅包含系统架构与模型描述,还附有核心代码片段,建议结合整体设计逻辑深入理解各模块之间的协同机制,并可通过重构或扩展代码来加深对系统工程实践的掌握。
内容概要:本文详细介绍了一个基于C++的城市交通流量数据可视化分析系统的设计与实现。系统涵盖数据采集与预处理、存储与管理、分析建模、可视化展示、系统集成扩展以及数据安全与隐私保护六大核心模块。通过多源异构数据融合、高效存储检索、实时处理分析、高交互性可视化界面及模块化架构设计,实现了对城市交通流量的实时监控、历史趋势分析与智能决策支持。文中还提供了关键模块的C++代码示例,如数据采集、清洗、CSV读写、流量统计、异常检测及基于SFML的柱状图绘制,增强了系统的可实现性与实用性。; 适合人群:具备C++编程基础,熟悉数据结构与算法,有一定项目开发经验的高校学生、研究人员及从事智能交通系统开发的工程师;适合对大数据处理、可视化技术和智慧城市应用感兴趣的技术人员。; 使用场景及目标:①应用于城市交通管理部门,实现交通流量实时监测与拥堵预警;②为市民出行提供路径优化建议;③支持交通政策制定与信号灯配时优化;④作为智慧城市建设中的智能交通子系统,实现与其他城市系统的数据协同。; 阅读建议:建议结合文中代码示例搭建开发环境进行实践,重点关注多线程数据采集、异常检测算法与可视化实现细节;可进一步扩展机器学习模型用于流量预测,并集成真实交通数据源进行系统验证。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值