这是我参与「第五届青训营」伴学笔记创作活动的第 12 天
1. 概述
我将主要介绍如下知识点:
- 系统设计方法论
- 电商秒杀业务介绍
2. 系统设计方法论
2.1 为什么要做系统设计
- 个人:提升个人能力、拓展技术视野
- 工作:业务驱动、系统重构、突破和创新
2.2 系统设计的定义
- 系统:关联的个体,规则运作,组成工作的整体
- 设计:设想和计划,目的和过程安排
总结:为了达成某种目的,通过个体组成整体的过程
系统设计是指对系统的功能、性能、可靠性、安全性、易用性、可扩展性等特性进行详细设计,并确定各个部分间的接口、协议、通信方式、数据格式等,旨在通过对需求进行分析,制定出可行的、经济的、可扩展的、可维护的系统解决方案,为后续的实现提供指导
2.3 如何做系统设计
4S 分析法:
-
场景分析(Scenario):- 什么系统,需要哪些功能,多大的并发量
-
存储设计(Storage):- 数据如何组织,Sql 存储,NoSql 存储
-
服务设计(Service):- 业务功能实现和逻辑整合
-
可
扩展性(Scale):- 解决设计缺陷,提高鲁棒性、扩展性
2.4 如何分析系统瓶颈和优化
- 火焰图分析
- 链路追踪
- 性能测试
2.5 如何验证系统的可用性和稳定性
-
链路梳理
核心链路、流量漏斗、强弱依赖
-
可观测性
链路追踪、核心监控、业务报警
-
全链路测试
压力测试、负载测试、容量测试
-
稳定性控制
系统限流、业务兜底、熔断降级
-
容灾演练
混沌工程、应急手册、容灾预案
3. 电商秒杀业务介绍
3.1 电商介绍
三要素:人、货、场
- 消费者侧:消费者,用户,流量来源
- 供给侧:商品,商家,供应链
- 交易环境:线下商场,线上电商
Spu 与 Sku:
SPU(标准产品单位) 和 SKU(库存单位) 是电子商务和零售管理中常用的术语
-
SPU(Standard Product Unit):
标准化产品单元。是商品信息聚合的最小单位,描述了一个产品的特性,如名称、品牌、型号、类别、通用规格等 -
SKU(Stock Keeping Unit):
库存单位。物理上不可分割的最小存货单元。也就是说一款商品,可以根据SKU来确定具体的货物存量
3.2 秒杀的挑战
秒杀业务的特点:
- 瞬时流量高
- 读多写少
- 实时性要求高
秒杀的挑战:
- 资源成本:指系统内部的资源是有限的
- 反欺诈:指采取措施来防止欺诈行为的发生
- 高性能:指系统的运行速度快、效率高
- 防止超卖:指防止商品被卖完后,仍有客户购买到该商品
- 流量管控:指对系统内部或外部的流量进行管理和控制,以保证系统正常运行
- 扩展性:指系统具有较强的可扩展性,可以根据业务需求进行扩展。
- 鲁棒性:指系统具有较强的鲁棒性,即能够适应各种情况,不容易出错。
4. 总结
系统设计是软件工程的一个重要环节,通过对系统的设计,可以方便我们对项目进行合理的计划和安排,保证系统的可扩展性,降低开发过程中的风险,以保证项目的顺利完成。
参考:
- 字节内部课:手把手教你做系统设计