/Seckill

Primary LanguageJava

Seckill


1.是什么

Seckill 是一个支持高并发的电商秒杀系统。

由用户模块、购物车模块、商品模块和订单模块构成,因为需求是由我方向系统添加待秒杀商品,因此没有供应商模块。

2.技术栈

1)SpringBoot2.3

2)MySQL5.7

3)Redis6.0

4)Kafka2.3


3.设计思路

1)使用了通过版本号机制实现的乐观锁机制,辅以悲观锁来提高 MySQL 并发性。

2)通过在数据库层之前添加了 Redis 缓存层,来缓解 MySQL 压力。

3)提供缓存预热来添加静态热点,也可以通过 LRU 机制追逐动态热点。

4)通过 Cache Aside 策略,具体是延时双删策略,并且设置缓存超时时间来保证数据库和缓存的最终一致性。

5)通过 Kafka 消息队列实现了请求的异步削峰。

6)使用计数器限流算法,通过 Redis 的 Lua 脚本以及 key 的超时机制实现接口限流功能,避免系统被突发大流量冲垮。

4.参考文章

https://github.com/yunfeiyanggzq/miaosha