文章目录加载中

实战案例-大流量与消息队列

# 消息队列的场景

消息队列是用来解耦不需要同步调用的服务或者订阅系统关心的变化。使用消息队列可以实现服务解耦(一对多消费)、异步处理、流量削峰/缓冲等,

# 消息队列注意点

  • 消息丢失:持久化数据日志
  • 重复消息:业务防重处理

# 场景介绍

设计的核心点是:牺牲强一致性,但保证最终一致性。

下面两个场景都是写热点的场景,技巧上就是通过缓存+队列的组合,来进行流量消峰。而读热点,技巧上就是通过多级缓存来抗。

# 场景 1:扣库存

步骤:

  • 数据从 DB 预加载到 redis 中
  • 在 redis 上扣减库存
  • 同步到 MQ 记录
  • 脚本(Worker)定时消费 MQ 记录,进行一些业务校验、去重等逻辑,数据最终落盘到 DB

# 场景 2:交易订单系统

MQ 和 Worker 的作用与“场景 1”类似。需要注意的是:这里还从 Redis 中读取数据,对外提供服务。

本文来自心谭博客:xin-tan.com,经常更新web和算法的文章笔记,前往github查看目录归纳:github.com/dongyuanxin/blog