zookeeper——应用(三)

分布式锁

我们将锁抽象成目录,多个线程在此目录下创建瞬时的序列节点,因为Zk会为我们保证节点的序列性,所以可以利用节点的序列进行锁的判断。

  1. 首先创建序列节点进行升序排序,然后获取当前目录下最小的节点,判断最小节点是不是当前节点,如果是那么获取锁成功,如果不是那么获取锁失败。
  2. 获取锁失败的节点获取当前节点上一个顺序节点,对此节点注册监听,当节点删除的时候通知当前节点。
  3. 当unlock的时候删除节点之后会通知下一个节点。

配置中心

解决思路:

  1. 把公共配置抽取出来
  2. 对公共配置进行维护
  3. 修改公共配置后应用不需要重新部署案

采用方案:

  1. 公共配置抽取存放于zookeeper中并落地数据库或配置文件中
  2. 对公共配置修改后发布到zookeeper中并落地数据库或配置文件中
  3. 对应用开启配置实时监听,zookeeper配置文件一旦被修改,应用可通过watch实时监听到并获取

注册与发现

Eureka VS ZK

zookeeper——应用(三)_2020-11-02-10-49-42.png

Eureka的哲学是,同时保留”好数据“与”坏数据“总比丢掉任何”好数据“要更好

从注册发现的角度上来看 Eureka 优于 ZK。

文章目录
  1. 1. 分布式锁
  2. 2. 配置中心
  3. 3. 注册与发现
|