这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天
01 系统设计方法论
问题:为什么做、定义(不同于架构设计、服务、组件、模块、框架)、怎么做(如何落地)、分析瓶颈并优化、验证系统的可用性和稳定性。
标准流程 :场景、存储、服务、拓展 4s分析法
如何发现瓶颈:
火焰图分析——针对单个实例分析cpu、内存等使用
链路追踪——同一个请求经过哪些服务、耗时
性能测试——整个系统性能的不足
核心链路——详情、价格、提单、下单、支付
其他为非核心服务
02 电商秒杀业务介绍
电商介绍
秒杀的挑战:
反欺诈:防止黑产非法牟利(二次售卖)
鲁棒性:可用性、稳定性、、
如何设计
沿用4s分析
三级存储
spec为规格(颜色、容量大小)
类目和规格的信息共同组成商品的属性,除了这些属性product还有其他组成商品的信息(前面提到的SPU)
SKU可销售单元
promo活动
活动promo+商品product+sku->活动商品表promo_product(该库存为逻辑库存)
秒杀商品表+商品+用户信息->订单order
PK应该是Primary Key(主键约束);UK应该是Unique Key(唯一值约束);CK应该是Check(检查约束)
风控为mock服务,无具体实现
ID生成器——mysql分库分表,涉及分布式id生成
MQ——保护系统进行削峰、异步、解耦
秒杀系统流量与常规电商系统流量隔离
cdn——静态资源的缓存,提高性能、静态资源的访问。
数据库拓展——读写分离、在拓展上分库分表
服务水平/垂直拓展——负载均衡、反向代理/微服务做拆分
MQ——保证可用性、稳定性(主从架构、多主多从架构)
redis——保证可用性、稳定性(读写分离、一主多从、集群)
Nginx上面再加一层负载均衡 LVS/F5 组件
03 课程实践
整体代码结构:
common定义基础的东西(统一返回结构体、枚举、常量)
config(redis配置)
convertet数据转换
service业务逻辑层,含接口Service和实现ServiceImpl
util基础的工具