Zookeeper总结

  • Zookeeper
  1. zookeeper基础架构leader与follower,半数选举机制,配置id大小
  2. Clint与follower之间通信NIO
  3. Leader与follower通信是socket通信
  4. 选举时候leader与follower默认选举机制是FastLeaderElecation机制,通信采用tcp/ip
  5. Zookeeper作用是做分布式协调服务
  6. 节点能存储的消息是1M
  7. 节点有四种类型:永久节点(断开之后依然存在),永久顺序节点,临时节点(断开之后节点将被删除),临时顺序节点
  8. Zookeeper通信机制是clint端上传数据给follower,follower将请求发送给leader,leader再将请求分发给下面的follower,待半数以上的follower都数据同步完成,那么此次请求通信完成(每个server保存相同的数据副本),更新数据具有原子性,查询数据再一定范围内有实时性
  9. 端口是2181
  10. 几个重要的参数(

    Zookeeper的配置文件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同步通信时限

    集群中Leader与Follower之间的最大响应时间单位,假如响应超过syncLimit * tickTime,Leader认为Follwer死掉,从服务器列表中删除Follwer。

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

    主要用于保存Zookeeper中的数据。

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

    监听客户端连接的端口

  11. zookeeper必须是奇数台节点,因为zookeeper的选举依赖节点的投票,半数以上同意菜能选举出leader
  12. zookeeper的节点状态(looking,follower,leader)依次启动根据节点配置的id选取最大的作为leader,选出之后其余均为follower
  13. 每个节点的结构体(state)包含整个节点的信息(

    1)czxid-创建节点的事务zxid

    每次修改ZooKeeper状态都会收到一个zxid形式的时间戳,也就是ZooKeeper事务ID。

    事务ID是ZooKeeper中所有修改总的次序。每个修改都有唯一的zxid,如果zxid1小于zxid2,那么zxid1在zxid2之前发生。

    2)ctime - znode被创建的毫秒数(从1970年开始)

    3)mzxid - znode最后更新的事务zxid

    4)mtime - znode最后修改的毫秒数(从1970年开始)

    5)pZxid-znode最后更新的子节点zxid

    6)cversion - znode子节点变化号,znode子节点修改次数

    7)dataversion - znode数据变化号

    8)aclVersion - znode访问控制列表的变化号

    9)ephemeralOwner- 如果是临时节点,这个是znode拥有者的session id。如果不是临时节点则是0。

    10)dataLength- znode的数据长度

    11numChildren - znode子节点数量

  14. zookeeper监听详解: 1)首先创建一个main线程   2)再main线程中创建zookeeper客户端,这时就会创建两个线程,一个负责网络连接通信(connet),一个负责监听(listener)3)通过connet线程将注册监听信息发送给zookeeper 4)再zookeeper注册监听器列表中将注册的监听时间添加到列表中 5)zookeeper监听到有数据或者路径的变化,就会将这个消息发送给监听事件的listener 6)listener线程内部调用process()方法      ---常见的监听get path【watch】监听节点值得变化,---ls path【watch】监听节点目录得变化
  15. 代码后面补

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值