架构师训练营第九周作业 1
设计一个秒杀系统,主要的挑战和问题有哪些?核心的架构方案或者思路有哪些?
设计一个秒杀系统,主要的挑战和问题是秒杀时候,高并发会容易导致网络带宽耗尽,服务器 load 飙高,停止响应,数据库瘫痪。从而会导致网站不可用。同时,如果系统设计不够完善,还容易被人钻空子,在秒杀开始之前就已经可以完成下单操作。如果在现有的网站上来增加秒杀功能,短时间内要让系统扩容几十甚至上百倍,在技术和资金上面都是非常困难的事情。
对于短时间要实现的秒杀系统,可以重新建立一个系统,专门负责秒杀功能,从而达到和原有系统隔离开来,出问题不会影响到原有系统。对于一个秒杀系统,高并发只是出现在秒杀商品列表和商品介绍两个页面,对于填写订单和支付则人数不会很多,完全可以利用之前的系统来实现填写订单与支付功能。所以分析下来,只要新建的秒杀系统能够应付高并发的商品列表和商品介绍即可。为到达这个目的,采取的方案包括:
静态化:采用 JS 自动更新技术将动态页面转化为静态页面。去掉所有动态数据库查询。
并发控制,设计阀门,只放最前面的一部分人进入秒杀系统。
简化流程,砍掉不重要的分支。
前端优化,提升页面响应速度。
同时,系统的各个部分进行调优。例如 webserver,tomcat,优化静态页面,采用 CDN 缓冲和反向代理,加速核心页面。
评论