写点什么

毕业设计

用户头像
青生先森
关注
发布于: 3 小时前

题目


设计电商秒杀系统

【业务背景】

你作为一个电商创业公司的架构师,负责设计 6.18 大促秒杀系统的设计,你们的业务模式如下:

  1. 你们挑选选品各大电商平台上畅销和好评的商品进行销售,每个品类不超过 20 个商品,目前做了 10 个品类;

  2. 本次 6.18 秒杀选择了 1000 个充电宝,10 台 iPhone12 作为秒杀商品;

  3. 正常的日活大约 100 万用户;

  4. 老板要求万无一失。

【技术背景】

  1. 技术团队以 Java 为主,已经落地了微服务架构;

  2. 主要渠道是自有的 App(包括 iOS 和 Android)和微信小程序,为了促进用户转化为 App 用户,只有下载 App 才能参加秒杀活动;

  3. 目前只有单机房。

【毕设要求】

  1. 设计完整的架构,例如存储、负载均衡、缓存、高可用、可扩展等;

  2. 大约 10 页以内的 PPT,每页 PPT 说明一项设计,包括架构设计和设计理由,无需详细解释备选方案。

【提示】

  1. 分析考虑要全面,但并不意味着架构设计要面面俱到,如果分析后认为某些设计点可以不做,就在作业最后统一说明原因即可;

  2. 如果没有思路,请对照模块 9 的 IM 案例;

  3. 如果有的信息觉得不够全或者不够细,可以做出一定的假设,但不能天马行空,需要对照已有的业务背景和技术背景进行合理推断

需求分析

  1. 日活跃量为 100 万,假设原架构中有 F5;

  2. 单机房,不能使用 DNS 负载均衡;

  3. 秒杀业务不影响原来业务的场景下,也要保证秒杀业务的正常进行;

概要设计

  1. 将秒杀业务与正常业务隔离;

  2. 秒杀前将商品详情信息,使用 CDN 或者 APP 缓存起来;

  3. 将充电宝和 iphone 两个产品,分别部署在不同的微服务中;

  4. 根据用户的购买需求,分发到不同的微服务中;

  5. 因为是单机房,所以选择一个主从架构;

详细设计

系统架构图


秒杀前

  1. 将商品详细信息缓存在 CDN 或者 APP 缓存中;

  2. 秒杀界面中在秒杀前禁止点击

秒杀中

  1. 客户端随机生成一个数,判断是否在设定范围,如果不在范围内,提示用户秒杀失败,反则将请求发送给后端服务器;

  2. 客户端同时判断用户点击的次数,如果超过一定的次数,提示用户点击次数太多,稍后再试;

  3. 根据用户秒杀商品类型,将请求分发给不同的网关;

  4. 网关中判断用户请求次数,如果同一时间多次请求,直接返回秒杀失败,否则将请求负载均衡到不同的服务器中;

  5. 将请求存入 kafka 中,等待业务服务器消费;

  6. 业务服务器从 kafka 中取出请求消费;

  7. 返回客户端秒杀结果;

用户头像

青生先森

关注

还未添加个人签名 2020.01.13 加入

还未添加个人简介

评论

发布
暂无评论
毕业设计