前言
这是我参与【第五届青训营】伴学笔记创作活动第十天,今天主要的学习内容是跟系统设计相关的,及电商秒杀业务介绍还有例子实践。
正文
1. 系统设计方法论
- 为什么要做系统设计:在个人方面,应付面试,对个人能力的提升,扩展技术视野,在工作方面:业务驱动,系统重构,突破和创新。
- 如何评估一个系统:可用性,安全性,扩展性,易用性,可维护性等
- 系统设计定义:系统是一些关联的个体,按照特殊规则运作,组成完成工作的整体,设计是按照设想和计划完成目的的过程安排。系统设计定义是为了达成某种目的,通过个体组成整体的过程。
- 系统设计标准的流程:场景分析-存储设计-服务设计-可扩展性
- 如何发现系统的瓶颈:火焰分析图,链路追踪,性能测试。
- 如何保证可用性和稳定性:
- 链路梳理:核心链路,流量漏斗,强弱依赖
- 可观测性:链路追踪,核心监控,业务报警
- 全链式测试:压力测试,负载测试,容量测试
- 稳定性测试:系统限流,业务兜底,熔断降级
- 容灾演练:混沌工程,应急手册,容灾预案
2.电商秒杀业务介绍
- 电商介绍:
- 人,货,场,
- 商品:具有交易价值和属性的信息载体。
- 秒杀业务的特点:瞬时流量高,读多写少,实时性要求高。
- 秒杀的挑战:资源成本,高性能,扩展性,防止超卖,鲁棒性,流量管控,反欺诈
- 如何设计秒杀系统
- 场景:
- 功能:秒杀活动发布,秒杀商品详情,秒杀下单
- 并发:万人参与秒杀,QPS1w+,TPS1k+
- 存储:
- MySQL-Redis-Localcache
- 服务:
- 子服务:用户服务,风控服务,活动服务,订单服务
- 基础组件:ID生成器,缓存组件,MQ组件,限流组件
- 扩展:
- 流量隔离:为了防止秒杀流量过高,影响其他费秒杀商品下单的流量
- CDN:内容分发网站,提高性能,提高静态资源访问非常有效的工具
- 缓存优化:
- 流量管控:
- 数据库扩展:读写分离
- 服务水平扩展:负载均衡,反向代理
- MQ扩展:保证可用性和稳定性
- Redis扩展:
- 服务垂直扩展:去做为服务拆分