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

114 阅读3分钟

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

本篇文章主要从理论方面进行介绍系统设计的相关知识。

1.系统设计方法论

如何评价一个系统?

主要从以下几个方面进行介绍和评价:可用性、安全性、扩展性、易用性、性能、耦合性、可维护性、伸缩性。

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

  • 系统:关联的个体、规则运作、组成工作的整体

  • 设计:设想和计划、目的、过程安排

  • 系统设计的流程包括:场景、存储、服务、扩展

系统设计的可用性和稳定性

  • 链路梳理:核心链路、流量漏斗、强弱依赖

  • 可观测性:链路追踪、核心监控、业务报警

  • 全链路测试:压力测试、负载测试、容量测试

  • 稳定性控制:系统限流、业务兜底、熔断降级

  • 容灾演练:混沌工程、应急手册、容灾预案

2.电商秒杀业务

电商业务主要包含三个主体:货、人、场

  • 货:供给侧:商品、商家、供应链

  • 人:消费者侧:消费者、用户、流量来源

  • 场:交易环境:线下商场、线上电商

在进行电商服务时,我们需要了解到商品的概念,何为商品?

商品:具有交易价值和属性的信息载体

  • 秒杀业务的特点:瞬时流量高、读多写少、实时性要求高

  • 秒杀所具有的挑战:资源成本、反欺诈、高性能、防止超卖、流量管控、扩展性、鲁棒性

3.设计秒杀系统

设计一个秒杀系统,主要从四个方面进行介绍:

  • 场景:

    • 功能:秒杀活动发布、秒杀商品详情、秒杀下单

    • 并发:万人参与秒杀、QPS 1W+、TPS 1k+

  • 存储:

    • MySQL -> Redis -> Localcache
  • 服务:

    • 子服务:用户服务、风控服务、活动服务、订单服务

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

  • 扩展:

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

    • 用户层:WEB、IOS、Android

    • 接入层:Nginx

    • 应用层:发布活动、秒杀详情、秒杀下单、ID生成器、限流组件、MQ组件、Cache组件

    • 基础层:Redis、RocketMQ、MySQL

最后,总结来说,系统设计主要是三个方面:服务无状态、批量写入、最终一致性

4.总结

本文主要从系统设计的方法论、电商秒杀业务以及设计秒杀系统等方面进行介绍,为我们讲述了如何进行制作一个系统,课堂中老师为我们介绍了关于系统的代码的编写过程,讲述比较详细的,但还需要更多时间的理解。

5.引用

本篇文章的主要内容来自于字节录播课程。