一、目标:
1、简化手动开关锁的重复代码(专注业务本身)
2、集成不同分布式锁解决方案(锁不同使用方式不同)
3、规范锁的命名和异常信息内容(内容不规范,不易于理解和维护)
4、避免事务大于锁的优先级,造成幻读(事务和锁使用不熟)
二、基本需求:
锁的命名、异常信息、锁等待时间、快速失败、异常是否抛出
三、设计思想:
通过springAOP和order注解在方法上切入解决事务和锁的优先级,提供统一开关锁接口loackManager集成不同分布式锁作为锁管理器,使用springEL表达式规范锁的命名和异常信息内容
四、常规分布式锁实现方案
1、jvm进程级内存容器(单机),如concurrentHashMap
2、spring提供的(支持集群)
jdbc-lock-registry、redis-lock-registry、zk-lock-registry
五、代码