背景:
资源竞争下数据一致性,一般出现在先查询在更新的业务场景中,比如:商品库存(锁库存),火车票等。
控制方式:
方法锁和资源锁。
实现方式:
数据库、缓存、ZK
原则:
(1)可以保证在分布式部署的应用集群中,同一个方法在同一时间只能被一台机器上的一个线程执行。
(2)这把锁要是一把可重入锁(同一个线程可以第二次进入,并获得锁,避免死锁)
(3)这把锁最好是一把阻塞锁(根据业务需求考虑要不要这条)
(4)有高可用的获取锁和释放锁功能
(5)获取锁和释放锁的性能要好
实现方式
实现方式 对比方案比较:
基于Redis的分布式锁可以使用Redisson
由于Redis无法保证数据的一致性,而ZK对锁的实现创建临时节点和watch机制,执行效率,扩展能力等方面比etch弱,建议选择etcd方案
网友评论