Zookeeper的基础
认识Zookeeper
zookeeper是什么
分布式数据的一致性解决方案.
Zookeeper 能做什么
数据发布和订阅(配置中心,config,disconf,diamond,appollo)
负载均衡 dubbo利用zookeeper的机制实现负载均衡。
命名服务
master选举
分布式锁
分布式队列
Zookeeper特征
顺序一致性: 从同一个客户端发起事务请求,最终会严格按照顺序被应用zookeeper中。
原子性: 所有的事务请求处理的结果在整个集群中的所有机器上的应用情况都是一致的。
可靠性:一旦服务器成功应用某个事务,并且对客户端做出响应,那么这个数据在整个集群中一定是同并且保留下来
实时性: 一旦一个事务被成功应用,客户端就能够立即从服务端读取到事务变更后的最新的数据状态(近实时)
如何安装Zookeeper
一、https://archive.apache.org/dist/zookeeper/ 选择需要下载zk版本
windows安装
必须先安装jdk
https://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_systemReq查看zk和jdk兼容性
把下载好的zk.xxx.gz包解压到本地
找到conf/zoo_sample.cfg文件复制改为zoo.cfg
编辑zoo.cfg文件 设置 dataDir=D:/J2EE/zookeeper-3.4.12/dataDir 数据存储目录
在bin/zkServer.cmd 以管理员运行该批处理。
linux安装
安装jdk
下jdk
解压jdk
配置jdk环境
source /etc/profile 让配置文件项马上生效
java -version
安装zookeeper
解压 tar xf zookeeper-3.4.12
找到conf/zoo_sample.cfg文件复制改为zoo.cfg
添加日志和数据文件存储目录
dataDir=/usr/local/dev/zookeeper-3.4.12/dataDir ## 数据文件dataLogDir=/usr/local/dev/zookeeper-3.4.12/logDir ## 日志文件
启动zookeeper检查是否成功
bin/zkServer.sh start|restart|stop|status(查看节点状态)
./zkServer.sh status
ZooKeeper JMX enabled by defaultUsing config: /usr/local/dev/zookeeper-3.4.12/bin/../conf/zoo.cfgMode: standalone
代表zookeeper单节点配置成功了。
Zookeeper数据模型 Znode

ZK常用命令
基本操作命令
stat /path 【节点路径】【查看某个节点的详情】
cZxid = 0x182 创建节点的ID
ctime = Tue Jan 01 14:34:19 CST 2019 节点的创建时间
mZxid = 0x182 修改节点ID
mtime = Tue Jan 01 14:34:19 CST 2019 修改节点的时间
pZxid = 0x195 子节点ID【最新插入子节点ID】
cversion = 4 子节点的版本
dataVersion = 0 当前节点的数据版本
aclVersion = 0 权限版本
ephemeralOwner = 0x0 是否为临时节点
dataLength = 4 数据长度
numChildren = 2 子节点的个数ls2 /path 【除了详情以外,还要列出所有子节点列表】
get /path【除了详情以外,会显示当前节点的值】
listquota path 【列出某个path配额】
setquota -n|-b val path 【设置某个节点配额】
n 代表是配置该节点下面的子节点个数
b 代表是代表path设置数据大小
delquota [-n|-b] path 删除设置节点配额
history 显示最后执行11条命令
create 新增节点
create -s -e path data acl 【-s 有顺序,-e 临时节点】
zk的节点类型:
永久节点 【默认创建的节点是永久的】create /node/abc abc-value
永久顺序节点 create -s /node/abc/test- test-data
临时节点 【当前会话有效】[注意:临时节点下面不能创建节点] create -e /node/tmp value
临时顺序节点 create -e -s /node/tmp- tmp-value
delete 删除节点 delete /node/abc/test0000000001
get 获取某个节点信息
set 修改节点信息 set /node/abc aaaaaaaaa 2
事件监听 Watcher[事件注册是一次性,注册一次使用一次]
stat path [watch]
ls path [watch]
get path [watch]
父节点
stat /gerry-node watcher //注册节点创建,删除,修改监听
ls /gerry-node watcher //注册节点删除监听
get /gerry-node watcher // 注册节点的删除和修改事件
子节点:
NodeChildrenChanged
只能监听到子节点的删除和新增操作,修改操作是监听不了
注意: 每次命令操作path都必须是绝对路径。
权限控制命令
ACL(Access Control List)
/amdin
/customer
/vip
getAcl 获取某个节点的权限
setAcl 设置某个节点的权限
addauth 注册用户 addauth digest 用户名 : 密码
ACL构成:
[schema: id : permissions]
schema 权限机制
world: 配置下只有一个id,就是anyone,组合写法:[world: anyone : permissions]
auth: 认证登录,需要有一个注册的用户 ,格式: auth:user:password:permissions
digest: 和auth是差不多的,但是在设置密码的时候必须是密文. Base64(sha1(password))
ip: 进行IP的访问限制 ,格式: ip:ip地址:权限
super: 超级管理员.
cdrwa: 【permissions】
create 创建
delete 删除
read 查询
write 设置节点的值
admin 管理员
实例操作:
setAcl /gerry world:anyone:ca // 使用world
setAcl /acl-node/abc auth:gerry:gerry:cdrwa // 使用auth
setAcl /acl-node/abc digest:gerry:E/2rNVgA7j4V7rNv488bTrvFiVc=:cdrwa // 使用digest
注意: 如果客户端重连,那么需要是addauth digest gerry:gerry登陆,如果不登陆是不能使用权限
Zookeeper的基础的更多相关文章
- 分布式进阶(十六)Zookeeper入门基础
Zookeeper入门基础 前言 在Zookeeper中,znode是一个跟Unix文件系统路径相似的节点,可以往这个节点存储或获取数据.如果在创建znode时Flag设置为EPHEMERAL,那么当 ...
- [转帖]从0开始的高并发(一)--- Zookeeper的基础概念
从0开始的高并发(一)--- Zookeeper的基础概念 https://juejin.im/post/5d0bd358e51d45105e0212db 前言 前面几篇以spring作为主题也是有些 ...
- Zookeeper的基础知识
1.Zookeeper是什么? 引用官方的说法:“Zookeeper是一个高性能,分布式的,开源分布式应用协调服务.它提供了简单原始的功能,分布式应用可以基于它实现更高级 的服务.它被设计为易于编程, ...
- Zookeeper Client基础操作和Java调用
## Zookeeper > Zookeeper目前用来做数据同步,再各个服务之前同步关键信息 i.客户端操作 1. 创建 create [-s] [-e] path data acl -s 为 ...
- 【Zookeeper】基础学习概览【汇总】
一.概述 1.1 简介 1.2 Zookeeper集群机制 1.3 Zookeeper特性 二.Zookeeper应用场景 三.Zookeeper数据结构 四.Zookeeper安装 五.Java操作 ...
- Zookeeper入门(二)之基础
在深入了解ZooKeeper的运作之前,让我们来看看ZooKeeper的基本概念.本文主要包含如下内容:1.Architecture(架构)2.Hierarchical namespace(层次命名空 ...
- zookeeper学习系列:四、Paxos算法和zookeeper的关系
一.问题起源 淘宝搜索的博客 http://www.searchtb.com/2011/01/zookeeper-research.html 提到Paxos是zookeeper的灵魂 有一篇文章标题 ...
- Solr In Action 笔记(3) 之 SolrCloud基础
Solr In Action 笔记(3) 之 SolrCloud基础 在Solr中,一个索引的实例称之为Core,而在SolrCloud中,一个索引的实例称之为Shard:Shard 又分为leade ...
- 一步到位分布式开发Zookeeper实现集群管理
说到分布式开发Zookeeper是必须了解和掌握的,分布式消息服务kafka .hbase 到hadoop等分布式大数据处理都会用到Zookeeper,所以在此将Zookeeper作为基础来讲解. Z ...
随机推荐
- SSD固态硬盘的GC与Trim
操作系统:其实并没有删除数据: 事实上,它只是在硬盘前的索引区里标记这块文件占用的区域为无效的, 所以等该区域被擦除后,下次数据将要再次写入的时候,可以写入这块被标记的区域. 这也就是为啥那 些所谓的 ...
- idou老师教你学Istio:如何用 Istio 实现速率限制
使用 Istio 可以很方便地实现速率限制.本文介绍了速率限制的使用场景,使用 memquota\redisquota adapter 实现速率限制的方法,通过配置 rule 实现有条件的速率限制,以 ...
- Python的requests、greenlet和gevent模块在windows下安装
一.requests模块在windows下安装 Linux系统下requests的安装方法在http://docs.python-requests.org/en/latest/user/install ...
- ThinkPHP学习笔记(一)----初识ThinkPHP
在做微信开发的时候原本使用来yii框架,后续觉得yii虽然功能强大使用方便,但是整个框架太大了,不适合一些轻量级的开发:这个时候发现thinkphp这个框架,框架本身很小,只有几M,但麻雀虽小,但五脏 ...
- JUC——线程同步锁(ReentrantLock)
ReentrantLock简介 ReentrantLock是一个可重复的互斥锁,又被称为独占锁,可重入的意思是:ReentrantLock锁可以被单个线程多次获取.但是在同一个时间点只能被一个线程锁持 ...
- 利用for循环如何判定是水仙花数
水仙花数业内的大家可能听说过,但是对于初学者来讲,对于水仙花数还是比较陌生的. 首先要知道的是水仙花数的计算公式:153=1**3+5**3+3**3: 如何去判定这个数是否为水仙花数,最好的办法就是 ...
- WebGL——osg框架学习一
从今天开始,我们开始正式的学习osg框架,今天我们学习的是osg的渲染模块,我们来看一下代码结构. 所有DrawXXX的js模块都是渲染的模块,我们逐一来简单介绍一下,第一个Drawable.js,这 ...
- java高并发之锁的使用以及原理浅析
锁像synchronized同步块一样,是一种线程同步机制.让自Java 5开始,java.util.concurrent.locks包提供了另一种方式实现线程同步机制——Lock.那么问题来了既然都 ...
- 在HTML中引用JavaScript中的变量
和上次的代码几乎一样,但这次是引用已经写好的变量.主要功能和用法如下: document对象的getElementId方法得到HTML元素. HTML元素的value属性可以用来设置变量的值. 02. ...
- Spring AOP部分源码分析
Spring源码流程分析-AOP相关 根据Spring源码整理,其中Calculator为自定义的实现方法. AnnotationConfigApplicationContext()加载配置类的流程 ...