这是我参与「第五届青训营 」伴学笔记创作活动的第 10 天
系统设计的定义
- 系统
- 关联的个体
- 规则的运作
- 组成工作的整体
- 设计
- 设想和计划
- 目的
- 过程安排
为了达成某种目的,通过个体组成整体的过过程
如何做系统设计
4S设计
- 场景分析(Scenario) 什么系统,需要哪些功能,多大并发量
- 存储设计(Storage) 数据如何组织,Sql存储还是Nosql存储
- 服务设计(Service) 业务功能实现和逻辑整合
- 可扩展性(Scale) 解决设计缺陷,提高鲁棒性、扩展性
电商系统设计
场景
- 参与者:人、场、货
- 商品概念:具有交易价值和属性的信息载体
秒杀业务特点
- 瞬时流量高(某时刻流量集中)
- 读多写少(用户行为分析)
- 实时性要求高(高速刷新)
秒杀挑战
- 高性能
- 扩展性
- 鲁棒性
- 资源成本
- 放止超卖
- 流量管控
- 反欺诈
存储
数据库表的设计(uml图)
服务
- 子服务
- 用户服务
- 风控服务
- 活动服务
- 订单服务
- 基础组件
- ID生成器
- 缓存组件
- MQ组件(保护系统,异步)
- 限流组件(保护系统,限流)
扩展
- 流量隔离
- CDN(资源分发)
- 缓存优化
- 流量管理
- 数据库扩展
- 数据库扩展
- MQ扩展(主从,多主多从,提高稳定性)
- Redis扩展
- 服务水平扩展(负载均衡,反向代理)
- 服务垂直扩展
小结
本次课程为实践课,本身基础知识不多,基本全部记录,个人以此课程作为预先学习,待以后实际接触时希望能够“似曾相识”,而系统设计个人感觉其实在平时项目实践中已经或多或少有考虑到,包括缓存,数据库设计,鲁棒性相关设计和扩展,而本次课程更加系统学习了系统设计,之后能够更加有意识地去优化项目而非习惯性地进行优化。