系统设计| 青训营笔记

45 阅读2分钟

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

一、本堂课重点内容:

  • 系统设计方法论
  • 电商秒杀业务介绍
  • 实践和总结

二、详细知识点介绍:

  • 4S分析法做系统设计 场景 存储 服务 扩展
  • 需要确定设计哪些功能,承受多大的访问量?
  • 火焰图分析、链路分析、全链路压测分析性能瓶颈和优化
  • 链路梳理 可观测性 全链路测试 稳定性控制 容灾演练 验证系统的可用性和稳定性
  • spu 标准化产品单元 sku 库存量单位
  • 秒杀业务的特点:瞬时流量高 读多写少 实时性要求高
  • 秒杀的挑战:资源有限性 反欺诈 高性能 防止超卖 流量管控 扩展性 鲁棒性
  • 子服务:用户服务 风控服务 活动服务 订单服务
  • 基础组件:id生成器 缓存组件 MQ组件 限流组件
  • 扩展。对于秒杀系统来说,就是高并发场景下如何保证系统稳定和高可用,以及后续的优化。流量隔离 CDN提高静态资源访问 缓存优化 流量管控 数据库扩展(读写分离 分库分表) 服务水平扩展 MQ扩展 Redis扩展 服务垂直扩展
  • MQ 解耦 异步 削峰

三、实践练习例子:

  • 如何保证活动数据库和库存数据一致?可以使用分布式事务:分布式事务: 保证多个数据库的操作同时成功或者同时失败。对强一致性有要求的业务场景可以考虑使用分布式事务,比如银行转账
  • DB扣除库存性能差 因为需要行锁 库存先缓存到redis 需要保证原子性 同时防止减到负数 采用lua脚本保证原子性
  • 下单锁定库存,支付减库存。

四、课后个人总结:

  • 高并发,高性能 服务无状态
  • lua脚本配合单线程的Redis可以实现高并发场景下的原子性

五、引用参考: