zookeeper集群和分布式锁

78 阅读1分钟

1.集群

cp架构:leader负责写,follower负责读,写强一致,读是顺序一致性(带版本号)

2.leader选举

3.数据同步-ZAB协议

leader同步到follower ,过半同步成功才返回客户端成功

4.分布式锁

4.1数据库

客户端往数据库插入一条数据,插入成功获取锁,执行业务逻辑删除数据释放锁 问题:客户端挂了 无法自动释放锁,释放锁无法及时通知其他客户端获取锁

4.2zookeeper

  • 客户端创建临时节点获取锁,执行业务逻辑,删除节点释放锁,
  • 客户端挂了临时节点有过期时间自动释放锁,锁释放通过watch机制通知其他线程获取锁

4.3解决多线程同时获取锁的羊群效应

  • 创建一个批临时有序节点,让最小的节点获取锁,获取成功执行业务逻辑,执行完释放锁通知下一个最小有序节点获取锁,该有序节点删除。
  • 有序节点相当于创建了一个队列存放获取锁的线程实现有序获取锁,最终实现公平锁解决群效应。