这是我参与「第五届青训营 」伴学笔记创作活动的第 3 天
跟着项目开发的过程中涉及到一部分系统设计的问题,在自己搭建的过程中还涉及到如何构建一个能用的系统,即使是一个Demo,也得面对着“这东西是啥”,“这东西怎么用”,“怎么让这东西能用”这几个问题。所以笔记记录一下还是有必要的。
系统设计流程
- 场景分析:是什么系统,需要那些功能,需要多大的并发量
- 存储设计:数据如何组织,sql存储方式还是nosql存储方式
- 业务涉及:业务功能实现和逻辑整合方案
- 可扩展性:解决设计缺陷,提高鲁棒性,扩展性
发现系统瓶颈的方案
- 火焰图分析
- 链路追踪
- 性能测试
链路梳理方案:核心链路梳理,采用流量漏斗分析,分析强弱依赖方案 可观测性:链路追踪观测,核心环境监控,同时需要对特殊业务变化报警 全链路测试:需要进行压力测试,负载测试和容量测试 稳定性控制:能否完成系统限流,业务兜底和熔断降级机制 最后需要进行容灾训练:采用混沌工程,应急手册和容灾预案。
电商秒杀业务分析
对于的电商秒杀业务来说,整个任务分为三个部分。 人,货,场。 对于人来说,是消费者侧面,消费者,用户,流量来源。 对于货来说,是商家,商品,供应侧。 对于场来说,是交易环境,是线下商场,线上电商。
业务特点
瞬时流量高,读多写少,实时性要求高。 由于业务的特点,尤其是秒杀,会在短期产生大量的需求。 同时秒杀任务有一定的要求: 高并发性,需要高性能,需要反欺诈,需要防止超卖。