Zookeeper学习

1 软件安装

下载并解压:tar -zxvf apache-zookeeper-3.6.3.tar.gz

配置环境变量:  export ZOOKEEPER_HOME=/usr/local/zookeeper       export PATH=$PATH:$ZOOKEEPER_HOME/bin

修改配置文件: ./conf/zoo_sample.cfg

 

2 客户端命令

创建永久节点:create /douye my_first_zkbode
创建临时节点:create -e /douye/tmp tmp-data
创建顺序节点:create -s /douye/sec seq-data

更新节点值:set /douye update_data [version]

删除节点:delete -v 0 /douye/sec0000000004

3 创建watch事件

(一)父节点的watch事件

创建父节点事件:stat -w /tmp,当执行create /tmp 123时会触发`WatchedEvent state:SyncConnected type:NodeCreated path:/tmp`

修改父节点通知:get -w /tmp,当执行get -w /tmp时会触发`WatchedEvent state:SyncConnected type:NodeDataChanged path:/tmp`

删除父节点通知:get -w /tmp,当执行delete /tmp时,会触发`WatchedEvent state:SyncConnected type:NodeDeleted path:/tmp`

(二)子节点的watch事件

创建子节点:首先使用`ls -w /douye`为父节点设置watcher,当在父节点下创建子节点时`create /douye/tmp 123`会触发`WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/douye`

删除子节点:首先使用`ls -w /douye`为父节点设置watcher,当在删除子节点时`delete /douye/tmp`,会触发`WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/douye`

更新子节点:使用`ls -w /douye`为父节点设置watcher,当更新子节点时`set /douye/tmp new-data`不会触发watcher机制(若要触发watcher事件,则需使用`get -w /douye/tmp`来设置watcher事件)

(三)使用场景--统一资源配置

4  ACL权限控制列表

(一)ACL命令行

`addauth scheme auth`:输入认证授权信息,密码以加密的形式存在

`getAcl [-s] path`:获取某个节点acl的权限信息

`setAcl [-s] path`:设置某个节点acl的权限信息

(二)ACL的构成

通过 [scheme : id : permissions] 来构成权限列表

创建节点的默认权限为 : 'world,'anyone : cdrwa

scheme:代表权限机制(world下只有一个id为anyone、auth需要认证登陆明文,digest需要对密码加密才能访问,ip,super)

id:允许访问的用户

permissions:权限组合字符串

设置权限:`setAcl /douye/tmp world:anyone:crwa`

设置digest权限:`setAcl /douye digest:root:NzZjY2YyYjgzMjAyZWZhNjlhOTMxM2EwM2VlMDcxNWIyMDA0M2Y4ZQ==:cdra`

登陆digest权限:`addauth digest root:douye`

设置ip权限:


设置super权限:(1)修改zkServer.sh增加super管理员(2)重启zkServer.sh

 

5  四字命令

echo [commond] | nc [ip] [port]

[stat]:查看zk的状态信息,echo stat | nc localhost 2181

执行以上命令后如果提示`stat is not executed because it is not in the whitelist.`,则需要在zoo.cfg中添加`4lw.commands.whitelist=*`

[ruok]:查看当前zkserver是否启动,如果启动则会返回`imok`

[dump]:列出未经处理的会话与临时节点

[conf]:查看服务器的配置

[cons]:展示连接到服务器的客户端信息

[envi]:展示zk的环境变量信息

[mntr]:监控zk的健康信息

[wchs]:展示watch的信息

[wchs] 与 [wchp]:展示watch的路径与session信息

 

6 Zookeeper的典型应用场景

(一)数据的发布与订阅

客户端向服务端注册自己需要关注的节点,一旦该节点的数据发生变更,那么服务端就会向相应的客户端发送watcher事件通知,客户端接收到这个消息通知后,需要主动到服务端获取最新的数据

 7 搭建dubbo服务

解决问题:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): 在保证命名空间等没错的前提下,查看pom文件是否有以下配置

<resources>
    <resource>
        <directory>src/main/java</directory>
        <includes>
            <include>**/*.xml</include>
        </includes>
        <filtering>true</filtering>
    </resource>
    <resource>
        <directory>src/main/resources</directory>
        <includes>
            <include>**/*.xml</include>
            <include>**/*.properties</include>
        </includes>
        <filtering>true</filtering>
    </resource>
</resources>

解决dubbo运行时的问题:Cused by: com.alibaba.dubbo.remoting.TimeoutException: Waiting server-side response timeout.

为dubbo中的提供者配置文件中设置超时时间:<dubbo:provider delay="-1" timeout="60000" retries="0"/>

 

问题汇总

1 Maven项目中在src/main/java下的包中读取src/main/sources中的配置文件(用Filej读取,尝试在pom中添加配置文件扫描还是不行)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值