一. 服务注册中心zookeeper

一. 服务注册中心zookeeper

1.1:ZooKeeper数据模型

一.zk数据模型简介

在这里插入图片描述

二.zk数据模型特性

zookeeper的数据模型类似于linux下的文件目录

/usr/local /usr/local/tomcat

  1. 每一个节点都叫做zNode,可以有子节点,也可以有数据
  2. 每个节点都能设置相应的权限控制用户的访问
  3. 每个节点存储的数据不宜过大
  4. 每个节点都带有一个版本号,数据变更时,版本号变更(乐观锁)
  5. 节点分永久节点跟临时节点

1.2:zookeeper常用命令-zkCli

一.分类

1.创建

  • 创建节点
 create [-s] [-e] path data acl -s

-s表示创建顺序节点
-e表示创建临时节点
data表示创建的节点的数据内容

2.查看

  • 获取节点的子节点
  ls path
  • 获取节点的子节点
get path
  • 查看节点状态 stat path
stat path

结果

cZxid = 0x3 --事务id 
ctime = Tue Dec 04 10:37:58 EST 2018 --节点创建的时候的时间 
mZxid = 0x3 --最后一次更新时的事务id 
mtime = Tue Dec 04 10:37:58 EST 2018 --最后一次更新的时间 
pZxid = 0x3 --该节点的子节点列表最后一次被修改的事务id
cversion = 0 --子节点列表的版本
dataVersion = 0 --数据内容的版本 
aclVersion = 0 --acl版本 
ephemeralOwner = 0x0 --用于临时节点,表示创建该临时节点的事务id,如果当前的节点不是临时节点,该字段值为0 
dataLength = 8 --数据内容的长度 
numChildren = 0 --子节点的数量
  • 获取节点的子节点以及当前节点的状态
 ls2 path

3.修改

  • 修改节点数据
 set path data [version]

4.删除

  • 删除节点数据
 delete path [version]

如果此时该节点有子节点,则不允许删除

  • 递归删除整个节点
  rmr path 

1.3:ZooKeeper session机制

一.简介

  1. 简介:用于客户端与服务端之间的连接
  2. 特点:
    1. 可以设置超时时间
    2. 通过心跳包机制(客户端向服务端ping包请求)检查心跳结束,则session过期
    3. session过期的时候,该session创建的所有临时节点都会被抛弃

二.图示

在这里插入图片描述

1.4:ZooKeeper watch机制

一.简介

  1. 简介:针对zk每一个节点,都可以有一个监控者,当节点发生变化会触发watcher事件, 触发后立即销毁 所有有监控者的节点的变更操作都能触发watcher事件这个就是watch机制
  2. 实现:
    1. 两个命令:
      1. get [节点名]
      2. stat [节点名]
  3. 特点:
    1. 一次性的,触发后立即销毁
    2. 子节点的watcher操作(监控父节点,当父节点对应的子节点发生变更的时候,父节点上的watcher事件会被触发) ls ls2 增删会触发、修改不会。如果子节点再去新增子节点,不会触发(也就是说,触发watcher事件一定是直系子节点)

二.图示

在这里插入图片描述

1.5:ZooKeeper的acl权限控制

一.简介

  1. 简介:针对节点可以设置相关的读写等权限,目的是为了保证数据的安全性; 权限permissions可以指定不同的权限范围及角色
  2. 作用:
    1. 分离开发与测试环境,开发者无权操作测试的节点
    2. 生产火警上控制指定ip的服务可以访问相关的节点

二.acl的组成与解析

acl组成[ scheme : id : permissions ]

  1. scheme分类
  • world: world下只有一个id,也就是anyone,表示所有人
 world:anyone:permissions
  • auth 代表认证登录,需要注册用户有权限才可以
 auth:user:password:permissions
  • digest 需要密码加密才能访问
digest:user:password:permissions
  • ip 针对ip进行认证登录
 ip:localhost:psermissions
  • super 代表超管,拥有所有的权限
  1. id:允许访问的用户

  2. permissions: 权限组合字符串 – cdrwa

    1. c create 创建子节点
    2. d delete 删除子节点
    3. r read 读取节点的数据
    4. w write 写入数据
    5. a admin 可管理的权限
    6. 可选则使用,例:cdrwa cdr cdw

三.常用命令

  1. 获取节点权限:getAcl [节点名]
  2. 设置节点权限:setAcl [节点名] [acl]
  3. 输入认证授权信息:
    1. 密码加密访问: addauth digest [节点名] : [密码]
    2. 密码不加密访问:addauth auth [节点名] : [密码]
发布了96 篇原创文章 · 获赞 26 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq919694688/article/details/103199671