交流
商城
MCN
登入
注册
首页
提问
分享
讨论
建议
公告
动态
发表新帖
发表新帖
第2 章:zookeeper 功能与api使用
分享
未结
0
732
李延
LV6
2021-09-08
悬赏:20积分
# 1 概述 Zookeeper是一个工具,可以实现集群中的分布式协调服务。 所谓的分布式协调服务,就是在集群的节点中进行可靠的消息传递,来协调集群的工作。 Zookeeper之所以能够实现分布式协调服务,靠的就是它能够保证分布式数据一致性。 所谓的分布式数据一致性,指的就是可以在集群中保证数据传递的一致。 Zookeeper能够提供的分布式协调服务包括:数据发布订阅、负载均衡、命名服务、分布式协调/通知、集群管理、分布式锁、分布式队列等功能 参考:[https://my.oschina.net/longkingxu/blog/1802144](https://my.oschina.net/longkingxu/blog/1802144) # 2 自己的理解 zookeeper 的数据结构和我们系统中目录结构相似的树状结构,我们称为节点。每个节点都为其添加子节点。 在每个节点上我们可以保存数据,但大小不可以超过1MB。 同时我们可以监听这些节点数据。当节点或者节点内容发送变化时,zookeeper服务端会主动发送节点变更事件给我们系统。 # 3 客户端命令 我们基于客户端命令行来看一下,zookeeper都有哪些功能 首先我们通过shell连接到zookeeper ,连接命令 ```shell bin/zkCli.sh ``` # 3.1 ls 查看目录 ls / ls查看指定节点下的子节点名称 # get 获取节点信息 get内容为空 cZxid :创建节点的id ctime : 节点的创建时间 mZxid :修改节点的id mtime :修改节点的时间 pZxid :子节点的id cversion : 子节点的版本 dataVersion : 当前节点数据的版本 aclVersion :权限的版本 ephemeralOwner :判断是否是临时节点 dataLength : 数据的长度 numChildren :子节点的数量 # stat 获取节点的更新信息 cZxid 创建节点的id ctime 创建时间 mZxid 最后一次更新的id mtime 最后一次的修改时间 pZxid 最后一次更新子节点的id cversion 子节点的版本 dataversion 文件的版本 dataLength 数据长度 numChildren 有多少子节点 # ls2 ls命令和stat命令的整合 返回内容![fab467cedbe5c61c74efb66ad80d5992.png](en-resource://database/862:2) 与stat相同 # create 创建节点 create [-s] [-e] path data acl -e 创建零时节点 -s 创建顺序节点 自动累加 path 为路径 data 为节点内容 acl 权限 create -t 20 path 设置过期时间 # set 修改节点内容 set path data [version] 最后version为修改发指定版本,如果与当前版本不同,则无法修改 # delete 删除节点 delete path # watcher 通知机制 可监听内容 1.节点数据的变化 2.节点路径的变化 所有的监听事件都是一次性的,触发后立即销毁 get -w path 节点内容发生变化时触发事件 ls -w path 节点树发生变化时触发事件 # acl权限 ACL 权限控制,使用:scheme:id:perm 来标识,主要涵盖 3 个方面: 权限模式(Scheme):授权的策略 授权对象(ID):授权的对象 权限(Permission):授予的权限 scheme - world:默认方式,相当于全部都能访问 - auth:代表已经认证通过的用户(cli中可以通过addauth digest user:pwd 来添加当前上下文中的授权用户) - digest:即用户名:密码这种方式认证,这也是业务系统中最常用的。用 username:password 字符串来产生一个MD5串,然后该串被用来作为ACL ID。认证是通过明文发送username:password 来进行的,当用在ACL时,表达式为username:base64 ,base64是password的SHA1摘要的编码。 - ip:使用客户端的主机IP作为ACL ID 。这个ACL表达式的格式为addr/bits ,此时addr中的有效位与客户端addr中的有效位进行比对。 ID ![](//cdn.hiboot.cn/ed3c1fb7400144d19e13c840510eda21.png) permission 授予什么权限 - CREATE c 可以创建子节点 - DELETE d 可以删除子节点(仅下一级节点) - READ r 可以读取节点数据及显示子节点列表 - WRITE w 可以设置节点数据 - ADMIN a 可以设置节点访问控制列表权限 ## getAcl 查看节点权限 getAcl path
回帖
消灭零回复
提交回复
热议榜
java 相关知识分享
8
好的程序员与不好的程序员
6
写给工程师的十条精进原则
5
spring boot以jar包运行配置的logback日志文件没生成
5
一步一步分析SpringBoot启动源码(一)
5
MockMvc测试
5
【吐槽向】是不是有个吐槽的板块比较好玩
4
logstash jdbc同步mysql多表数据到elasticsearch
3
IntelliJ IDEA 优质License Server
3
.gitignore忽略规则
3
SpringBoot启动源码分析
3
一步一步分析SpringBoot启动源码(三)
3
2
一步一步分析SpringBoot启动源码(二)
2
积分不够将无法发表新帖
2
官方产品
Meta-Boot - 基于MCN
MCN - 快速构建SpringBoot应用
微信扫码关注公众号