优惠券秒杀(集群下的线程并发问题(微服务集群))

第一步:如何模拟(idea可以复制服务)

配置端口防止端口冲突

第二步:利用nginx做反向代理负载均衡


然后重新加载nginx配置(nginx -s reload)

第三步:测试:nginx是否生效了,我们访问8080(他会反向代理到8081或者8082)


在8081和8082上都有一个请求

第三步:测试秒杀下单(syn没有锁住,还是有并发安全问题)


其中两个服务都收到请求了(那么此时放行都就会扣减两次了(并发问题)syn没有锁住)

问题:
1、单个服务器(tomcat)例如:我们在单个服务时候。是在一个jvm上的,有一个锁的监听器当线程1来获取锁的时候这锁的监听器就会记录线程1这个名称。线程2再来获取就不行。锁的监视器里面已经有了(也就是互斥了)。
2、集群(多个服务器(tomcat))。另一个tomcat里面的jvm就是全新的了那么锁的监视器也是全新的(jvm都有各自的堆,栈,方法区,常量池啥的了。)当我们线程3来获取也能获取成功咯,只是线程4会出新问题。

解决思路:让多个jvm实现同一把锁(同一个锁监视器)