这是我参与「第五届青训营 」笔记创作活动的第10天
课前
了解基本的电商概念和流程 电商平台业务 秒杀业务特点
MySQL 安装MySQL,推荐使用MySQL8及以上版本 熟悉ddl,dml等基础语法 了解sql优化
Redis 安装Redis,推荐最新版本 了解Redis的基本数据类型和使用场景 熟悉常用命令 了解Lua脚本的使用 了解Redis分布式锁
RocketMQ 安装RocketMQ,推荐最新版本 了解RocketMQ的基础概念和架构 了解MQ的使用场景 了解生产者如何保证消息的可靠性发送 了解消费者如何保证幂等 了解消费者pull和push模式的区别
OpenResty 安装OpenResty,推荐最新版本 了解Nginx的基础概念和使用 了解Lua脚本的语法
Linux 熟悉常用命令熟悉进程和线程了解Linux调优
Java 按照JDK,推荐JDK11 熟悉Java基础语法和lambda表达式 熟悉idea的使用 了解并发编程 了解springboot框架的使用 了解maven的使用
课中
1系统设计方法论
问题 为什么要做 定义 如何做 如何落地 如何分析瓶颈并优化 如何验证系统可用性稳定性
为什么要做系统设计 个人 面试 个人能力提升 拓展技术视野
工作 业务驱动 系统重构 突破和创新
如何评估一个系统
系统设计定义 系统 关联的个体 规则运作 组成工作的整体
设计 设想和计划 目的 过程安排
为了达成某种目的 通过个体组成整体的过程
有标准的流程吗
如何做
场景分析Scenario 存储设计Storage 服务设计Service 可拓展性Scale
如何发现系统瓶颈 火焰图分析 单个实例 链路追踪 性能测试
如何保证可用性和稳定性 链路梳理 核心链路 流量漏斗 强弱依赖 可观测性 链路追踪 核心监控 业务报警 全链路测试 压力测试 负载测试 容量测试 稳定性控制 系统限流 业务兜底 熔断降级 容灾演练 混沌工程 应急手册 容灾预案
2电商秒杀业务介绍 交易 人 消费者侧 货 供给侧 场 交易环境 商品 具有交易价值和属性的信息载体
SPU:Standard Product Unit SKU:Stock Keeping Unit
秒杀业务的特点
瞬时流量高 读多写少 实时性要求高
秒杀挑战 资源成本 反欺诈 高性能 防止超卖 流量管控 扩展性 鲁棒性
如何设计秒杀系统
场景 功能 秒杀活动发布 秒杀商品详情 秒杀下单
并发万人参与秒杀 QPS 1w+ TPS 1k+
存储 MySQL->Redis->Localcache
服务 子服务 用户 风控 活动 订单
基础组件 ID生成器 缓存组件 MQ组件 限流组件
扩展 流量隔离 CDN 缓存优化 流量管控
数据库、MQ、Redis、服务水平、服务垂直扩展
系统架构图
用户层 WEB IOS Android 接入层 Nginx 应用层 发布活动秒杀详情下单ID生成器限流组件MQ组件 基础层 Redis RocketMQ MySQL
秒杀流程图