秒杀系统设计 | 青训营笔记

92 阅读2分钟

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

系统设计的定义

为了达成某种目的,通过个体组成整体的过程

设计流程

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

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

瓶颈发现

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

保证可用性和稳定性

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

秒杀业务特点

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

秒杀挑战

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

场景

功能:

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

并发︰

万人参与秒杀
QPS 1w+
TPS 1k+

存储

MySQL——>Redis——>Localcache

服务

子服务︰ 用户服务、 风控服务、 活动服务、 订单服务。

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

拓展

数据库扩展、 Redis扩展、 MQ扩展、 服务水平扩展、 服务垂直扩展。

收获:通过本次课程的学习,让我了解到秒杀系统的复杂性,需要涉及很多关注点,比如分布式集群,数据库,缓存技术,接口设计等等,需要进行深入的研究和考虑,从而才能设计一个高效可靠的秒杀系统。同时,本课程还让我了解到了如何优化秒杀系统的处理速度,以及如何降低系统的压力,如何处理高并发的秒杀等等,受益匪浅。