如何做系统设计
1. 场景分析(Scenario)
什么系统,需要哪些功能,多大的并发量
2. 存储设计(Storage)
数据如何组织,Sq|存储, NoSq|存储
3. 服务设计(Service)
业务功能实现和逻辑整合
4. 可扩展性(Scale)
解决设计缺陷,提高鲁棒性、扩展性
如何保证可用性和稳定性
电商秒杀业务介绍
业务特点
- 瞬时流量高
- 读多写少
- 实时性要求高
主要挑战
资源成本、资源成本、防止超卖、高性能、流量管控、扩展性、鲁棒性
如何设计
1. 场景
- 功能:1. 秒杀活动发布 2. 秒杀商品详情 3. 秒杀下单
- 并发:1. 万人参与秒杀 2. QPS 1W+ 3. TPS 1k+
2. 存储
mysql->redis->localcache
3.服务
- 子服务:1. 用户服务 2. 风控服务 3. 活动服务 4. 订单服务
- 基础组件:1. ID生成器 2 .缓存组件 3. MQ组件 4. 限流组件
4.扩展
流量隔离、CDN、缓存优化、流量管控、数据扩展、MQ扩展、Redis扩展、服务垂直/水平扩展
系统架构图
秒杀流程图
服务无状态->批量写入->最终一致性
面试参考:https://www.bilibili.com/video/BV1dP411w7Wt/?spm_id_from=333.337.search-card.all.click&vd_source=1bf97eebc4302da23ef24969da020c74