zookeeper相关概念

概念

介绍

zk是一个分布式系统的协调控制器,主要可以为分布式系统提供资源协调、数据同步/一致性服务。常用场景为注册中心,分布式系统服务的维护

角色

zk中角色分为三种

  • leader:集群中只有一个
  • follower:从节点,有选取投票权
  • obverser:观察者(从节点),没有选举投票权,只能提供读服务

znode存储类型

zk的数据以znode节点方式存储在内存中,znode为树形结构,格式类似linux的文件系统,也可以持久化到磁盘,分为四种类型

  • 临时性节点,客户端会话失效(可能连接没断)则删除
  • 持久性节点,一直存在(默认方式)
  • 临时性顺序节点,客户端会话失效(可能连接没断)则删除,节点名后面带有序号后缀,不能有子节点
  • 持久性顺序节点,一直存在,节点名后面带有序号后缀

acl权限

zk可以为znode节点提供权限功能,写法为schema:不同schema的不同参数:权限(增删改查)
schema可取值:ipdigestauthworld:anyone


工作原理/实现原理

  1. zk采用集群部署,每个server在内存中都存储了一份数据,格式类似linux的文件系统,数据可以持久化到磁盘
  2. zk在启动之后会通过zab协议选取出一个leader,负责事务功能(写操作)
  3. 当客户端写操作时会发送到leader(发送到follower也会转发给leader),leader将写操作包装为事务发给follower通过zab协议确定超过半数follower确认后认为该写操作成功,否则为失败

zab协议

崩溃恢复

主要指集群刚启动或leader节点失效或过半follower失效情况下的leader选举场景
https://zhuanlan.zhihu.com/p/27335748

原子广播

当客户端写操作时会发送到leader(发送到follower也会转发给leader),leader将写操作包装为事务发给follower通过zab协议确定超过半数follower确认后认为该写操作成功,否则为失败


参考

https://www.cnblogs.com/raphael5200/p/5285583.html

原文地址:https://www.cnblogs.com/wish5714/p/14983676.html