消息队列-Kafka - 掘金 | 青训营

53 阅读3分钟

标题:消息队列-Kafka - 掘金

网址:juejin.cn/course/byte…

消息队列是什么

消息队列(Message Queue)是在分布式系统中用来支持应用程序或组件之间的通信的一种技术。通过消息队列,应用程序可以相互通信和传输数据,而不必始终在线或同时运行。消息队列为异步处理和解耦生产者和消费者的操作提供了机制。

以下是消息队列的主要应用场景和优点:

  1. 解耦:在一个复杂的系统中,组件A不需要知道谁处理其消息。它只需要将消息发送到队列。相反,组件B可以从队列中提取消息并处理它,而不需要知道是谁发送的。
  2. 异步处理:系统不需要实时响应。发送消息的组件不需要等待消息被处理,它可以继续执行其他任务。
  3. 缓冲:在高流量事件中,例如Black Friday销售,消息队列可以作为一个缓冲,处理突然的大量请求。
  4. 扩展性:根据需求,可以很容易地增加消息消费者,以更快地处理队列中的消息。
  5. 容错性:如果一个处理消息的组件失败,那么消息仍然存在于队列中,可以稍后再次尝试处理。
  6. 顺序保证:很多消息队列系统能够保证消息的顺序。
  7. 负载均衡:在多个消费者之间自动分配处理任务。

常见的消息队列系统包括RabbitMQ, Apache Kafka, Amazon SQS, Google Pub/Sub等。

总的来说,消息队列在分布式系统、微服务架构、大数据处理和其他需要高度扩展性和容错性的应用中起到了非常重要的作用。

image.png

image.png

image.png

image.png

Kafka是一个分布式流处理平台,它可以在多个服务器之间进行高吞吐量的数据流传输。Kafka最初是由LinkedIn开发的,并于2011年作为开源项目捐赠给Apache软件基金会。自那时以来,它已经成为流数据处理的一个非常流行的工具。

Kafka的核心概念包括:生产者、消费者、主题、分区和偏移量。

  1. 生产者:生产者是将数据发送到Kafka的应用程序或服务。他们将消息发送到特定的Kafka主题。
  2. 消费者:消费者是从Kafka主题中读取数据的应用程序或服务。消费者可以分组,以便在消费者之间进行负载均衡或以多个消费者同时处理同一个主题的消息。
  3. 主题:Kafka的消息是通过主题进行分类的。主题可以被视为一个消息流或消息队列。生产者将消息发送到特定的主题,消费者订阅主题并从中读取消息。
  4. 分区:每个主题可以分成多个分区。每个分区是一个独立的消息队列,并且可以在不同的服务器上存储和处理。分区可以实现数据并行处理,提高Kafka的吞吐量。
  5. 偏移量:每个消息在其所属的分区中都有一个唯一的偏移量。偏移量是一个递增的整数值,用于标识消息在分区中的位置。消费者使用偏移量来追踪已经读取的消息和下一个要读取的消息。

Kafka的主要应用场景包括:日志收集、流数据处理、事件驱动的微服务架构等。Kafka可以与许多流数据处理工具(如Apache Flink、Apache Storm、Apache Spark)配合使用,以实现实时数据分析和处理。