redis 并发锁的疑问 可以给个方案嘛
业务场景:
1.现在有一个活动资源金额,但是需要实时计算。(其中包括金额使用和退还)
比如活动1 设置总金额10000,用户参加活动,但是不同的条件使用的活动金额不同,没法全部缓存。
2.活动金额的使用是在分布式机器服务上的,防止并发消耗产生资源数量超限问题,和回退金额,我这边做了redis的分布式锁,使用的是setnx,getset的方式
问题:
1.金额消耗和回退我都先加锁,完成业务逻辑后释放锁,正常消耗一单大概需要10ms左右,退单全流程在20ms左右
2.问题是高并发的时候,第一个线程在处理消耗、退单时,第二个和其它线程全部等待。
第一个线程处理完,第二个线程处理,第三个线程和之后的继续等待。
以此场景等待,比如100个消耗线程,虽然单次处理时间不慢,但是等到第100个线程进行消耗时,此时等待时间已经不能接受了。
3.实际场景线上并发没那么高,也就30了不起了,但是最坑爹的是公司有要求,得抗200并发,循环进行200并发压测,扛不住啊,现在会后面直接爆超时
求解:
遇到这样的场景,我能从什么方面进行处理,中间的消耗、恢复已经很优化了没什么优化空间了。
有什么方案嘛,给点建议,或者方向吧,谢谢大拿们啊。