后端基础| 青训营笔记

67 阅读2分钟

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

系统设计的方法论:

为什么要做系统设计
对个人 For面试 个人能力提升 拓展技术视野
对工作 业务驱动 系统重构 突破和创新

如何评估一个系统
可用性 扩展性 安全性 易用性 可维护性 性能 耦合性 伸缩性

系统设计的定义是什么
系统:关联的个体 规则运作 组成工作的整体
设计:设想和计划 目的 过程安排
定义:为了达成某种目的,通过个体组成整体的过程

怎么做系统设计,如何落地一个系统
4s分析法:
场景 分析是什么系统,需要哪些功能,多大的并发量
存储 数据如何组织,Sql存储,NoSql存储
服务 业务功能实现和逻辑整合
拓展 解决设计缺陷,提高鲁棒性、拓展性


系统功能实现之后,如何分析瓶颈并优化
如何发现系统的瓶颈
火焰图分析:针对单个实例的分析,CPU,内存的使用
链路追踪:微服务时代,1请求-n服务,在哪个服务上的耗费的性能较大
性能测试:整个系统的不足


如何验证系统的可用性和稳定性
保证可用性和稳定性
链路梳理:核心链路 流量漏斗 强势依赖
可观测性:链路追踪 核心监控 业务报警
全链路测试:压力测试 负载测试 容量测试
稳定性控制:系统限流 业务兜底 熔断降级
容灾演练:混沌工程(故障注入) 应急手册 容灾预案


电商:人(消费者侧:消费者,用户,流量来源)货(商品,商家,供应链)场(交易场景:线下商场,线上电商)
商品:具有交易价值和属性的信息载体
SPU:standard product unit SKU:stock keeping unit
秒杀业务的特点:瞬时流量高 读多写少 实时性要求高


秒杀的挑战:资源成本(资源有限)、反欺诈、高性能、防止超卖、流量管控、拓展性、鲁棒性(稳定性 可用性)


如何设计秒杀系统:
场景:
功能:秒杀活动发布 秒杀商品详情 秒杀下单
并发:万人参加秒杀 QPS 1W+ TPS 1k+
存储: MySQL——Redis——Localcache并微服务性能更高

image.png

服务:
子服务:用户服务 风控服务 活动服务 订单服务
基础组件:ID生成器 缓存组件 MQ组件 限流组件
流量隔离 数据库扩展 服务水平扩展 CDN MQ扩展 缓存优化 Redis扩展 服务垂直扩展 流量管控

系统架构图 image.png

秒杀流程图

image.png

然后是代码的讲解
压测 jmeter

服务无状态 批量写入 最终一致性