消息队列的原理和实践 | 青训营笔记

154 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 11 天

简要介绍

消息队列(Message Queue,简称MQ)是一种应用程序对应用程序的通信方法。它允许程序之间进行异步通信,而不需要显式地连接或编写通信代码。

原理: 消息队列是一种分布式系统架构,用于在不同的系统之间进行消息传递。它允许程序之间进行异步通信,而不需要显式地连接或编写通信代码。

实践: 消息队列可以用于解耦系统,使得系统之间不直接互相依赖。例如,当一个系统需要发送大量数据给另一个系统时,可以使用消息队列来缓存这些数据,而不是直接将数据发送给另一个系统。这样可以降低网络和资源的压力,提高系统的可靠性和可伸缩性。

常用的MQ有RabbitMQ、Kafka、ActiveMQ、RocketMQ等,这些都提供了可靠性高、消息队列的持久性,可靠性等特性。

当然,在之前的实践中,我较为经常使用的是 RebbitMQ 。

问题

1、消息增加了系统的复杂性。

原来系统之间就直接用接口调用的方式,考虑了消息队列之后需要考虑加入此部分消息队列才会引发的问题,如消息队列满了之后如何处理、消息是否会重复消费、如何保证数据不会丢失等等。

2、降低了系统的可用性。

系统之间对消息队列是强依赖的关系,因此需要保证消息队列的可用性。其中就要涉及一些分布式的理论去保证消息队列的可用。

3、一致性问题。

这个问题和数据库的问题是一样的道理。比如说一个系统本应发给其他所有系统消息,但是部分系统并未接收到,导致二者消息不一致的问题。