系统设计|青训营笔记

90 阅读2分钟

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

系统设计的流程

场景分析

什么系统、需要做什么功能、多大的并发量

存储设计

数据如何组织、Sql存储、NoSql存储

服务设计

业务功能实现和逻辑整合

可拓展性

解决设计缺陷、提高鲁棒性、拓展性

系统瓶颈的发现

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

可用性和稳定性的保证

  • 链路梳理:核心链路、流量漏斗、强弱依赖
  • 可观测性:链路追踪、核心监控、业务报警
  • 全链路测试:压力测试、负载测试、容量测试
  • 稳定性控制:系统限流、业务兜底、熔断降级
  • 容灾演练:混沌工程、应急手册、容灾预案

商品

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

SPU:Standard Product Unit

SKU:Stock Keeping Unit

秒杀业务特点

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

秒杀的挑战

  • 高性能
  • 资源成本
  • 拓展性
  • 防止超卖
  • 反欺诈
  • 流量管控
  • 鲁棒性

秒杀场景

功能

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

并发

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

秒杀服务

子服务

  • 用户服务
  • 风控服务
  • 活动服务
  • 订单服务

基础组件

  • 缓存组件
  • ID生成器
  • MQ组件
  • 限流组件

Rabbit MQ的基本介绍

2007 年发布,是一个在 AMQP(高级消息队列协议)基础上完成的,可复用的企业消息系统,是当前最主流的消息中间件之一。 . RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue 高级消息队列协议 )的开源实现,由于erlang 语言的高并发特性,性能较好,本质是个队列,FIFO 先入先出,里面存放的内容是message . RabbitMQ 是一个消息中间件:它接收消息并且转发,就类似于一个快递站,卖家把快递通过快递站,送到我们的手上,MQ也是这样,接收并存储消息,再转发。

秒杀拓展

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

系统架构图

系统架构图

秒杀流程图

秒杀流程图