Zookeeper基础学习

zookeeper的基本数据模型:
1、是一个树形结构;
2、每一个节点都称之为znode,它可以有子节点,也可以有数据;
3、每个节点分为临时节点和永久节点,临时节点在客户端断开后就会消失;
4、每个znode都有自己的version,可以通过命令来查看znode的信息;
5、每当节点数据发生变化时,该节点的版本号会累加,删除/修改节点时,版本号不匹配会报错;
6、节点可以设置权限acl,可以通过权限来限制用户的访问。
zookeeper的作用体现:
1、master节点选举,主节点挂了之后,从节点会接手工作,并且保证这个节点是唯一的,这就是所谓的首脑模式,从而保证我们的集群是高可用的;
2、统一配置文件管理,即只需要部署一台服务器,则可以把相同的配置文件同步更新到其他所有服务器(如:修改了redis的统一配置);
3、发布与订阅,类似详细队列,dubbo发布者把数据存在znode上,订阅者会读取这个数据;
4、提供分布式锁,分布式环境中不同进程之间争夺资源,类似于多线程中的锁;
5、集群管理,在zk的集群中可以保证数据的强一致性,当修改一个节点的znode的值时,会把这个数据同步到其他的节点。
zookeeper客户端基本命令:
ls path [watch]:查看path下有那些node
ls2 path [watch]:查看path下有那些node,并且显示node的详细信息
stat path [watch]:查看path的详细信息
get path [watch]:获取节点的数据,并且显示节点的详细信息
create [-s] [-e] path data acl:创建子节点:
									-e表示创建临时节点,
									-s表示创建顺序节点(zk会自动给节点名加上序号),
									-e和-s都不加,则是默认创建(非顺序且永久节点),
									acl表示这个节点的权限,有增删改查权限
set path data [version]:给节点设置数据:
							version指的就是节点信息中的dataVersion的最新值,
							当在使用set指令时,可以加上本服务器认为的该节点的最新版本号,如果期间没有人修改该节点,则可以修改成功,
							如果期间有人修改了该节点,则dataVersion的值就已经发生了变化,此时set指令就会执行失败,符合乐观锁的原理
delete path [version]:删除一个节点,如果path下面还有子节点,则不能删除
							version和set指令的作用一致,符合乐观锁的原理
zookeeper的watcher机制:
1、针对每个节点的操作,都会有一个监督者-->watcher
2、当监控的某个对象(znode)发生变化,则触发一个wathcer事件
3、zk中的watcher是一次性的,触发后,watcher事件就会立即销毁
父节点watcher事件:
1、通过stat path [watch]设置watcher(或者通过get path [watch]设置watcher)
		通过stat /node_1 watch命令,给node_1节点设置一个watcher事件
		执行create /node_1 123命令,可以看到node_1节点被创建,并且触发了一个事件:WatchedEvent state:SyncConnected type:NodeCreated path:/node_1
2、事件类型:
	NodeCreated:创建父节点watcher事件(通过stat命令设置事件)
	NodeDataChanged:修改父节点watcher事件(通过watch命令设置事件)
	NodeDeleted:删除父节点事件
子节点watcher事件:
1、通过ls path [watch]或者ls2 path [watch]命令,对该子节点的父节点设置事件,在增,删子节点时,就会触发对应的事件
2、事件类型:
	NodeChildrenChanged:创建/删除子节点(通过ls命令设置事件)
3、通过ls 命令对父节点设置事件,当修改子节点时,不会触发事件
4、要想触发子节点的修改事件,需要使用get /path watch(这里的path要只想到子节点,类似于父节点watcher事件),再通过set指令,会触发NodeDataChanged事件
zookeeper的Acl权限:
1、针对节点可以设置相关的权限(crdwa),目的时为了保障数据的安全性
2、可以制定不同的权限范围以及角色,就是给不同的角色设置不同的权限
3、getAcl:获取某个节点的acl权限信息;setAcl:设置某个节点的acl权限信息
4、addauth:输入认证授权信息,注册时输入明文密码(登录),但是在zk系统里面,密码是以加密的形式存在的
5、zk的acl的构成:[scheme:id:permissions]
		scheme:代表采用的某种权限机制,有以下几种值:
			world:world下只有一个id,即只有一个用户:anyone,表示所有人都可以有这些权限
			anth:代表认证登录,需要注册用户有权限,形式:auth:user:password:[permissions]
		id:代表允许访问的用户
		permissions:权限组合字符串:
			crdwa:c表示create子节点的权限,r表示read当前节点/子节点的数据,w表示write节点数据,d表示delete当前节点下的子节点,a表示admin权限,可以给节点分配权限
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值