ActiveMQ消息队列的核心概念

1.什么是MQ消息队列

Message Queue消息队列简称MQ,消息队列从字面的含义来看就是消息的发生和接收保持排队顺序。

消息队列可以简单的理解为把要传输的数据放在队列中一一发送

**消息:**要传输的数据。

**队列:**先进先出的数据结构。

在消息队列中,数据放到消息队列叫做生产者,从消息队列中获取数据叫做消费者。

消息队列是一种异步的服务通信方式,是分布式系统中重要的组件,主要解决的问题包含:应用解耦、异步消息、流量削锋等问题,实现高可用、高性能、可伸缩和最终一致性的架构。

使用较多的MQ消息队列产品有RocketMQ、RabbitMQ、Kafka、ActiveMQ等等。

2.为什么要使用MQ消息队列

举例生活中的一个例子来解释引入MQ前后的对比:

程序没有接入MQ之前,服务之间需要频繁调用,影响服务端整体性能,接入MQ消息队列后,通过生产和消费机制,可以增大程序的并发量,提高系统的性能。

3.MQ消息队列的应用场景

MQ消息队列的应用场景分为异步处理、应用解耦、流量削锋等等。

3.1.异步处理

异步处理分为三种模式:串行方式、并行方式、异步处理。

以一个场景说明异步处理三种模式的不同之处,场景:用户注册需要执行三个业务逻辑,分布写入用户表、发送邮件以及注册短信的通知。

ActiveMQ消息队列的核心概念-LMLPHP

ActiveMQ消息队列的核心概念-LMLPHP

ActiveMQ消息队列的核心概念-LMLPHP

3.2.应用解耦

以一个场景说明程序接入MQ后应用解耦的场景,场景说明:用户下单后,订单系统调用库存系统完成库存的缩减。

ActiveMQ消息队列的核心概念-LMLPHP

ActiveMQ消息队列的核心概念-LMLPHP

3.3.流量削锋

流量削锋也是一种典型的应用场景,一般应用于高并发时刻,例如秒杀活动,高并发时一般会因为流量过大,导致应用的状态异常,从而影响线上用户的使用,通过MQ消息队列就可以解决此问题。

通过MQ消息队列可以控制请求的流量、缓解短时间内高并发压垮应用系统。

如下图所示,用户的请求首先被写入到消息队列中,由应用系统通过策略读取消息队列中的数据,然后进行处理,用户的请求相当于生产者,程序相当于消费者。

ActiveMQ消息队列的核心概念-LMLPHP

4.常见的MQ消息队列产品对比

06-26 11:45