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中添加配置文件扫描还是不行)