zookeeper
paxos
CAP 一致性 可用性 分区容错性
2PC
分布式协议起源
角色:
提议者:proposer (pid,value)
接受者:acceptor
学习者:learner 一个进程可用是多个角色
法定集合:
预提案阶段:
提案阶段:
ZK
类似文件系统 ZNode
顺序访问 全局唯一递增编号 反映事务的先后顺序
全量数据保存在内存 提高服务器吞吐量,和性能,降低延迟
常规的集群角色 master -slave
zk集群角色:
leader 投票 写
follower 投票 不写 读
observer 不投票 不写 读
session: 一个tcp长连接 ,在sessionTimeout内重新连上 则是同一个session
节点:
集群节点
数据节点 ZNode 内存中
持久节点:永久
临时节点: 会话有关
每一个Znode 对应一个stat的数据结构 包含version(当前版本) cversion(子节点版本) aversion(acl版本)
ACL
create delete
read write
admin
崩溃恢复
启动 或者 leader 故障 进入崩溃恢复 选主
选主,数据同步之后 退出 崩溃恢复
已经被leader提交的事务能够被follower提交
丢弃已经被跳过的事务
原子广播
事务消息的二阶段提交
新加入集群的节点,进行数据恢复/同步模式
集群配置
zoo.cfg
clientPort=2181
server.1=ip1:2888:3888
server.2=ip2:2888:3888
server.3=ip3:2888:3888
myid文件
命令
create path value 常见持久节点
create -s -e
ls path 读取
get path
set path data
delete path 有子节点不能删除
API
建立会话 异步 connecting watcher
创建节点
Zkclient
Curator
分布式锁 根据时间戳生成唯一订单id
分布式计数器 在线人数统计
分布式Barrier
工具类 ZKPaths EnsurePath
配置中心
负载均衡
命名服务
分布式唯一id
uuid
分布式锁
排他锁 获取锁 释放锁
共享锁
羊群效应 改进分布式锁
分布式队列 FIFO
分布式屏障
----------------------------------------------------------
内部原理