大家好,我是煎鱼。想是问题,做是答案。 最近我有一个朋友公司踩了不少消息队列(MQ)的坑,让人无奈不已。因此计划写 MQ 系列的技术文章,来科普更多这块的知识。 目前 MQ 也是互联网应用中非常常用的基础组件了,面试特爱问。基本有一定规模的系统都能看见他的踪影。 无论是 RocketMQ、Kafka、RabbitMQ 等,都围绕着根本的设计出发产生不同的高级功能,甚至可能是雷同的设计有 N 个名字。 什么是 MQ MQ 一般代指消息队列(Message Queue)。它是一个抽象层,允许多个进程(可能在不同的机器上)通过各种模式(例如:点对点,发布订阅等)进行通信。 也可以根据不同的实现,它可以被配置为保证可靠性、错误报告、安全、发现、性能等。 为什么需要 MQ 在当下 MQ 的必要场景,比较经典的说辞就是 “异步、削峰、解耦”。是各类秒杀系统的设计核心,甚至会作为不少云厂商的卖点,每家都有自己的生态圈。 核心分为三个要点: 解耦。 削峰。 异步。 解耦 在业务系统设计中,我们常常会与一个平台系统 A,他汇聚了许许多多的系统的对接。例如,系统 A 作为平台拥有大量用户操作,自然就有非常多的用户行为。