这是我参与「第五届青训营 」伴学笔记创作活动的第 10 天
一、本堂课重点内容:
- 系统设计方法论
- 电商秒杀业务介绍
- 实践和总结
二、详细知识点介绍:
- 4S分析法做系统设计 场景 存储 服务 扩展
- 需要确定设计哪些功能,承受多大的访问量?
- 火焰图分析、链路分析、全链路压测分析性能瓶颈和优化
- 链路梳理 可观测性 全链路测试 稳定性控制 容灾演练 验证系统的可用性和稳定性
- spu 标准化产品单元 sku 库存量单位
- 秒杀业务的特点:瞬时流量高 读多写少 实时性要求高
- 秒杀的挑战:资源有限性 反欺诈 高性能 防止超卖 流量管控 扩展性 鲁棒性
- 子服务:用户服务 风控服务 活动服务 订单服务
- 基础组件:id生成器 缓存组件 MQ组件 限流组件
- 扩展。对于秒杀系统来说,就是高并发场景下如何保证系统稳定和高可用,以及后续的优化。流量隔离 CDN提高静态资源访问 缓存优化 流量管控 数据库扩展(读写分离 分库分表) 服务水平扩展 MQ扩展 Redis扩展 服务垂直扩展
- MQ 解耦 异步 削峰
三、实践练习例子:
- 如何保证活动数据库和库存数据一致?可以使用分布式事务:分布式事务: 保证多个数据库的操作同时成功或者同时失败。对强一致性有要求的业务场景可以考虑使用分布式事务,比如银行转账
- DB扣除库存性能差 因为需要行锁 库存先缓存到redis 需要保证原子性 同时防止减到负数 采用lua脚本保证原子性
- 下单锁定库存,支付减库存。
四、课后个人总结:
- 高并发,高性能 服务无状态
- lua脚本配合单线程的Redis可以实现高并发场景下的原子性
五、引用参考:
-
无