这是我参与「第五届青训营 」伴学笔记创作活动的第 10 天
一、本堂课重点内容:
今天的课程是系统设计的实践课程,本课程讲述了如何进行系统设计,并且在课上进行了电商秒杀系统的实际案例讲解。
二、系统设计方法论
系统设计的定义:为了达成某种目的,通过个体组成整体的过程。
如何做系统设计
- 场景分析:什么系统,需要哪些功能,多大的并发量
- 储存设计:数据如何组织,Sql存储,NoSql存储
- 服务设计:业务功能实现和逻辑整合
- 可扩展性:解决设计缺陷,提高鲁棒性,扩展性
如何发现系统的瓶颈
- 火焰图分析
- 链路追踪
- 性能测试
三、电商秒杀业务注意点
人,货,场
秒杀业务的特点
- 瞬时流量
- 读多写少
- 实时性要求高
秒杀的挑战
- 资源有限性
- 反欺诈性
- 高性能
- 防止超卖
- 流量管控
- 扩展性
- 鲁棒性
如何设计秒杀系统
场景-->存储-->服务-->扩展
场景
功能:
- 秒杀活动发布
- 秒杀商品详情
- 秒杀下单
并发:
- 万人参与秒杀
- QPS 1W+
- TPS 1k+
存储:
本地缓存、Redis、MySQL
服务: 子服务:用户服务,风控服务,活动服务,订单服务。
基础组件: ID生成器、缓存组件、MQ组件、限流组件
扩展
- 流量隔离
- 数据库扩展
- 服务水平扩展
- CDN
- MQ扩展
- 缓存优化
- Redis扩展
- 服务垂直扩展
- 流量管控
四、课后人个总结
- 服务无状态当前服务不存储数据和业务。
- 批量写入有效降低系统压力。
- 最终—致性自缓存和MQ会导致不一致,但最终会达到一致。
通过这次的课我了解到系统设计的一些知识点,同时通过秒杀系统的学习,我了解到实际上系统设计是如何做的。