采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师,看了分布式锁我有2点疑问:
当您调试模拟高并发时,tomcat1 debug到closeOrder时暂停等待,然后tomcat2放行(当前时间大于tomcat1写入锁的时间),然后您tomcat1也F8直接放行,那tomcat1中执行closeOrder方法,获取不到锁应该会出问题吧?
这种分布式锁,假如我有10台机器做集群,那其实还是每个定时任务排队执行,那是不是没有充分发挥到集群的优势呢
你好同学,很好的问题。
这个只是模拟一个场景,在 setnx的时候,只会有一个成功。
分布式锁就是解决在分布式环境下把并行做成串行,的确没有发挥集群优势, 这个和hadoop的map reduce是两种方式。
非常感谢老师的解答
不客气,但是在分布式锁的时候我可以提供一个思路,就是在任务量非常大的时候,可以获取一些任务带走,然后释放锁。然后其他机器继续获取要做的任务。释放锁,然后获取锁的机器做任务。把获取锁和做任务再实现一层异步~提高分布式锁这种方式的效率。
感谢老师的思路 我这样理解对不对,像我们这个商城业务,我们第一次只获取任务,打个标记,然后释放锁。不执行关单操作,把获取到的任务放入redis缓存或者mq当中,再由当前机器的另一个定时器去执行任务
菠萝兄,这个是tomcat1执行到closeOrder方法时,暂停,然后tomcat2执行完后再放行tomcat1 在这节课程的第20分钟左右
1、什么叫执行closeOrder方法获取不到锁,能执行closeOrder就一定会设定锁了
登录后可查看更多问答,登录/注册
Tomcat集群+Redis分布式+代码重构+源码原理解析
1.6k 17
2.6k 12
1.7k 12
1.6k 11
1.9k 10