了解系统设计 | 青训营笔记

84 阅读2分钟

这是我参与[第五届青训营]伴学笔记创作活动的第7天 主要记录了以下几个方面

  • 课前工作
  • 系统设计方法论
  • 电商秒杀业务介绍

课前

了解sql优化

了解Lua脚本的使用

lua脚本是一种轻量小巧的脚本语言,为了嵌入应用程序中,从而为程序程序提供灵活的扩展和定制功能 可以参考Lua脚本快速入门 - 掘金 (juejin.cn)

了解Redis的基本数据类型:

  • 字符串
  • 哈希
  • 列表
  • 集合
  • 有序集合
  • HyperLogLog
  • 位图

使用场景:队列 发布/订阅 实时分析 排行榜 缓存

了解Redis分布式锁:是为了解决分布式情景下,并发事务的顺序执行。

系统设计方法论

为什么要做系统设计?

个人:面试 提升能力 开拓思路

工作:业务需要 为了创新

什么是系统设计?

系统:关联的个体规律运作

设计:过程

为了某种目的,通过个体组成整体的过程 耦合性 伸缩性

如何评估一个系统?

从几个方面入手:性能 可用性 易用性 安全性 扩展性

如何做系统设计?

  • 场景分析:我要做什么,满足什么需求
  • 存储设计:数据存在哪里
  • 服务设计:各种服务之间如何联系,每个服务的逻辑如何写
  • 可扩展性

如何发现系统的瓶颈?

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

如何保证可用性和稳定性?

电商秒杀业务

什么是商品?

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

秒杀业务特点

  • Spu:某类商品
  • Sku:商品的规格

秒杀的特点

读多写少:大量用户都下不了单,只是在看

瞬时流量高:一瞬间大量请求

实时性强:时效性强

场景:

秒杀活动发布

秒杀商品详情

秒杀下单

如何设计秒杀系统?

如何保证可用性和稳定性

链路梳理:一个请求走了哪些微服务

可观测性:可以进行监控

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

稳定性控制:保证稳定性就是控制它,比如系统限流、业务兜底

容灾演练

秒杀流程:

订单超时检查 订单服务 (一个订单里面可能有多个商品) 商品表(减库存)

通过MQ来监听消费

提到的工具

Jmeter压测

lua脚本

参考

【后端专场 学习资料四】第五届字节跳动青训营 - 掘金 (juejin.cn)