怎么解析zookeeper 原理

技术怎么解析zookeeper 原理今天就跟大家聊聊有关怎么解析zookeeper 原理,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、zookeeper的角色

今天,我将和你谈谈如何分析动物园管理员原则。可能很多人不太了解。为了让大家更好的了解,边肖为大家总结了以下内容。希望你能从这篇文章中有所收获。

00-1010 1.领导):负责发起和决定投票以及更新系统状态。

2.学习者):包括跟随者和观察者。

3.跟随者):用于接受客户端的请求并将结果返回给客户端,并在选择所有者的过程中参与投票。

4.观察者):可以接受客户端连接并将写请求转发给领导者,但是观察者不参与投票过程,只同步领导者的状态。观察者的目的是扩展系统,提高阅读速度。

5.客户端):请求启动器。

怎么解析zookeeper  原理

一、zookeeper的角色

Zookeeper的核心是原子广播,保证了Server之间的同步。实现这种机制的协议称为Zab协议。Zab协议有两种模式,分别是回复模式(主选择)和广播模式(同步)。当服务启动或领导者崩溃时,Zab进入恢复模式。当领导者当选且大多数服务器已完成与领导者的状态同步时,恢复模式结束。状态同步确保领导者和服务器具有相同的系统状态。

为了保证交易的顺序一致性,zookeeper使用递增的交易id号(zxid)来标识交易。所有建议在提出时都加上了zxid。在实现中,zxid是64位数字,其高32位是用于识别领导者关系是否已经改变的时期。每次选出一个领袖,都会有一个新的纪元,表明当前属于哪个领袖的统治时期。低32位用于向上计数。

每个服务器工作过程中有三种状态:

查找:当前服务器不知道谁是领导者,正在搜索。

领先:当前服务器是选定的领先。

以下:领导已当选,当前服务器与其同步。

怎么解析zookeeper  原理

假设有一个Zookeeper集群,由5台服务器组成,它们的id从1到5不等,都是新启动的,也就是没有历史数据,就存储的数据量来说是一样的。让我们假设这些服务器按顺序启动,看看会发生什么,如图所示。

1.服务器1启动。此时,它只有一台服务器启动,它发出的消息没有响应,所以它的选举状态总是“在看”。

2.服务器2启动,并且它与开始时启动的服务器1通信,以交换它自己的选举结果。因为它们都没有历史数据,所以id值较大的服务器2获胜,但是由于不超过一半的服务器同意投票给它(在这个例子中,超过一半的服务器是3),服务器1和2仍然保持LOOKING。

3.服务器3启动。根据前面的理论分析,服务器3成为服务器1、2和3中的领导者。与上面不同的是,三个服务器在这个时候选举了它,所以它成为了这次选举的领导者。

4.服务器4启动。根据前面的分析,理论上服务器4应该是服务器1、2、3、4中最大的。但是,由于一半以上的服务器已经选了服务器3,所以只能接受弟弟的生活。

5.服务器5启动,就像4一样,做弟弟。

二、选举机制

[ZK :127 . 0 . 0 . 1:2181(CONNECTED)2]get/20181112

你好#数据

Czxid=0x4#创建节点的事务zxid

CTI me=monnov 1215:31336017 CST 2018 #创建时间

mZxid=0x4nbsp

; #最后一次更新的事务zxid
mtime = Mon Nov 12 15:31:17 CST 2018  #最后一次更新时间
pZxid = 0x4  #最后一次更新子节点zxid
cversion = 0  #子节点变化号,znode子节点修改次数
dataVersion = 0 #数据变化版本号
aclVersion = 0  #访问控制列表的变化号
ephemeralOwner = 0x0  #如果是临时节点,这个是znode拥有者的session id。如果不是临时节点则是0。
dataLength = 5  #数据长度
numChildren = 0  #子节点数量

四、节点类型

  • Znode有两种类型,短暂的(ephemeral)和 持久的(persistent)。

  • Znode的类型在创建时确定并且之后不能修改。

  • 短暂Znode的客户端会话结束时,zookeeper会将该短暂znode删除,短暂znode不可以有子节点。

  • 持久Znode不依赖于客户端会话,只有当客户端明确要删除该持有化Znode时才会删除。

  • Znode有四种形式的目录节点

    • PERSISITENT

    • EPHEMERAL

    • PERSISITENT_SEQUENTIAL

    • EPHEMERAL_SEQUENTIAL

五、写数据流程

怎么解析zookeeper 原理

  • 1. Client 向 ZooKeeper 的 Server1 上写数据,发送一个写请求。

  • 2. 如果Server1不是Leader,那么Server1 会把接受到的请求进一步转发给Leader,因为每个ZooKeeper的Server里面有一个是Leader。这个Leader 会将写请求广播给各个Server,比如Server1和Server2,各个Server写成功后就会通知Leader。

  • 3. 当Leader收到大多数 Server 数据写成功了,那么就说明数据写成功了。如果这里三个节点的话,只要有两个节点数据写成功了,那么就认为数据写成功了。写成功之后,Leader会告诉Server1数据写成功了。

  • 4. Server1会进一步通知 Client 数据写成功了,这时就认为整个写操作成功。

六、观察(watcher)

  • Watcher 在 Zookeeper 是一个核心功能,Watcher可以监控目录节点的数据变化以及子目录的变化,一单这些状态发生变化,服务器就会通知所有设置在这个目录节点上的Watcher,从而每个客户端都很快知道它所关注的状态发生变化,而做出相应的反应。

  • 可以设置观察的操作:exists、getChildren、getData

  • 可以出发观察的操作:create、delete、setData

怎么解析zookeeper 原理

监听原理详解:

  • 1. 首先要有一个main()线程

  • 2. 在main线程中创建Zookeeper客户端,这时就会创建两个线程,一个负责网络连接通信(connet),一个负责监听(listener)。

  • 3. 通过connect线程将注册的监听事件发送给Zookeeper。

  • 4. 在Zookeeper的注册监听器列表中将注册的监听事件添加到列表中。

  • 5. Zookeeper监听到有数据或路径变化,就会将这个消息发送给listener线程。

  • 6. listener线程内部调用了process()方法。

看完上述内容,你们对怎么解析zookeeper 原理有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/86837.html

(0)

相关推荐

  • 抖音粉丝哪里买,哪里有专门卖抖音粉丝的

    技术抖音粉丝哪里买,哪里有专门卖抖音粉丝的抖音是否能够刷粉,网站即可刷到粉丝,现如今抖音粉丝是大家比较关注的问题,只要在代刷网刷粉想要多少可以刷多少,粉丝都是活跃粉丝,都是真人粉丝。
    抖音在短视频app中是最大人流量之一

    测评 2021年10月20日
  • html中如何缩小图片(html如何将图片放大)

    技术html如何放大图片这篇文章主要讲解了“html如何放大图片”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“html如何放大图片”吧! 方法

    攻略 2021年12月23日
  • 避免,自媒体视频如何避免侵权

    技术避免,自媒体视频如何避免侵权首先要对于我们自媒体来说,侵权的范围一般来说就是三类避免:视频类,图片类,字体配乐类。独角shou就因为字体侵权被索赔十几万,损失惨重。不过知名度不高的账号的话,一般不会收到音乐字体类的侵

    生活 2021年10月21日
  • 数据库rac脚本(rac里面能创建几个数据库实例)

    技术怎么复制一个RAC CDB数据库本篇内容介绍了“怎么复制一个RAC CDB数据库”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够

    攻略 2021年12月21日
  • 简略讲解OpenWrt的路由配置(单播路由/静态路由、策略路由、IGMP组播路由)

    技术简略讲解OpenWrt的路由配置(单播路由/静态路由、策略路由、IGMP组播路由) 简略讲解OpenWrt的路由配置(单播路由/静态路由、策略路由、IGMP组播路由)一、分类智能路由器上最重要的功能

    礼包 2021年11月5日
  • sql server2012附加数据库问题的解决方法

    技术sql server2012附加数据库问题的解决方法sql server2012附加数据库问题的解决方法,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望

    攻略 2021年12月1日