9.1 MQ 介绍

在实际工作中,消息队列作为高并发系统的核心组件之一,能够帮助业务系统解耦、提升开发效率和增强系统稳定性。主要具有以下优势:

  • 削峰填谷(主要解决瞬时写压力大于应用服务吞吐能力导致的消息丢失、系统奔溃等问题);
  • 系统解耦(解决不同重要程度、不同服务级别系统之间的依赖,避免出现系统“一死全死”的局面);
  • 提升性能(当存在一对多调用时,可以发一条消息给消息系统,让消息系统通知相关系统);
  • 蓄流压测(线上有些链路不好做压力测试,可以通过堆积一定量消息后再放开来进行压力测试)。

目前主流的 MQ 有 ActiveMQ、RabbitMQ、RocketMQ 和 Kafka。

特性 ActiveMQ RabbitMQ RocketMQ kafka
开发语言 Java erlang Java scala
单机吞吐量 万级 万级 10万级 10万级
时效性 ms级 us级 ms级 ms级以内
可用性 高(主从架构) 高(主从架构) 非常高(分布式架构) 非常高(分布式架构)
功能特性 成熟的产品,在很多公司得到应用,有较多的文档,各种协议支持较好 基于 erlang 开发,所以并发能力很强,性能极好,延时很低,管理界面较丰富 由阿里巴巴设计,历经多次天猫双十一海量消息考验。现在是 Apache 顶级项目。MQ 功能比较完备,扩展性佳 只支持主要的 MQ 功能,像一些消息查询,消息回溯等功能没有提供,毕竟是为大数据准备的,在大数据领域应用广泛

本章我们先介绍异步消息的相关概念,然后再依次介绍如何在 Spring Boot 中集成使用 ActiveMQ、RocketMQ、RabbitMQ 和 Kafka 这四种主流的消息中间件。

下一节:本小节介绍一些有关消息的概念,为理解学习后续集成常用消息中间件的知识打下基础。