欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

zookeeper核心知识

程序员文章站 2022-03-26 14:48:46
zookeepr基本数据模型1.树形结构,类似于linux系统目录结构2.每一个节点znode,可以有子节点,也可以有数据3.每个节点分为永久节点跟临时节点,临时节点再客户端断开后消失4.每个zk节点都有各自版本号,通过命令行来显示节点信息5.每当节点数据发生变化,那么该节点的版本号会累加(乐观锁)6.删除/修改过时的节点,版本号不匹配则会报错7.每个zk节点存储数据不宜过大,几k即......

zookeepr基本数据模型
1.树形结构,类似于linux系统目录结构
2.每一个节点znode,可以有子节点,也可以有数据
3.每个节点分为永久节点跟临时节点,临时节点再客户端断开后消失
4.每个zk节点都有各自版本号,通过命令行来显示节点信息
5.每当节点数据发生变化,那么该节点的版本号会累加(乐观锁)
6.删除/修改过时的节点,版本号不匹配则会报错
7.每个zk节点存储数据不宜过大,几k即可
8.节点可以设置acl,可以通过权限来限制用户的访问

zookeeper作用体现
1.master节点选举,主节点挂了,从节点接收工作,并且保证这个节点时唯一的,首脑模式,保证我们的集群时高可用的
2.统一配置文件管理,即只需要部署一台服务器,则可以把相同的配置文件同步更新到其他所有服务器
3.发布与订阅,类似消息队列mq,dubbo发布者会把数据存在znode上,订阅者会去读取这个数据
4.提供分布式锁,分布式环境中不同进程之间争夺资源,类似与多线程中的锁。
5.集群管理,集群中保证数据的强一致性

zookeeper节点信息

  1. cZxid:节点创建后,zookeeper为该节点分配的id
  2. ctime:节点创建的时间
  3. mZxid:修改后zookeeper分配的id
  4. mtime:节点修改的时间
  5. pZxid:子节点的id
  6. cversion:子节点的version
  7. ephemeralOwner:0x0则时永久节点,临时节点则时别的数据
  8. dataVersion:当前数据版本号,修改会累加1
  9. aclVersion:权限 dataLength:数据长度
  10. numChildren:子节点长度

zk特性——session基本原理
1)客户端与服务端存在的会话
2)每个会话可以设置一个超时时间
3)心跳结束,session过期
4)session过期,临时节点znode会被抛弃
5)心跳机制:客户端向服务端的ping包请求

常用命令:
1)create
-s:顺序节点
-e:临时节点
2) set path data [version]
delete path data [version]
version:所修改数据的版本号,若与数据当前版本号不匹配,则报错

watcher机制

  1. 针对每一个节点的操作,都会有一个监督者——watcher
  2. 当监控的某个节点发生了变化,则触发watcher事件
  3. zk中的watcher是一次性的,触发后即销毁
  4. 父节点,子节点 增删改都能触发其watcher
  5. 针对不同类型的操作,触发的事件也不同:
    1)(子)节点创建事件
    2)(子)节点删除事件
    3)(子)节点数据变化事件

watcher命令行

  1. 通过get path [watch]设置watcher
  2. 父节点 增删改 操作触发watcher
  3. 子节点 增删改 操作触发watcher

父节点watcher事件:

  1. 创建父节点:NodeCreated 事件
  2. 修改父节点:NodeDataChanged 事件
  3. 删除父节点:NodeDeleted 事件

子节点watcher事件:

  1. ls为父节点设置watcher,创建子节点:NodeChildrenChanged 事件
  2. ls为父节点设置watcher,删除子节点:NodeChildrenChanged 事件
  3. ls为父节点设置watcher,修改子节点数据不触发事件

watcher常用场景:

  1. 统一资源配置

ACL(access control lists)权限控制

  1. 针对节点可以设置相关读写权限,目的是为了保障数据安全
  2. 权限permission可以指定不同权限范围以及角色

ACL命令行

  1. getAcl:获取某个节点的acl权限信息
  2. setAcl:设置某个节点的acl权限信息
  3. addauth:输入认证授权信息,注册时输入明文密码(登录),但是再zk系统中,密码是以加密形式存在的

ACL构成

  1. zk的acl通过[scheme
相关标签: zookeeper