秒杀系统的设计 | 青训营笔记

101 阅读2分钟

这是我参与「第五届青训营 」笔记创作活动的第6天

前言

秒杀业务可谓是高并发项目的黄金案例,其实有许多知识可以学习。曾经我也大言不惭的在简历上写到了了解秒杀业务。但仅仅是写了了解,就被面试官各种拷打。如今再次学习,希望能对秒杀业务了解的更多一点。

如何做系统设计

软件系统设计一般分为三个步骤:需求分析、系统规划、详细设计。需求分析是对系统的功能需求进行分析,明确系统的目标和要求;系统规划是对系统的结构进行大致的规划;详细设计是通过数据流图,逻辑架构图,状态图,以及子系统设计图等技术来完成系统的设计与实现。

秒杀系统分析

一个成熟的系统应该具有可用性、易用性、安全性、可维护性、扩展性、安全性、性能等等特点。对于秒杀业务来讲,秒杀具有瞬时流量高,即秒杀业务通常是某个整时间点来秒杀,而不是全天开放,在秒杀开始的前几分钟,才开始流量攀升。在这个时间段内,我们则需要面对高并发 的问题。秒杀业务通常来说也是参与抢购的用户数量远多于活动商品的数量,因此是属于读多写少的场景,并且对实时性也有一定的要求。

秒杀业务的架构设计

我们的基础数据存储可采用MySQL,然后可以通过使用Redis、RocketMq等组件来应对高并发的挑战。应用层则有发布活动、秒杀详情、秒杀下单、ID生成、限流、MQ等组件。用户可在IOS、Android、Web平台通过访问我们的Nginx来进行接入。

思考与总结

之前做秒杀系统只考虑到使用Redis以及一些乐观锁来处理高并发。其实还可以引用消息队列来进行削峰处理,进一步的降低qps,减轻我们系统的压力。另一方面,也可以做一些用户方面的拦截,如一分钟内只能请求固定的次数等方式来进行拦截。虽然多学了一点东西,但是总觉得了解的还是太少,没有真实的参与的业务开发中去。继续学习吧!