[ 后端基础Day9 | 青训营笔记]

81 阅读2分钟

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

系统设计实践

如何设计?

场景分析

存储设计

服务设计

可拓展设计

如何发现系统的瓶颈?

火焰图分析

链路追踪

性能测试

保证可用性和稳定性

链路梳理:保证核心链路,流量漏斗;强弱依赖:强不降级,弱降级

可观测性

全链路测试

稳定性控制

容灾演练

电商秒杀业务

image-20230205101536030.png

商品:具有交易价值和属性的信息载体

SPU:标准产品单元

SKU:库存保存单元

业务特点:

瞬时流量高、读多写少、实时要求高

挑战:资源成本、反欺诈、高性能、防止超卖等

场景

功能:秒杀活动发布、详情、下单

并发:万人参与秒杀

存储

LocalCache=》Redis=》mysql

服务

子服务:

用户服务

风控服务

活动服务

订单服务

子组件:

ID生成器

缓存组件

MQ组件

限流组件

扩展

流量隔离、数据库扩展、缓存优化、服务水平扩展、流量管控

系统架构图

image-20230205103040496.png

课程实践

image-20230205103129926.png

注意点

扣库存:

get decrease 不是原子操作

decrease 原子 不可以

通过lua脚本来实现原子操作

java中实体映射,可以采用lamda表达式来进行映射

用户下的订单可以发送给MQ由mq来进行削峰,下游服务依次从mq中读取来进行消费

可以使用jmeter进行压测,压测不仅取决于数值设置多少,同时也要考虑本地主机发压机的性能

总结:

服务无状态:当前的服务不存储任何数据

批量写入:降低系统压力

最终一致性:redis、mq有短暂的数据副本