高并发场景处理方案

一.并发锁

        首先我们要知道高并发下会出现某一个时刻流量猛增,还有就是如果是抢购之类的库存类并发可能会导致超卖库存为负数之类的,对于并发锁来说主要是解决抢购超卖问题的,并不能很好的解决流量猛增给服务器带来的压力,有时候甚至会加重服务器的压力,所以我们并发量小及服务器配置比较高的时候可以用并发锁来处理,下面就介绍几种常用的并发锁

        1.synchronize(同步排它锁)

        这个对于java开发来说肯定不陌生,它可以让各个线程同步执行,缺点是极度的耗费性能,临时处理可以使用,经常使用的情况下不推荐

        2.数据库锁

        mysql数据库也是自带锁的,这种情况一般用行锁,不过这个会产生事务阻塞数据库,极度耗费性能,且容易造成死锁,一般在内部确定的极低的并发(一般就2个并发)的时候使用

        3.redis锁

        这个用的比较多,首先redis单进程且性能比较高,而且可以分布式实现,我们一般用set nx px 来实现

二.队列

        当我们的流量达到一定的程度,服务器无法负载了,则就需要进行流量消峰了,这时候我们队列就可以排上用场了,这时候我们我们可以把请求推到队列中,然后及时响应请求,至于并发结果我们可以在另一个页面接口或者发邮件展示,这个个方法的缺点就是不能直接获取到队列请求的结果,不过也算是比较优秀的一种方式了

三.预存队列

        上面我们提到了无法获取到队列请求的结果,有时候需要立刻展示的时候比较麻烦,这时候我们就可以倒转队列的消费者生产者了,先预先在队列中预存一定量的货物,让客户抢单请求来消费客户端的货物,这样就能通过是否从队列中取到货物来直接返回结果了,当前上面的请求都要注意好重复请求,重复下单的情况

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值