Zookeeper实现分布式锁
- Zookeeper的节点递增性,可以规定节点编号最小的那个获得锁。
- 节点的监听机制可以保证占有锁的方式有序且高效。
- 避免羊群效应(节点挂掉时,所有节点监听)。
- C
AP原则
Redis实现分布式锁
- Redisson框架中的类库实现,性能较高。
- setnx [key] [value]实现分布式锁
- 通过设置过期时间expire解决setnx长期有效的问题(原子性得不到满足)
- set [key] [value] [EX seconds] [PX milliseconds] [NX|XX]:NX键不存在时操作;XX键存在时操作
- 机制:加载锁(锁不存在则加锁);锁互斥(不包含客户端id则循环等待);watch dog自动延期;可重入加锁;释放锁。
C AP原则
分布式锁特点
- 互斥性:任意时间只能有一个客户端获取锁。
- 安全性:锁不能由其他客户端删除。
- 死锁:机制避免。
- 容错:宕机时仍能释放和获取锁。
分布式系统的CAP原则
- Consistency:一致性,更新复制到整个分布式系统,以保证数据的最终一致。
- Availablity:可用性,服务一直可用
- Partiton Torerant:分区容错性,分布式系统在遇到某节点或网络分区故障时,能够对外提供一致性或可用性的服务。
2pc和3pc
- 2pc(阻塞,协调者单点问题):提交请求阶段,参与者将结果通知协调者;提交阶段,协调者根据反馈决定是否提交。
- 3pc(降低阻塞范围,避免了协调者单点问题):CanCommit阶段,询问是否可以提交;PreCommit,可以则预提交,否则中断事务;Do Commit,提交。
分布式
原文:https://www.cnblogs.com/ash1523590342/p/13461598.html