zookeeper笔记

目录

一、定义

二、优点

三、工作原理

四、zookeeper角色

五、集群服务器个数

六、数据模型Znode

七、watcher观察

八、Zookeeper安装(集群模式)

九、zoo.cfg文件详解

十、客户端命令

十一、其他


 

一、定义

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:统一命名服务、统一配置管理、统一集群管理、服务器节点动态上下线、软负载均衡等。

二、优点

1、最终一致性:最后为客户端展示同一个视图
2、可靠性:一台服务器节点故障了,客户端请求可以被其他服务器节点接受
3、实时性:zookeeper不能保证两个客户端同时得到最新的数据,如果需要最新数据,应该读数据之前调用sync()接口
4、独立性:各个客户端之间互不干预
5、原子性:所有的服务节点同时成功或失败
6、顺序性:leader接受处理请求是顺序的,按照先进先出

三、工作原理

1、每个service在内存中存储了一份数据

2、zookeeper启动时,将从实例中选举一个leader(Paxos协议,投票超过半数)

3、leader负责数据更新操作

4、一个数据更新成功,要当所有service在内存中修改成功

四、zookeeper角色

1.领导者(leader),负责进行投票的发起和决议,更新系统状态
2.学习者(learner),包括跟随者(follower)和观察者(observer)
3.follower用于接受客户端请求并向客户端返回结果,在选主过程中参与投票
4.Observer可以接受客户端请求,将写请求转发给leader,但observer不参加投票过程,只同步leader的状态,observer的目的是为了扩展系统,提高读取速度。
5. 客户端(client),请求发起方

五、集群服务器个数

最好使用单数,因为zookeeper投票机制要过半才可以选择leader和更新数据,单数服务容灾更好,可以节约一台服务器。比如3台服务,允许故障一台,如果4台服务,也是只允许故障一台;防脑裂,偶数服务故障一半就无法工作

六、数据模型Znode

1、ZooKeeper拥有一个层次的目录结构,命名符合常规文件系统规范。
2、每个节点叫做znode,并且其拥有一个唯一的路径标识。节点znode可以包含数据和子节点, 用户对znode具有增、删、改、查等操作。
3、znode中的数据可以有多个版本,在查询该znode数据时就需要带上版本信息
4、znode可以被监控,该目录下某些信息的修改,例如节点数据、子节点变化等,可以主动通知监控注册的client。事实上,通过这个特性,可以完成许多重要应用,例如配置管理、信息同步、分布式锁等等
5、节点不支持部分读写,要一次性完整读写
6、ZooKeeper中的节点有两种,分别为临时节点和永久节点。临时znode的client与server断开连接,该znode将被自动删除,且临时Znode不能有子节点

七、watcher观察

watcher可以监控目录节点的数据变化及子节点的变化,一旦节点目录状态发生变化,服务器会通知所有设置在这个节点目录的上的watcher,从而每个客户端就知道节点目录发生变化,可以做出相应操作。

可以设置观察的操作:exists,getChildren,getData
可以触发观察的操作:create,delete,setData

八、Zookeeper安装(集群模式)

1、下载zookeeper解压安装

2、配置服务器编号(如果是单机版本安装忽略)

  • 在数据存储路径dataDir配置目录的下创建myid文件
  • 编辑myid文件,添加与server对应的编号

3、配置zoo.cfg文件

  • 重命名conf/zoo_sample.cfg为zoo.cfg
  • 修改数据存储路径配置dataDir

  • 增加集群ip配置(如果是单机版本安装忽略):
    server.2=ip1:2888:3888
    server.3=ip1:2888:3888
    server.4=ip1:2888:3888

  • 上述集群ip参数解释:server.A=B:C:D
    A是一个数字,表示这个是第几号服务器,对应myid配置的编号
    B是这个服务器的ip地址
    C是这个服务器与集群中的Leader服务器交换信息的端口
    D是执行选举Leader时服务器相互通信的端口

4、启动命令bin/zkServer.sh start

九、zoo.cfg文件详解

1、tickTime =2000:通信心跳数,Zookeeper服务器与客户端心跳时间,单位毫秒
      Zookeeper使用的基本时间,服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个tickTime时间就会发送一个  心跳。它用于心跳机制,并且设置最小的session超时时间为两倍心跳时间。(session的最小超时时间是2*tickTime)

2、initLimit =10:LF初始通信时限
      集群中的Follower跟随者服务器与Leader领导者服务器之间初始连接时能容忍的最多心跳数(tickTime的数量),用它来限定集群中的Zookeeper服务器连接到Leader的时限

3、syncLimit =5:LF同步通信时限
    集群中LeaderFollower之间的最大响应时间单位,假如响应超过syncLimit * tickTimeLeader认为Follwer死掉,从服务器列表中删除Follwer

4、dataDir:数据文件目录+数据持久化路径

5、clientPort =2181:客户端连接端口

十、客户端命令

1.启动客户端:bin/zkCli.sh(服务端启动是bin/zkServer.sh start,多了start)
2.显示所有操作命令:help
3.查看当前znode中所包含的内容:ls path (watch:监听变化,一次监听一次有效)
4.查看当前节点详细数据:ls2 path
5.创建节点:create path data (默认是持久化节点,-e:临时节点 -s:自动带序号)
6.获得节点的值:get path (watch)
7.修改节点数据值: set path data
8.删除节点:delete  path
9.递归删除节点:rmr  path
10.查看节点状态:stat path

十一、其他

1、选举机制
    投票选择超过半数成为leader,按照zookeeper启动顺序,超过半数最大myid一般为leader。

2、监听器原理
   

3、写数据流程
  

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值