10系统设计| 青训营笔记

51 阅读3分钟

这是我参与「第五届青训营 」笔记创作活动的第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

秒杀流程图