大家好,我是树哥。
秒杀系统的设计是高级职位面试中非常高频的一道题目,它可以较好地考察候选人的知识体系情况。对于我们来说,学习秒杀系统的设计,能够让我们学以致用,设计系统的时候考虑得更加全面。今天就让树哥带你一起来看看怎么设计一个秒杀系统!
活动一般出现在电商的促销活动中,一般是指定了很少数量的商品,以极低的价格,让大量的用户参与,从而造成大量用户在极短的时间内参与活动,进而造成系统在极短的时间内有极高的流量。系统设计的目的是使系统能够稳定地支撑活动的进行,因此其稳定性、高可用是我们考虑的第一位。
要知道如何进行秒杀系统的优化,那我们需要先对请求的整个流程有个全局的认识。一般来说,秒杀活动请求以公网为划分点,可以分为:前端部分、后端部分。 前端部分指的是从用户端到进入后端服务前的部分,包括了移动端的处理、DNS 解析、公网的数据传递等。
后端部分指的是经公网进入了后端的服务器网络里,包括了前置的负载均衡(Nginx 等)、应用服务器、数据库层等。秒杀活动的整个流程可以用下图来表示。
我们要去设计一个秒杀系统,那自然也是从这两大部分来进行优化。整体思路是尽量将流量挡在前面,让尽量少的流量留到后端部分。因为越往后端,我们的处理逻辑就越重,其处理能力也越弱。
前端优化
对于前端部分来说,常见的优化手段有:页面静态化 + CDN、请求频率限制。
页面静态化 + CDN
一般来说,活动页面是流量最大的地方。活动页面上绝大部分内容都是固定的,比如:商品描述、图片等。这时候没有必要每次都去请求服务端,而是将这