1.集群
cp架构:leader负责写,follower负责读,写强一致,读是顺序一致性(带版本号)
2.leader选举
3.数据同步-ZAB协议
leader同步到follower ,过半同步成功才返回客户端成功
4.分布式锁
4.1数据库
客户端往数据库插入一条数据,插入成功获取锁,执行业务逻辑删除数据释放锁 问题:客户端挂了 无法自动释放锁,释放锁无法及时通知其他客户端获取锁
4.2zookeeper
- 客户端创建临时节点获取锁,执行业务逻辑,删除节点释放锁,
- 客户端挂了临时节点有过期时间自动释放锁,锁释放通过watch机制通知其他线程获取锁
4.3解决多线程同时获取锁的羊群效应
- 创建一个批临时有序节点,让最小的节点获取锁,获取成功执行业务逻辑,执行完释放锁通知下一个最小有序节点获取锁,该有序节点删除。
- 有序节点相当于创建了一个队列存放获取锁的线程实现有序获取锁,最终实现公平锁解决群效应。