秒杀系统设计 | 青训营笔记

104 阅读2分钟

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

系统设计流程

秒杀系统的场景

功能:

  • 秒杀活动发布
  • 秒杀商品详情
  • 秒杀下单

并发:

  • 万人参与秒杀
  • QPS 1w+
  • TPS 1k+

秒杀系统的存储

Mysql、Redis、Localcache

image.png

秒杀系统的服务

子服务:

  • 用户服务
  • 风控服务
  • 活动服务
  • 订单服务

基础组件:

  • ID生成器 (分库分表,分布式ID生成)
  • 缓存组件
  • MQ组件 (削峰,异步,解耦的功能)
  • 限流组件

秒杀系统的扩展

  • 流量隔离 (秒杀流量和基础服务流量隔离)
  • CDN (内容分发网络)
  • 缓存优化
  • 流量管控 (流量拦截和流量过滤)
  • 数据库扩展 (读写分离,分库分表)
  • MQ扩展 (可用性和稳定性,主从架构)
  • Redis扩展 (读写分离,集群模式)
  • 服务水平扩展 (负载均衡,反向代理)
  • 服务垂直扩展 (做微服务的拆分)

秒杀系统的系统架构图

image.png

秒杀系统的流程图

image.png

总结

服务无状态,批量写入,最终一致性

服务无状态:指不保存客户会话或状态信息的服务。它每次请求都是独立的,不依赖以前的请求,并且对于每个请求都需要执行完全相同的操作。因此,无状态服务通常更容易扩展和维护,因为它们不需要考虑状态管理和同步。例如, REST API 就是一种无状态服务。

批量写入,插入数据库,消费者取出消息使用批量写入,mysql在设计上也有多个事务的批量写入:组提交。

最终一致性:参考BASE理论。

分布式系统的最终一致性有以下几种方法:

  1. 应用层协议:应用程序可以通过实现特定的协议,例如可靠消息传递,来保证最终一致性。
  2. 分布式事务:使用分布式事务协议(如2PC和3PC)可以在多个节点之间同步数据变更,以确保最终一致性。
  3. 写时复制(WRT):使用写时复制技术可以实现对数据的异步复制,并确保在分布式系统中的所有副本保持一致。
  4. Paxos算法:Paxos是一种分布式一致性算法,可以通过协调多个节点之间的决策,以确保在分布式系统中的所有副本保持一致。