这是我参与「第五届青训营 」伴学笔记创作活动的第9天
系统设计实践
如何设计?
场景分析
存储设计
服务设计
可拓展设计
如何发现系统的瓶颈?
火焰图分析
链路追踪
性能测试
保证可用性和稳定性
链路梳理:保证核心链路,流量漏斗;强弱依赖:强不降级,弱降级
可观测性
全链路测试
稳定性控制
容灾演练
电商秒杀业务
商品:具有交易价值和属性的信息载体
SPU:标准产品单元
SKU:库存保存单元
业务特点:
瞬时流量高、读多写少、实时要求高
挑战:资源成本、反欺诈、高性能、防止超卖等
场景
功能:秒杀活动发布、详情、下单
并发:万人参与秒杀
存储
LocalCache=》Redis=》mysql
服务
子服务:
用户服务
风控服务
活动服务
订单服务
子组件:
ID生成器
缓存组件
MQ组件
限流组件
扩展
流量隔离、数据库扩展、缓存优化、服务水平扩展、流量管控
系统架构图
课程实践
注意点
扣库存:
get decrease 不是原子操作
decrease 原子 不可以
通过lua脚本来实现原子操作
java中实体映射,可以采用lamda表达式来进行映射
用户下的订单可以发送给MQ由mq来进行削峰,下游服务依次从mq中读取来进行消费
可以使用jmeter进行压测,压测不仅取决于数值设置多少,同时也要考虑本地主机发压机的性能
总结:
服务无状态:当前的服务不存储任何数据
批量写入:降低系统压力
最终一致性:redis、mq有短暂的数据副本