大数据开发之zookeeper知识点总结

本文深入解析Zookeeper,一个开源的分布式协调服务,适用于集群管理和数据发布订阅等场景。文章阐述了Zookeeper的安装部署、数据结构、选举机制及监听器原理,帮助读者全面理解其工作流程。

ZOOKEEPER

 

 

       一、概述

           是一个开源的分布式的,为分布式应用提供协调服务的Apache项目

           基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据发送变化,zookeeper就将负责通知注册的观察者做出相应的反应,从而实现集群中类似Master/Slave管理模式

           Zookeeper = 文件系统 + 通知机制

 

 

       二、应用场景

           提供的服务包括:

                 1、分布式消息和协调机制

                 2、服务器节点动态上下线

                 3、统一配置管理

                 4、负载均衡

                 5、集群管理

           场景:

                 1、数据发布与订阅

                 2、软负载均衡

                 3、集群管理

 

 

       三、本地模式安装部署

           配置:

                 将zoo_sample.cfg改成zoo.cfg

                 修改dataDir路径为zookeeper-3.4.10/data/zkData

                 创建zkData文件夹

           参数解读:

                 tickTime

                      通信心跳数(默认2000,即2秒)

                 initLimit

                      LF初始通信时限(默认10心跳数)

                 syncLimit

                      LF同步通信时限(默认5心跳数)

                 dataDir

                      数据文件目录+数据持久化路径

                 ClientPort

                      客户端连接端口2181

           分布式安装部署在本地基础上:

                 zoo.cfg加配置

                      server.1=hadoop001:2888:3888

                 dataDir下配置一个文件myid

 

 

       四、数据结构

           数据模型的结构与Unix文件系统很类似,整体上可以看做是一棵树,每个节点称作一个ZNode

           很显然zookeeper集群自身维护了一套数据结构。这个存储结构是一个树形结构,其上的每一个节点,我们称之为“znode”,每一个znode默认能够存储1MB的数据,每个ZNode都可以通过其路径唯一标识

       五、选举机制

           1、半数机制

                 集群中半数以上机器存活,集群可用。所以zookeeper适合装在奇数台机器上

           2、虽然在配置文件中没有指定master和slave,但是在工作时,是有一个节点为leader,其他的则为follower,leader是通过内部的选举机制临时产生的

       六、特点

           1、zookeeper:一个领导者(leader),多个跟随者(follower)组成的集群

           2、leader负责进行投票的发起和决议,更新系统状态

           3、follower用于接收客户请求并向客户端返回结果,在选举leader过程中参与投票

           4、集群中只要有半数以上节点存活,zookeeper集群就能正常服务

           5、全局数据一致:每个server保存一份相同的数据副本,client无论连接到哪个server,数据都是一致的

           6、更新请求顺序进行,来自同一个client的更新请求按其发送顺序依次执行

           7、数据更新原子性,一次数据更新要么成功,要么失败

           8、实时性,在一定的时间范围内,client能读到最新数据

      Znode类型

           短暂(ephemeral)

                 临时目录节点

                 临时顺序编号目录节点

           持久(persistent)

                 持久化目录节点

                 持久化顺序编号目录节点

       七、监听器原理

           1、main()线程

           2、创建zkClient

           3、getChildren("/" , true)

           4、Client:ip:port:/path

           5、"/"路径数据发生变化

           6、process()

       八、监听服务器节点动态上下线案例

           需求:某分布式系统中,主节点可以有多台,可以动态上下线,任意一台客户端都能实时感知到主节点服务器的上下线

           分析

                 1、服务端启动时去注册信息(创建都是临时节点)

                 2、客户端启动就去getChildren,获取到当前在线服务器列表,并且注册监听

                 3、服务器节点下线

                 4、服务器节点上下线事件通知就会发给客户端

                 5、客户端回调process()  {重新再去获取服务器列表,并注册监听}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值