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

被折叠的 条评论
为什么被折叠?



