10 2019 档案
摘要:结论:如果在service层的方法上同时使用事务和同步锁无法保证数据同步。 1 @Service 2 public class ServiceImpl{ 3 4 private static Lock lock = new ReentrantLock(false); 5 6 @Transaction
阅读全文
摘要:一.前言 最近项目遇到多线程并发的情景(并发抢单&恢复库存并行),代码在正常情况下运行没有什么问题,在高并发压测下会出现:库存超发/总库存与sku库存对不上等各种问题。 在运用了 限流/加锁等方案后,问题得到解决。 限流方案见本人另一篇博客:Guava-RateLimiter实现令牌桶限流 加锁方案
阅读全文
摘要:一.前言 对于一个应用系统来说,我们有时会遇到极限并发的情况,即有一个TPS/QPS阀值,如果超了阀值可能会导致服务器崩溃宕机,因此我们最好进行过载保护,防止大量请求涌入击垮系统。对服务接口进行限流可以达到保护系统的效果,一旦达到限制速率则可以拒绝服务、排队或等待、降级等处理。 二.常见限流方案 1
阅读全文