zookeeper典型使用场景

  1. Zookeeper 非公平锁/公平锁/共享锁
  2. Leader 选举在分布式场景中的应用
  3. Spring Cloud Zookeeper注册中心实战

Zookeeper实现分布式锁

简述:
Zookeeper实现的分布式锁可以分为公平锁、非公平锁和读写锁;
Zookeeper主要利用节点无法重复创建和节点的监听通知机制来实现分布式锁;
节点无法创建特性是指:当一个线程创建了/lock节点后,其他线程再创建这个/lock节点会提示失败,因为zookeeper内部执行命令也像redis一样单线程执行,多个线程同时发送请求会排队执行,当请求创建节点时,如果发现节点已存在,则提示节点已存在;
节点的监听通知机制是指:如果获取锁的线程执行完逻辑删除节点释放锁,其它等待获取锁的线程监听此节点,如果该节点被修改(删除),那么其它节点将会收到通知,表示自己可以抢锁了,如果没有抢到锁,则继续监听/等待该节点;

Zookeeper和redis分布式锁的对比:
Redis是线程向master节点setnx存储数据成功就算获取锁成功,但当master节点还未来得及同步这个setnx数据时就宕机了,剩余的slave的节点会重新选举出一个新master,但是这个新master里没有setnx数据,这样造成这个setnx的所代表的分布式锁失效;(这个也可以解决,redis配置文件中有个配置是指定对少个slave节点同步数据成功,才返回客户端成功,但是这也不能达到百分之百的解决,前面我有详解,因为其选

你可能感兴趣的:(zookeeper,分布式,云原生)