秒懂百万级流量,高并发秒杀项目架构设计(附图文)

1. 前置知识

什么是秒杀?

秒杀:生活中很多场景,例如抢优惠卷、大促活动、商品秒杀、抢话费卷等,都是秒杀的具体实现,秒杀通俗的说就是很短时间内,处理大量的请求

1.1. 并发与并行

提到秒杀不难想到高并发的发生,再补充下并发与并行 

并行:在多核处理器的情况下,多个任务可以在同一时间点上同时发生

并发:多个任务在同一个时间段内执行(时间段可以是1s,500s,10ms)

1.2. 如何优化接口的响应时间?

一个能抗住百万级,千万级并发流量的压力的秒杀项目,离不开强大硬件层面和软件层面的支撑,我们这里主要是软件层面的设计,而作为后端开发人员,我们的主要任务是优化接口的响应时间,那么如何优化接口的响应时间呢?可以从以下方法中考虑

  1. 能异步就异步
  2. 减少 IO(统一查,统一写)
  3. 尽早 return
  4. 加锁粒度尽可能小
  5. 事务控制粒度尽可能小
  6. ......

2.秒杀架构

做大促/秒杀/抢购尽量减少接口的处理时间

秒杀的主要业务就是扣减库存,写订单表,这些都是 IO 操作,很耗时间,而用户的请求我们希望立刻回收,所有可以将秒杀分成两个程序(部署到两台机器上),接入层在秒杀开始之前同步 db 的数据到高性能的 redis,用 redis 做库存预扣减,再用 mq 解耦、连接,接入层不做具体业务的 IO 操作,可以立刻回收用户的请求(线程),在服务层去做具体的业务 IO。

redis 做去重用户:实现业务一个人针对一个商品只能抢一次

秒懂百万级流量,高并发秒杀项目架构设计(附图文)_第1张图片

你可能感兴趣的:(java,开发语言,redis,后端,rocketmq,spring,boot,数据库)