消息队列学习记录|青训营

80 阅读2分钟

消息队列概述:连接系统的桥梁

消息队列是一种在分布式系统中广泛使用的通信模式,用于在不同的应用程序、服务或组件之间异步传递消息。它充当了系统中的消息中间层,能够解耦发送者和接收者,提高系统的可伸缩性、可靠性和灵活性。消息队列的原理基于生产者将消息发送到队列,消费者从队列中获取并处理这些消息。

基本原理:

  1. 发布/订阅模式(Publish/Subscribe) :生产者将消息发布到一个主题(Topic),而消费者可以订阅感兴趣的主题。这使得一个消息可以被多个消费者接收,实现了广播效果。
  2. 点对点模式(Point-to-Point) :生产者发送消息到队列,每个消息只能被一个消费者接收。一旦消息被某个消费者接收并处理,它将从队列中移除。

Kafka:

Apache Kafka 是一个高吞吐量、分布式、持久化的消息队列系统。它旨在处理海量的实时数据流,具备以下特点:

  • 分布式架构:Kafka的集群可以跨多台服务器分布,确保高可用性和容错性。
  • 持久性:消息被持久化存储,适用于需要长期保存数据的场景。
  • 高吞吐量:Kafka能够处理大量的数据流,非常适合日志收集、事件追踪等应用。
  • 分区和复制:Kafka中的主题可以被分为多个分区,每个分区可以有多个副本,增加了系统的可靠性和伸缩性。

RabbitMQ(BMQ):

RabbitMQ 是一个开源的消息代理和消息队列系统,实现了AMQP(Advanced Message Queuing Protocol)协议,具有以下特点:

  • 灵活的路由规则:RabbitMQ支持灵活的消息路由,可以根据消息的特性将其路由到不同的队列。
  • 多种消息模式:支持多种消息模式,如点对点、发布/订阅、RPC(Remote Procedure Call)等。
  • 插件系统:RabbitMQ提供插件机制,可以灵活扩展功能,如消息确认、消息持久化等。

RocketMQ:

Apache RocketMQ 是一个开源的分布式消息和流处理平台,具备以下特点:

  • 分布式架构:RocketMQ支持分布式部署,具备高可用性和可伸缩性。
  • 严格的顺序消息:RocketMQ可以保证消息的严格顺序传递,适用于需要保持事件顺序的场景。
  • 消息事务:支持消息的分布式事务,确保消息的可靠传递和处理。
  • 海量堆积能力:适用于大规模消息堆积和处理,如大数据分析、日志收集等场景。