基本命令
- zkService.sh start 启动zkServer
- zkService.sh stop 停服务端
- zkCli.sh start 启动客户端
- zkCli.sh stop 停止客户端
- zkService.sh status // 客户端状态 默认是standalone
node节点
- create /路径 节点数据 // 创建持久节点 默认
- create -s /路径 节点数据 // 创建顺序节点
- create -e /路径 节点数据 // 创建临时节点
获取数据
- get 路径 //如果是顺序节点要输入完整的路径 如get /node00000000001
watch 监视,,只能在get下设置
- get 路径 1 // 设置监视
设置数据
- set 路径 数据
创建子节点
- create 父路径/子路径 节点数据
列出 子节点
- ls 路径
节点状态
stat 路径
删除节点
- rmr 路径 // 递归删除下面所有子节点
- delete 路劲 //删除没有子节点的路径
Zookeeper 实现分布式锁的原理。。
举个例子:
我们有一个实现支付的微服务。因为使用量很大,我们使用集群将其部署在了服务器A 和服务器B 上面。。支付宝支付以后需要等待返回结果。。返回结果我们使用异步通知的方式。。这个时候可能会存在这种清空。我点支付的时候手抖,导致我发起了两次支付请求。。在分布式的环境下,第一次可能是服务器A处理请求,第二次是服务器B处理请求。就没有办法使用本地锁。。Zookeeper实现分布式锁的原理是,,服务器A和服务器B作为Zookeeper的客户端,同时创建相同的路径,创建临时节点Node,这样就只能有一个服务器创建成功。相当于获取到了锁。服务器A处理完成以后删除临时节点。相当于释放锁。。这样就可以保证,只有一個服務可以更新訂單表。