Zookeeper
简介
分布式治理服务的框架,一个为分布式提供一致性服务的组件.
配置
tickTime: server端与client端保持心跳时间,每隔tickTIme时间就会有一个心跳.单位:毫秒.
initLimit: Leader与Follower初始连接时能容忍的最大心跳数.
syncLimit: Leader与Follower保持正常连接所需要的心跳数.
dataDir: 数据存放目录.
clientPort: 客户端连接断开.
dataLogDir: 日志存放目录.
架构
组成
Leader: 领导者
Follower: 跟随者
Observer: 观察者
client: 客户端,一般使用apacha的Curator客户端.
选举机制
在集群启动时或者leader节点故障是,就会发生选举.每个节点都会向其他节点发送一个投票,内容为:(SID,ZXID),SID:当前机器唯一标志,ZXID:在配置时分配的myid.其他节点在收到信息后,和自己的信息做对比.支持ZXID比自己大的,如果ZXID相同,则支持SID大的.
数据模型
采用和文件系统一样的命名空间,每个节点称为一个Znode,有4中类型.
持久节点.
持久顺序节点:节点具有顺序.
临时节点
临时顺序节点
ZK分布式锁
创建一个节点,用来表示根节点空间.每个客户端启动都会查询并创建一个临时顺序节点,如果是最小的节点,则获取锁,否则订阅最小的客户端,在最小的客户端释放后,获取锁.为保证原子性,ZK提供的查询最小客户端并订阅,是原子性操作.
Last updated
Was this helpful?