这是我参与「第五届青训营 」笔记创作活动的第12天
系统设计
为了达成某种目的,通过个体组成整体的过程
系统设计方法
- 4S分析法
- 场景分析(Scenario) 什么系统,需要哪些功能,多大的并发量
- 存储设计(Storage) 数据如何组织,Sql存储,NoSql存储
- 服务设计(Service) 业务功能实现和逻辑整合
- 可扩展性(Scale) 解决设计缺陷,提高鲁棒性、扩展性
分析系统瓶颈和优化
- 火焰图分析
- 链路分析
- 全链路压测
验证系统的可用性和稳定性
- 链路梳理
- 可观测性
- 全链路测试
- 稳定性控制
- 容灾演练
评估系统标准
- 可用性
- 易用性
- 可维护性
- 安全性
- 扩展性
- 耦合性
- 伸缩性
- 性能
秒杀系统设计
秒杀业务的特点
- 瞬时流量高
- 读多写少
- 实时性要求高
挑战
- 资源有限性
- 反欺诈
- 高性能
- 防止超卖
- 流量管控
- 扩展性
- 鲁棒性
秒杀流程
-
用户下单抢购
-
系统响应
- User服务
- 风控服务
- 活动校验
- 预扣除库存(如果没有命中缓存,访问持久存储)
-
通过MQ进行削峰
-
订单服务对MQ进行消费
-
订单服务访问mysql扣除库存(需要检查订单是否有效)
-
通过支付系统支付
系统设计中,从场景、存储、服务、拓展四个方面考虑如下:
- 场景分析:确定系统的功能和需求,对系统的主要业务场景进行分析。
- 存储设计:确定存储数据的结构和方式,考虑到系统的数据量和并发读写需求,选择合适的数据库。
- 服务设计:设计系统的架构,确定系统的各个服务模块,如:订单服务、库存服务等。
- 可拓展性:考虑系统的可拓展性和高可用性,设计系统的架构以支持更大的请求量和更高的并发处理能力。
在系统设计中,要考虑如何利用现有的技术解决问题,并且不断评估系统的性能和效率,进行迭代优化。
而秒杀业务需要满足。高并发:秒杀业务的商品数量有限,同时有大量用户在秒杀,导致请求高并发。高吞吐量:由于高并发,秒杀业务需要高效处理请求,保证高吞吐量。实时处理:秒杀业务需要实时处理请求,保证用户的抢购结果能及时生效。数据一致性:秒杀业务需要保证商品数量的实时准确性,避免重复销售和超卖现象。安全性:秒杀业务需要防范恶意攻击,如刷单、机器人请求等,保证秒杀过程的公平性。