消息队列 | 青训营笔记

83 阅读2分钟

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

消息队列(Message Queue)是一种基于异步通信模式的中间件技术,用于在分布式系统中进行异步消息传递。消息队列通过将消息从发送者发送到接收者,从而实现系统中不同组件之间的解耦

消息队列

基本原理

在分布式系统中,通常会有多个应用程序和服务同时运行,它们之间需要进行通信和数据交换。如果采用同步通信模式,那么发送方和接收方需要实时交换信息,并且需要等待对方响应才能继续执行,这样会导致系统响应速度变慢、可扩展性差、易出错等问题。而异步通信模式则不需要实时交换信息,发送方将消息发送到消息队列中,接收方从消息队列中获取消息并进行处理,这样就可以实现异步通信,提高系统的响应速度和可扩展性。

消息队列的基本组成部分包括消息生产者、消息消费者和消息队列服务器。消息生产者将消息发送到消息队列服务器,消息消费者从消息队列服务器中获取消息并进行处理。消息队列服务器可以保存消息,确保消息不会丢失,并支持多个消息消费者同时消费消息。

实现方式

消息队列有多种实现方式,比如基于内存的消息队列、基于文件的消息队列、基于数据库的消息队列等。其中最常用的是基于内存的消息队列,比如 RabbitMQ、ActiveMQ、Kafka 等。

常用系统

RabbitMQ

RabbitMQ 是一个开源的消息队列系统,采用 Erlang 语言编写,具有高性能、高可靠性、可扩展性强等特点。RabbitMQ 支持多种消息协议,比如 AMQP、MQTT、STOMP 等,可以在不同语言和不同操作系统之间进行通信

ActiveMQ

ActiveMQ 是一个开源的消息队列系统,采用 Java 语言编写,具有高性能、高可靠性、可扩展性强等特点。ActiveMQ 支持多种消息协议,比如 OpenWire、AMQP、STOMP 等,可以在不同语言和不同操作系统之间进行通信。

Kafka

Kafka 是一个开源的分布式流处理平台,采用 Scala 语言编写,具有高吞吐量、低延迟、可伸缩性强等特点。Kafka 通过将消息分区和复制到多个节点,实现消息的可靠性和高可用性。Kafka 适用于大规模数据处理和实时数据流处理场景。