消息队列 · Queue
英文:queue/kjuː/(一个音节,和字母 Q 同音)
后端与数据库难度:硬核 ★★★
🗣️一句话大白话
任务们的「排队取号机」:来不及马上干的活,先扔进队列排队,后台的工作者一个一个取出来干。高峰期任务不会丢,服务器也不会被压垮。
🎬真实场景
大促时 1 万个用户同时下单,每个订单都要发短信。同步发:短信服务一慢,下单接口全卡死。加队列:下单只负责「往队列里塞短信任务」,后台慢慢发——下单永远秒回。
📮你可以这样说
「「发短信、生成报表这类耗时操作改成队列任务:接口只负责投递,单独的工作进程消费队列。任务失败要有重试,超过 3 次标记失败。」」
⚠️边界与常见误解
- ▸队列解决了压垮问题,带来「延迟」问题:任务不是立刻完成的
- ▸消息可能重复投递,消费端要配合幂等(见相关词条)
- ▸小项目用数据库表当队列就够,不必一上来 Redis/RabbitMQ