zookeeper基本概念及使用场景
Zookeeper作为一种协调分布式应用高性能的调度服务。
在ZooKeeper中,节点类型可以分为:
持久节点(PERSISTENT )
临时节点(EPHEMERAL)
时序节点(SEQUENTIAL )
具体在节点创建过程中,一般是组合使用,可以生成 4 种节点类型:
持久节点(PERSISTENT)
持久顺序节点(PERSISTENT_SEQUENTIAL)
临时节点(EPHEMERAL)
临时顺序节点(EPHEMERAL_SEQUENTIAL)
zookeeper-3.4.5
create 默认创建的是持久节点
set 相同的值也被认为修改操作
临时节点:
create -e /temp tempdata
断开连接后,次客户端建立的临时节点都会清除,但是实现机制是通过心跳检测的,是有间隔时间的,所以并不会立刻就被清除的,心跳时间是可以设置的,默认2000毫秒。
打开两个xshell窗口模拟两个客户端连接zookeeper,执行 /usr/local/zookeeper/bin/zkCli.sh
一个客户端创建一个临时节点,分别使用 quit 和 ctrl+c 两种方式断开连接。
另一个客户端立即查看,发现,使用quit方式正常断开就会触发清除操作,使用ctrl+c异常退出的话需要过会才清除。
时序节点:
create /zk_test test
create -s /zk_test/snode- 111
Created /zk_test/snode-0000000000
create -s /zk_test/snode 222
Created /zk_test/snode-0000000001
实际创建的节点是在我们给的名称后面追加一个序列号。
watch通知机制:
设置watch事件
stat node watch 或者 get node watch
当node自身发生变化,会触发;与子节点无关。
stat
增,删,改
可以监控不存在的节点,当这个节点创建了就会触发。
get
删,改
只能监控已存在的节点,否则监控失败。
watch事件是一次性的,出发了就没了,需要再次设置watch。
acl权限管理:
ZK的节点有5种操作权限:CREATE、READ、WRITE、DELETE、ADMIN 也就是 增、删、改、查、管理权限,这5种权限简写为crwda(即:每个单词的首字符缩写)。
注:这5种权限中,delete是指对子节点的删除权限,其它4种权限指对自身节点的操作权限
身份的认证有4种方式:
- world:默认方式,相当于全世界都能访问
- auth:代表已经认证通过的用户(cli中可以通过addauth digest user:pwd 来添加当前上下文中的授权用户)
- digest:即用户名:密码这种方式认证,这也是业务系统中最常用的
- ip:使用Ip地址认证
使用[scheme:id:permissions]来表示acl权限 ????
获取权限信息: getAcl /test1
设置权限:setAcl /test1 world:anyone:crwa
一致性配置管理
存储全局主键
分布式锁
负载均衡
命名服务
同步服务
分布式队列