0
点赞
收藏
分享

微信扫一扫

秒杀(高并发)系统关注的问题

image.png image.png

// 如果当前这个场次的商品库存信息已经上架就不需要上架
// 5、使用库存作为分布式Redisson信号量(限流)
// 使用库存作为分布式信号量
RSemaphore semaphore = redissonClient.getSemaphore(SKU_STOCK_SEMAPHORE + token);
// 商品可以秒杀的数量作为信号量
semaphore.trySetPermits(seckillSkuVo.getSeckillCount());
}
 /**
     * 当前时间
     * @return
     */
    private String startTime() {
        LocalDate now = LocalDate.now();
        LocalTime min = LocalTime.MIN;
        LocalDateTime start = LocalDateTime.of(now, min);
        start.minusHours(8);

        //格式化时间
        String startFormat = start.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
        return startFormat;
    }
// 如果占位成功说明买过
// 分布式信号量 减
RSemaphore semaphore = redissonClient.getSemaphore(SKU_STOCK_SEMAPHORE + randomCode);
boolean b = semaphore.tryAcquire(num, 100, TimeUnit.MILLISECONDS); // 从信号量取出来 num 取出数量 100 微秒快速尝试 不占用时间

String timeId = IdWorker.getTimeId(); // 分布式自增长ID
举报

相关推荐

0 条评论