写点什么

架构实战营 - 毕业设计

用户头像
大可
关注
发布于: 1 小时前

【毕设背景和要求】

【业务背景】

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

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

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

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

4. 老板要求万无一失。

【技术背景】

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

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

目前只有单机房。

【毕设要求】

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

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

架构实战营 毕业设计

原文链接: https://xie.infoq.cn/article/6bbffaa4bd327df7ec84f1c14


一、系统分析

1.1 约束条件


技术团队以 Java 为主,已经落地了微服务架构;活跃用户 100 万;每个品类不超过 20 个商品,目前做了 10 个品类。

1.2 核心业务流程分析

1.3 系统复杂度分析

秒杀系统的业务复杂度不高,质量复杂度要求较高。系统需要保证 7*24 消息运行。系统不能因为参与秒杀的用户过多造成不可下单或者不可支付的情况。


二、总体架构

按照业务域进行划分,每个业务域内划分为几个服务。按照组粒度进行拆分,随着业务的发展以及后期团队规模的扩大,再做进一步的拆分。

总体架构:


系统架构:


三、缓存

因为系统用户量大,秒杀活动开始前后,会有大量的并发请求,为缓解后台服务器对静态资源的处理的压力,同时提高请求处理性能,采用多级缓存的缓存架构。


四、存储

由于已经落地微服务,单个服务内使用 mysql 采用读写分离、主从复制的存储架构。同时,用户、订单等相关业务(与用户有直接关系的相关业务),采用分库分表架构。

主从架构

分库分表:

按照用户 ID 分片,每个服务器存储 200 万的数据。


五、负载均衡

注册用户万,预估秒杀的时候可能会有 20%的用户在线参与约 200 万用户;应该采用多级负载均衡架构。


六、异地多活

目前公司只有单机房,但是考虑到公司的用户量、业务范围等,在可预见的时间范围内(1-2 年)会有稳步的发展,借秒杀系统开发、上线的需求,为公司下一步发展做基础,故秒杀系统采用异地多活架构,机房分南北机房。机房间数据同步,分业务分别采用消息队列同步和数据库同步。




七、总结

秒杀系统本质上是一个满足高并发、高性能、高可用的分布式系统。

系统设计应该注意:

1、数据尽量少:用户的请求尽量少;

2、请求数要尽量少:合并 css 和 javascript 等,加快页面的渲染速度。

3、路径要尽量短:用户发出请求到返回数据经过的中间节点越少越好。

4、依赖尽量少:完成一次用户请求必须依赖的服务。

5、避免单点:单点意味着风险,没有备份,不可控,设计要消除单点的影响。


后记:终于赶在时间节点把作业勉强完成了。


用户头像

大可

关注

还未添加个人签名 2017.11.21 加入

还未添加个人简介

评论

发布
暂无评论
架构实战营-毕业设计