温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

大数据处理之中Zookeeper

发布时间:2021-12-24 10:11:19 来源:亿速云 阅读:139 作者:柒染 栏目:大数据

大数据处理之中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下的子节点

    大数据处理之中Zookeeper

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

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

    创建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

大数据处理之中Zookeeper

Zookeeper选举机制

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

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

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

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

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

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

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

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

Zookeeper典型应用:

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

        1、小型数据。

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

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

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

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

        大数据处理之中Zookeeper

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

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

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI