文件名称:seconds-kill:基于Springboot + Redis + Kafka的秒杀系统,乐观锁+缓存+限流+异步,TPS从500优化到3000
文件大小:101KB
文件格式:ZIP
更新时间:2024-02-23 16:18:42
mysql nginx redis kafka maven
如何设计一个秒杀系统 系统的特点 高效:秒杀涉及大量的并发读和并发写,因此支持高并发访问这点非常关键 一致性:秒杀商品减库存的实现方式同样关键,有限数量的商品在同一时刻被很多倍的请求同时来减库存,在大并发更新的过程中都要保证数据的准确性。 高可用:秒杀时会在一瞬间涌入大量的流量,为了避免系统停机机,保证高可用,需要做好流量限制 优化思路 初步优化:将请求阻止拦截在系统上游 假设现在库存为10,有1000个购买请求,最终只有10个可以成功,99%的请求都是无效请求 削峰:秒杀请求在时间上高度集中于某一个时间点,瞬时流量容易压停机系统,因此需要对流量进行削峰处理,缓冲瞬时流量,尽量让服务器对资源进行平缓处理 初步:将同步请求转换为异步请求,来提高并发量,本质也是削峰处理 利用缓存:创建订单时,每次都需要先查询判断库存,只有少部分成功的请求才会创建订单,因此可以将商品信息放在缓存中,减少数据库查询 负载均衡:利用Nginx等价使用多个服务器并发处理请求,减少多个服务器压力 前端优化: 限流:前端答题或验证码,来分散用户的请求 禁止重复提交:限定每个用户发起一次秒杀后,需等待才可以发起另一次请