这是我参与「第五届青训营 」伴学笔记创作活动的第 6 天。
系统:为了达成某种目的,通过个体组成整体的过程
对系统设计的深入思考能极大的提升个人能力和工作水平
评估系统
- 可用性
- 扩展性
- 安全性
- 易用性
- 性能
- 可维护性
- 耦合性
- 伸缩性
如何做系统设计
- 场景分析(Scenario) :什么系统,需要哪些功能,多大的并发量
- 存储设计(Storage) :数据如何组织,SQL存储,NoSQL存储
- 服务设计(Service) :业务功能实现和逻相整合
- 可扩展性(Scale) :解决设计缺陷,提高鲁棒性、扩展性
保证可用性和稳定性手段
- 链路梳理 核心链路 流量漏斗 强弱依赖
- 可观测性 链路追踪(微服务必备) 核心监控 业务报警
- 全链路测试 压力测试(个人用于压力测试工具:jmeter) 负载测试 容量测试
- 稳定性控制 系统限流 业务兜底 熔断降级
- 容灾演练(出错是必不可免的) 混沌工程 应急手册 容灾预案
电商
- 商品:具有交易价值和属性的信息载体
- SPU (Standard Product Unit):标准化产品单元。SPU是商品信息聚合的最小单位,是一组可复用、易检索的标准化信息的集合,该集合描述了一个产品的特性。
- SKU (Stock Keeping Unit):库存量单位
秒杀特点
瞬时流量高,读多写少,实时性要求高
挑战
资源成本
防止超卖
高性能
扩展性
反欺诈
流量管控
秒杀系统
- 场景:
功能:
秒杀活动发布
秒杀下单
秒杀商品详情
并发:
万人参与秒杀
QPS 1w+
TPS1k+
- 存储:
Localcache
Redis
MySQL
- 服务:
子服务
用户服务
风控服务
活动服务
订单服务
基础组件
ID生成器
缓存组件
MQ组件
限流组件
- 扩展:
流量隔离
CDN
缓存优化
流量控制
数据库扩展
Reids扩展
MQ扩展
服务垂直和水平扩展
- 系统架构
- 秒杀流程