zookeeper
2020-07-07 13:54:56 40 举报
AI智能生成
Zookeeper知识点总结
作者其他创作
大纲/内容
保证
顺序一致性
客户端的更新操作将按照发送顺序进行应用
原子性
更新成功或失败,没有部分结果
单个系统映像
无论客户端连接到系统内哪个服务器,看到的都是一样的内容
可靠性
更新在被覆盖前不会丢失
及时性
dubbo整合
注册
向zk中注册临时节点
key
/dubbo/com.test.ITest/consumers
value
consumer://10.118.14.204/com.test.ITest?application=../dubbo/com.test.ITest/consumers
订阅
注册完毕后,订阅(watch)service节点下的providers路径,一旦改变就通知消费者
简介
数据模型类似于文件夹的树状结构,每一个节点都叫做znode
每个节点都带有版本号,数据变更时,版本号(乐观锁)变更。
客户端向服务端ping包请求的心跳机制来检查session是否过期,
session过期的时候,该session创建的所有临时节点都会被抛弃。
session过期的时候,该session创建的所有临时节点都会被抛弃。
session timeout需要在ticktime*2 ~ ticktime*20之内由客户端设置,
com.101tek 包默认为30秒
com.101tek 包默认为30秒
myid
服务器server id,通过配置文件配置,集群内唯一
epoch
选举周期,每次选举最终确定完leader结束选举流程时会自增
zxid
zxid是一个64位数字。高32位为epoch,低32位自增计数器
每个新leader都有新的epoch
节点
节点角色
leader
一个集群只有一个leader,处理读写请求,负责进行发起投票和决议,更新系统状态
follower
处理读请求,将写请求转发给leader,具有投票权和选举权
observer
没有投票和选举资格的follower,用来处理读请求,增加吞吐量
说明
持久化节点只能主动调用detele方法删除
临时节点在创建者超时或失去连接后节点就会被删除,临时节点下面没有子节点
顺序节点在创建后会自动在后面添加序列号
分类
persistent
持久化节点
persistent_sequential
持久化顺序节点
ephemeral
临时节点
ephemeral_sequential
临时顺序节点
ACL
访问控制列表 Access Control List
每个节点都有一个访问控制列表
Watch
- 客户端可以再znode上设置监视,znode更改时,将触发并删除监视并通知客户端,
3.6.0开始支持永久性Watch
ZAB-原子广播机制
消息广播
lead将写请求以proposal(提议)的形式发送给所有follower,生成一个zxid,并等待ACK(应答)
follower接收到proposal后先写事务日志到磁盘,再返回ACK
leader得到过半数的ACK(自己算一个ack)后,向所有的follower和observer发送commit
leader将处理结果返回给客户端
选举
每个节点发起投票(epoch,server id, zxid),初始时每个节点都投自己
接收其他服务器投票,比较自己的投票,更新投票并发送给其他服务器
统计投票
每次投票后,服务器统计,如果某个投票达到一半的要求,则认为该投票提出者可以成为Leader
比较规则
1.epoch大的胜出,否则进行步骤2
2.zxid大的胜出,否则进行步骤3
3.sid大的胜出
2.zxid大的胜出,否则进行步骤3
3.sid大的胜出
数据同步
时机
在完成leader选举后,接收客户端请求前
新加入节点
follower将自己最大zxid发送给leader
leader根据follower的zxid来确定同步点
leader向follower发送proposal消息,并且紧跟着一条commit消息,标识该事物已经被提交
同步完成后follower状态变为update,提供服务
API
create
在树中创建节点
delete
删除节点
exists
位置是否存在节点
get data
读节点
set data
写节点
get children
获取子节点列表
0 条评论
下一页