都知道普通的jvm锁,无法锁住跨jvm的线程,但是如何复现这个现象呢?
我现在用单体zookeeper进行dubbo远程调用,发现三个dubbo消费者(tomcat:8080,8081,8082)发送的请求最终都被dubbo抢走了,进入provider方的线程名都是:ip+dubbo-common-thread-x,所以又变成了单进程多线程,我用的是jmeter同时调用3个端口的请求。
我想学习一下为什么要引入分布式锁,但是一直无法复现jvm锁失效的现象,求各位大佬赐一个demo 😃
引入负载均衡, tomcat(win):8080,8081部署类似订单的模块集群,tomcat(linux): 8082,8083部署类似库存的模块集群,当负载均衡将多个请求分别通过8080->8082
8080->8083
8081->8082
8081->8083四种路径进行请求时,库存模块中的锁是无法锁住多进程多线程的,所以此时必须把“查库存下订单”这个操作进行加锁,这才是引入分布式锁的原因
很棒!
Redis设置一个key,数字。
开两个以上JVM,每个把这个key加1W次1,检查结果:是不是符合预期。
加了分布式锁又会怎样呢。
这里的 redis的一个key,也可以用zookeeper 中的 一个 node 替代吧?
我想复现的是怎么让synchronized失效
感谢回复