这是我参与[第五届青训营]伴学笔记创作活动的第7天 主要记录了以下几个方面
- 课前工作
- 系统设计方法论
- 电商秒杀业务介绍
课前
了解sql优化
了解Lua脚本的使用
lua脚本是一种轻量小巧的脚本语言,为了嵌入应用程序中,从而为程序程序提供灵活的扩展和定制功能 可以参考Lua脚本快速入门 - 掘金 (juejin.cn)
了解Redis的基本数据类型:
- 字符串
- 哈希
- 列表
- 集合
- 有序集合
- HyperLogLog
- 位图
使用场景:队列 发布/订阅 实时分析 排行榜 缓存
了解Redis分布式锁:是为了解决分布式情景下,并发事务的顺序执行。
系统设计方法论
为什么要做系统设计?
个人:面试 提升能力 开拓思路
工作:业务需要 为了创新
什么是系统设计?
系统:关联的个体规律运作
设计:过程
为了某种目的,通过个体组成整体的过程 耦合性 伸缩性
如何评估一个系统?
从几个方面入手:性能 可用性 易用性 安全性 扩展性
如何做系统设计?
- 场景分析:我要做什么,满足什么需求
- 存储设计:数据存在哪里
- 服务设计:各种服务之间如何联系,每个服务的逻辑如何写
- 可扩展性
如何发现系统的瓶颈?
- 火焰图分析
- 链路追踪
- 性能测试
如何保证可用性和稳定性?
电商秒杀业务
什么是商品?
具有交易和属性的信息载体
秒杀业务特点
- Spu:某类商品
- Sku:商品的规格
秒杀的特点
读多写少:大量用户都下不了单,只是在看
瞬时流量高:一瞬间大量请求
实时性强:时效性强
场景:
秒杀活动发布
秒杀商品详情
秒杀下单
如何设计秒杀系统?
如何保证可用性和稳定性
链路梳理:一个请求走了哪些微服务
可观测性:可以进行监控
全链路测试:压力测试、负载测试、容量测试
稳定性控制:保证稳定性就是控制它,比如系统限流、业务兜底
容灾演练
秒杀流程:
订单超时检查 订单服务 (一个订单里面可能有多个商品) 商品表(减库存)
通过MQ来监听消费
提到的工具
Jmeter压测
lua脚本