Zookeeper

简介

分布式治理服务的框架,一个为分布式提供一致性服务的组件.

配置

  1. tickTime: server端与client端保持心跳时间,每隔tickTIme时间就会有一个心跳.单位:毫秒.

  2. initLimit: Leader与Follower初始连接时能容忍的最大心跳数.

  3. syncLimit: Leader与Follower保持正常连接所需要的心跳数.

  4. dataDir: 数据存放目录.

  5. clientPort: 客户端连接断开.

  6. dataLogDir: 日志存放目录.

架构

组成

  1. Leader: 领导者

  2. Follower: 跟随者

  3. Observer: 观察者

  4. client: 客户端,一般使用apacha的Curator客户端.

选举机制

在集群启动时或者leader节点故障是,就会发生选举.每个节点都会向其他节点发送一个投票,内容为:(SID,ZXID),SID:当前机器唯一标志,ZXID:在配置时分配的myid.其他节点在收到信息后,和自己的信息做对比.支持ZXID比自己大的,如果ZXID相同,则支持SID大的.

数据模型

采用和文件系统一样的命名空间,每个节点称为一个Znode,有4中类型.

  1. 持久节点.

  2. 持久顺序节点:节点具有顺序.

  3. 临时节点

  4. 临时顺序节点

ZK分布式锁

创建一个节点,用来表示根节点空间.每个客户端启动都会查询并创建一个临时顺序节点,如果是最小的节点,则获取锁,否则订阅最小的客户端,在最小的客户端释放后,获取锁.为保证原子性,ZK提供的查询最小客户端并订阅,是原子性操作.

Last updated

Was this helpful?