版权声明:Summer https://blog.csdn.net/csdnyanglei/article/details/82258537
参考目录:
注:分布式锁、分布式事务、分布式事务锁是不同的概念
背景
同一个服务,集群部署时,对同一个资源的调用存在竞争问题,在一个进程上对多线的程资源竞争问题可以采用java等关键字及锁去解决。但多进程环境中,前者已经无法满足这种情况了。故需要需求一种解决方案来满足资源竞争问题。
需求
经过调研,分布式锁有以下要求:
- 可以保证在分布式部署的应用集群中,同一个方法在同一时间只能被一台机器-上的一个线程执行;
- 这把锁要是一把可重入锁(避免死锁);
- 这把锁最好是一把阻塞锁(根据业务需求考虑要不要这条);
- 这把锁最好是一把公平锁(根据业务需求考虑要不要这条);
- 有高可用的获取锁和释放锁功能;
- 获取锁和释放锁的性能要好;
根据项目需求,我们应该满足其中的1、2、3(支持阻塞或非阻塞)、5、6。
实践
目前的项目中,已经采用了Redis数据库,考虑采用Redis来协助完成分布式锁的功能。