系统设计 | 青训营笔记

72 阅读2分钟

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

为什么要做系统设计:业务驱动、系统重构、突破和创新(直播电商就是对于传统电商的突破和创新),最终系统设计是为了解决工作时遇到的问题

如何评估一个系统:可用性、安全性、扩展性、易用性、性能。。。

系统设计的定义:系统是关联的个体按照一定的规则运作从而组成工作的整体。系统不同于架构、服务、组件、模块、框架。为了达成某种目的,通过个体组成整体的过程。

系统设计的标准流程:场景分析、存储设计、服务设计(业务功能实现,逻辑的整合)、可扩展性(解决可扩展性)

如何发现系统的瓶颈:火焰图分析(单个实例的分析)、链路追踪(分析一次请求在哪个服务上性能开销大)、性能测试

如何保证可用性和稳定性:链路梳理、可观测性、全链路测试、稳定性控制、容灾演练

电商秒杀业务

电商的本质是交易,三要素:人、货(商家、供应链)、场(线上电商系统)

社交电商加强了人与货的联系,商品是具有交易价值和属性的信息载体(SPU(标准产品单元)、SKU(库存保持单元,具有交易属性的概念))

秒杀业务特点:瞬时流量高、读多写少、实时性要求高

秒杀挑战:服务资源成本、反欺诈、防止超卖、高性能、流量管控、扩展性、鲁棒性

如何设计秒杀系统

场景

功能:秒杀功能发布、秒杀商品详情、秒杀下单

并发:万人参与秒杀、QPS1 W+、TPS 1K+

存储

三级存储:MySQL-Redis-Localcache

服务

子服务:用户服务、风控服务、活动服务、订单服务

基础组件:ID生成器、缓存组件、MQ组件、限流组件

扩展

流量隔离、扩展到CDN做静态资源缓存、缓存优化、流量管控

数据库扩展、服务水平扩展、MQ扩展、Redis扩展、微服务扩展