这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天
系统设计流程
秒杀系统的场景
功能:
- 秒杀活动发布
- 秒杀商品详情
- 秒杀下单
并发:
- 万人参与秒杀
- QPS 1w+
- TPS 1k+
秒杀系统的存储
Mysql、Redis、Localcache
秒杀系统的服务
子服务:
- 用户服务
- 风控服务
- 活动服务
- 订单服务
基础组件:
- ID生成器 (分库分表,分布式ID生成)
- 缓存组件
- MQ组件 (削峰,异步,解耦的功能)
- 限流组件
秒杀系统的扩展
- 流量隔离 (秒杀流量和基础服务流量隔离)
- CDN (内容分发网络)
- 缓存优化
- 流量管控 (流量拦截和流量过滤)
- 数据库扩展 (读写分离,分库分表)
- MQ扩展 (可用性和稳定性,主从架构)
- Redis扩展 (读写分离,集群模式)
- 服务水平扩展 (负载均衡,反向代理)
- 服务垂直扩展 (做微服务的拆分)
秒杀系统的系统架构图
秒杀系统的流程图
总结
服务无状态,批量写入,最终一致性
服务无状态:指不保存客户会话或状态信息的服务。它每次请求都是独立的,不依赖以前的请求,并且对于每个请求都需要执行完全相同的操作。因此,无状态服务通常更容易扩展和维护,因为它们不需要考虑状态管理和同步。例如, REST API 就是一种无状态服务。
批量写入,插入数据库,消费者取出消息使用批量写入,mysql在设计上也有多个事务的批量写入:组提交。
最终一致性:参考BASE理论。
分布式系统的最终一致性有以下几种方法:
- 应用层协议:应用程序可以通过实现特定的协议,例如可靠消息传递,来保证最终一致性。
- 分布式事务:使用分布式事务协议(如2PC和3PC)可以在多个节点之间同步数据变更,以确保最终一致性。
- 写时复制(WRT):使用写时复制技术可以实现对数据的异步复制,并确保在分布式系统中的所有副本保持一致。
- Paxos算法:Paxos是一种分布式一致性算法,可以通过协调多个节点之间的决策,以确保在分布式系统中的所有副本保持一致。