消息队列 | 青训营笔记

79 阅读2分钟

这是我参与「第三届青训营-后端场」笔记创作活动的第2篇笔记。 这篇笔记主要是对于消息队列的笔记。

消息队列

当涉及到消息传递和异步通信时,消息队列是一个常用的解决方案。下面是关于消息队列的一些笔记:

  1. 概念:消息队列是一种中间件,用于在应用程序之间传递消息。它通过解耦发送者和接收者,提供异步通信的能力。发送者将消息发送到队列中,而接收者从队列中获取并处理这些消息。

  2. 优点:

    • 异步通信:发送者和接收者可以独立进行工作,不需要彼此等待和直接交互。
    • 解耦:发送者和接收者之间的耦合度降低,它们可以独立地进行扩展和修改,而不会对对方产生太大影响。
    • 可靠性:消息队列通常具有持久性,可以确保消息在发送过程中不会丢失,并且可以在接收者准备好时进行处理。
    • 扩展性:可以通过增加消息队列的消费者来实现系统的横向扩展,以处理更多的消息负载。
  3. 使用场景:

    • 异步任务处理:将耗时的任务放入消息队列,由后台工作者进行处理,以避免阻塞主应用程序。
    • 系统解耦:将不同组件或服务之间的通信通过消息队列进行解耦,提高系统的灵活性和可维护性。
    • 流量控制:通过限制消息队列中的消息数量,可以控制接收者的处理速度,以避免系统过载。
    • 日志和事件处理:将系统的日志和事件通过消息队列发送到中央日志收集器或事件处理器。
  4. 常见的消息队列实现:

    • RabbitMQ:一个功能强大的开源消息队列系统,支持多种消息协议。
    • Apache Kafka:一个高吞吐量、分布式的发布订阅消息系统,适用于处理大规模的数据流。
    • ActiveMQ:一个流行的开源消息队列,支持多种传输协议和消息模式。

要使用消息队列,通常需要选择适合特定需求的实现,并了解其配置、API和集成方式。使用消息队列可以帮助构建可扩展、松耦合的系统,并改善应用程序之间的通信方式。

Kafka

我们常用的消息队列是Kafka。它有两大应用场景,分别是消息队列和数据处理。和其他的消息队列相比,kafka的性能更好,兼容性更好。