概念
介绍
zk是一个分布式系统的协调控制器,主要可以为分布式系统提供资源协调、数据同步/一致性服务。常用场景为注册中心,分布式系统服务的维护
角色
zk中角色分为三种
- leader:集群中只有一个
- follower:从节点,有选取投票权
- obverser:观察者(从节点),没有选举投票权,只能提供读服务
znode存储类型
zk的数据以znode节点方式存储在内存中,znode为树形结构,格式类似linux的文件系统,也可以持久化到磁盘,分为四种类型
- 临时性节点,客户端会话失效(可能连接没断)则删除
- 持久性节点,一直存在(默认方式)
- 临时性顺序节点,客户端会话失效(可能连接没断)则删除,节点名后面带有序号后缀,不能有子节点
- 持久性顺序节点,一直存在,节点名后面带有序号后缀
acl权限
zk可以为znode节点提供权限功能,写法为schema:不同schema的不同参数:权限(增删改查)
schema可取值:ipdigestauthworld:anyone
工作原理/实现原理
- zk采用集群部署,每个server在内存中都存储了一份数据,格式类似linux的文件系统,数据可以持久化到磁盘
- zk在启动之后会通过zab协议选取出一个leader,负责事务功能(写操作)
- 当客户端写操作时会发送到leader(发送到follower也会转发给leader),leader将写操作包装为事务发给follower通过zab协议确定超过半数follower确认后认为该写操作成功,否则为失败
zab协议
崩溃恢复
主要指集群刚启动或leader节点失效或过半follower失效情况下的leader选举场景
https://zhuanlan.zhihu.com/p/27335748
原子广播
当客户端写操作时会发送到leader(发送到follower也会转发给leader),leader将写操作包装为事务发给follower通过zab协议确定超过半数follower确认后认为该写操作成功,否则为失败