zookeeper--分布式协调工具

zookeeper的应用

  1. 分布式锁
  2. 负载均衡(采用轮训机制。底层是取模算法
  3. 命名服务 dubbo(zookeeper作为注册中心,所有微服务都要先进行注册命名。然后听候注册中心的调度。
  4. 分布式通知/协调watcher事件通知
  5. 发布订阅 watcher事件通知
  6. 集群环境 选举master,redis,哨兵机制ping 6.集群环境 选举master,redis,哨兵机制ping 心跳检测机制(redis宕机之后,哨兵机制使用投票选举策略获得新的master

zookeeper的四种节点类型

  1. 持久节点 持久化在硬盘
  2. 持久顺序节点
  3. 临时节点 连接断开,节点删除。
  4. 临时顺序节点

节点watcher–节点事件通知,使用监听机制监听节的变化。

zookeeper的数据结构

类似于二叉树,节点可以无限递增。
节点名称不可以重复。

zookeeper事件通知

使用监听机制。
节点发生改变,都会有事件通知。

分布式通知watcher

Dubbo用zookeeper作为注册中心,监听各个临时节点的变化,通过watcher事件通知实现分布式通知。

zookeeper 实现选举策略

redis多台服务器创建临时节点,谁先创建,谁为master。
master宕机后,其他重新创建,重复上一机制。

分布式锁

什么是分布式锁

在分布式的多个JVM中保证数据的唯一性。

分布式锁实现的三个思路

  1. 数据实现分布式锁。释放锁要先把数据删掉,会有死锁的情况
  2. redis中实现分布式锁。
  3. zookeeper中实现分布式锁。(推荐)

zookeeper加锁:临时节点一创建就加锁
释放锁:连接关闭,锁释放。

分布式锁实现订单号唯一

原理–临时性节点+事件通知
zookeeper创建临时节点,谁创建成功,谁获取锁,其他请求等待。使用监听机制对节点监听,一旦节点删除,其他线程被唤醒,立即进行抢锁。

  1. 使用zookeeper创建临时性节点
  2. 谁创建成功,谁就拿到锁,谁拿到锁,谁就生成订单号成功
  3. 连接断开,释放锁

猜你喜欢

转载自blog.csdn.net/weixin_42545256/article/details/82966695