架构师训练营第 9 周课后练习
设计一个秒杀系统,主要的挑战和问题有哪些?核心的架构方案或者思路有哪些?
主要问题
高性能
一致性
高可用
架构原则
请求数据尽量少 - 包括用户上传给系统的数据和系统返回给用户的数据
请求数量尽量少 - 浏览器的每个请求都会消耗资源和时间,如 TCP 三次握手、HTTP 连接数限制、DNS 解析等
请求路径尽量短 - 缩短请求路径可以增加可用性,也可以提升性能和减少延迟
系统依赖尽量少 - 对秒杀不重要的依赖在紧急情况下可以去掉
架构方案
系统隔离
申请单独的域名,独立部署在不同的集群,尽量减少对现有系统的影响
动静分离
采用 JS 自动更新技术将动态页面转化为静态页面
把静态页面请求转移到 CDN
流量削峰
限制进入秒杀页面请求做限制,流程越往后限制越严格
用消息队列把直接调用转化成异步的间接推送
评论