手把手教你做系统设计 | 青训营笔记

111 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 10 天

一、本堂课重点内容:

今天的课程是系统设计的实践课程,本课程讲述了如何进行系统设计,并且在课上进行了电商秒杀系统的实际案例讲解。

二、系统设计方法论

系统设计的定义:为了达成某种目的,通过个体组成整体的过程。

如何做系统设计

  1. 场景分析:什么系统,需要哪些功能,多大的并发量
  2. 储存设计:数据如何组织,Sql存储,NoSql存储
  3. 服务设计:业务功能实现和逻辑整合
  4. 可扩展性:解决设计缺陷,提高鲁棒性,扩展性

如何发现系统的瓶颈

  • 火焰图分析
  • 链路追踪
  • 性能测试

三、电商秒杀业务注意点

人,货,场

秒杀业务的特点

  • 瞬时流量
  • 读多写少
  • 实时性要求高

秒杀的挑战

  1. 资源有限性
  2. 反欺诈性
  3. 高性能
  4. 防止超卖
  5. 流量管控
  6. 扩展性
  7. 鲁棒性

如何设计秒杀系统

场景-->存储-->服务-->扩展

场景

功能:

  • 秒杀活动发布
  • 秒杀商品详情
  • 秒杀下单

并发:

  • 万人参与秒杀
  • QPS 1W+
  • TPS 1k+

存储:

本地缓存、Redis、MySQL

服务: 子服务:用户服务,风控服务,活动服务,订单服务。

基础组件: ID生成器、缓存组件、MQ组件、限流组件

扩展

  • 流量隔离
  • 数据库扩展
  • 服务水平扩展
  • CDN
  • MQ扩展
  • 缓存优化
  • Redis扩展
  • 服务垂直扩展
  • 流量管控

四、课后人个总结

  1. 服务无状态当前服务不存储数据和业务。
  2. 批量写入有效降低系统压力。
  3. 最终—致性自缓存和MQ会导致不一致,但最终会达到一致。

通过这次的课我了解到系统设计的一些知识点,同时通过秒杀系统的学习,我了解到实际上系统设计是如何做的。