分布式锁

背景:

资源竞争下数据一致性,一般出现在先查询在更新的业务场景中,比如:商品库存(锁库存),火车票等。

控制方式:

方法锁和资源锁。

实现方式:

数据库、缓存、ZK

原则:

(1)可以保证在分布式部署的应用集群中,同一个方法在同一时间只能被一台机器上的一个线程执行。

(2)这把锁要是一把可重入锁(同一个线程可以第二次进入,并获得锁,避免死锁)

(3)这把锁最好是一把阻塞锁(根据业务需求考虑要不要这条)

(4)有高可用的获取锁和释放锁功能

(5)获取锁和释放锁的性能要好

实现方式

分布式锁_第1张图片
实现方式


分布式锁_第2张图片
对比

方案比较:


分布式锁_第3张图片

基于Redis的分布式锁可以使用Redisson

由于Redis无法保证数据的一致性,而ZK对锁的实现创建临时节点和watch机制,执行效率,扩展能力等方面比etch弱,建议选择etcd方案

你可能感兴趣的:(分布式锁)