千家信息网

大数据处理之中Zookeeper

发表于:2025-02-06 作者:千家信息网编辑
千家信息网最后更新 2025年02月06日,大数据处理之中Zookeeper,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Zookkeeper概述是一个分布式协调服
千家信息网最后更新 2025年02月06日大数据处理之中Zookeeper

大数据处理之中Zookeeper,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

Zookkeeper概述

是一个分布式协调服务的开源框架

本质上是一个分布式的小文件存储系统,提供基于类似文件系统的目录树方式的数据存储。

解决的问题:分布式集群中应用系统一致性问题

特性:

数据全局一致

可靠性:消息被一台服务器接收,则可以被其它服务器接收

顺序性:全局有序和偏序两种,消息发布的顺序性

数据更新的原子性:一次性数据更新成功(半数机器/节点以上)

实时性:在一个时间范围内获取服务器的更新信息,或者失效的信息

Zookeeper集群角色

主节点(Leader):1、集群工作的核心,事务请求(写)的唯一调度和处理者,保证集群事务处理的顺序性。2、集群内部各个服务器的调度者

从节点(Follower):1、处理客户端非事务请求。2、转发事务请求给主节点,3、参与集群主节点选举投票

观察者(Observer):1、更新集群最新状态变化并同步这些状态,对非事务请求进行响应,2

将事务请求转发给主节点。3、不参与主节点选举投票,通常用于不影响集群事务处理能力的前提下提升非事务处理的能力,或集群访问量较大的情况下

Zookeeper集群搭建。。。。。

Zookeeper的数据模型:

与标准文件系统相似,采用树形层次结构,树中的节点被称为Znode,每个节点可以拥有子节点

不同:

1、Znode兼具文件和目录两种特点。

2、Znode具有原子性操作

3、存储数据大小有限制。最大是1M

4、Znode通过路径引用。路径唯一

5、序列化特性。创建节点时会在节点名后添加不断增加 的序列号,其对于父节点来说是唯一的,可以辨别节点创建的先后顺序,是一个10位的数字

节点组成:

stat:状态信息、描述其Znode的版本、权限信息等。

data:与该Znode关联的数据

children:该Znode下的子节点

节点类型:临时节点和永久节点

临时节点:不允许存在子节点

创建Znode时有四种选项:永久节点、临时节点、永久序列化节点、临时序列化节点

节点的属性:

dataVersion:数据版本号

cversion:子节点版本号,子节点变化时值+1

acVersion:版本控制号

cZxid:Znode创建事务的ID

mZid:Zode被修改的事务ID,zk每次变化时会产生一个唯一的事务ID(zxid),具有先后顺序

ctim:节点创建时间戳

mtim:节点最近更新时的时间戳

ephemeralOwner:如果此节点时临时节点,则值是与该节点绑定的sessionid,若不是则值为0

节点操作:

客户端链接:zkCli.sh -sever ip

create [-s][-e] path data,s表示永久节点,e表示临时节点

set path data

delete path data

get path

quota:对节点添加限制,setquota [-n|-b] val path,n表示子节点最大个数,b表示数据值最大长度,val子节点最大个数或数据值最大长度,path节点路径

listquota:查看是否设置限制即指定节点的quota,软性限制(输出警告日志)

delquota:delquota [-n|-b] path 删除指定节点的quota

history:列出历史命令

redo:重新执行命令,与hostory结合使用。redo 命令编号

Zookeeper Watcher(数据订阅/发布模式)

使用watcher(监听)机制实现分布式通知功能,Zookeeper允许客户端向服务端注册一个watcher监听,服务端一些事件触发这个watcher时,服务端会向客户端发送一个事件通知来实现分布式通知的功能。

过程:1、客户端向服务端注册一个监听watcher,2、服务端触发注册的watcher,3、客户端回调watcher得到触发事件情况

watcher机制特点:

一次性触发:事件触发监听后,一个watcher event(监听事件)被发送到对应的客户端,这种效果只有一次,后续再次发生同样的事件,不会再次触发

事件封装: 使用WatcherEvent对象封装服务端事件并传递,包含三个属性,通知状态(keeperState)、事件类型(EventType)、节点路径(Path)

event异步发送:

先注册在触发:连接事件不需要先注册,其它的需要事先注册

shell客户端设置监听(Watcher):

get path watch 注册监听事件

Zookeeper Java API(Zookeeper 操作API)

连接操作、Watcher事件操作::

Zookeeper选举机制

默认采用FastLeaderElection算法,采用投票大于把半数胜出大的逻辑

服务器ID:服务器编号,编号越大在算法中权重越大

选举状态:LOOKING --->竞选状态、FOLLOWIING--->随从状态(参与投票)、OBSERVING--->观察状态(不参与投票)、LEADDING--->领导者状态

数据ID:服务器中存放的最新数据的版本version,数据越大说明版本越新、在选举算法中的权重也越大

逻辑时钟: 投票次数,同一轮选举过程中数值时相同的,

全新集群选举(刚搭建的新集群):每台机器给自己投票,票数过半选举结束,服务器ID大的优先级高

非全新集群的选举(集群提供服务一段时间后进行选举):

选举标准:1、逻辑时钟小的选举结果被忽略,重新投票。2、统一逻辑时钟、数据ID大的胜出。3、数据ID相同的服务器ID大的胜出。

Zookeeper典型应用:

数据发布与订阅(配置中心):

1、小型数据。

2、获取数据的同时还要设置监听,拿到数据后再次设置监听保证监听时刻有效

命名服务:由于Zookeeper节点路径的全局唯一性,对提供服务的对象进行命名,客户端通过应用名字可以获取对应的资源和服务地址,提供者等信息,,如:dubbo将提供的服务地址存储到zk上,映射到对应的服务名称,维护全局的服务地址列表

分布式锁:由于其数据的一致性,锁服务分为:保持独占、控制时序

保持独占:单例锁。将zk的节点看作一把锁,所有的客户端到指定的目录创建节点,同通过创建非序列化的临时节点实现独占性

控制时序:按顺序访问,如队列。同过将zk节点看作一把锁,但这次创建的是序列化临时节点,从而实现全局的时序性

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

0