什么时候用Kafka,什么时候用RabbitMQ?

使用 Kafka 的场景:

  • 大数据处理: 当需要处理大规模的数据流时,Kafka 是一个很好的选择。它能够高效地处理海量数据,并提供了分区、副本机制来实现数据的容错和可靠性。
  • 数据管道: 如果需要在不同的系统之间构建可扩展的、高吞吐量的数据管道,Kafka 提供了优秀的支持。它可以作为数据的集成中心,将数据从生产者传输到多个消费者。
  • 事件溯源: 对于事件驱动架构和事件溯源领域,Kafka 提供了强大的支持,可以用于实时事件处理和日志记录。
  • 实时监控和日志收集: 由于 Kafka 具有高吞吐量和低延迟的特性,因此非常适合实时监控和日志收集,如将应用程序日志发送至中央日志收集器。

使用 RabbitMQ 的场景:任务队列、即时通讯、灵活的路由、微服务架构

  • 任务队列: 当需要实现异步任务处理和负载均衡时,RabbitMQ 是一个非常好的选择。它可以作为一个可靠的任务队列来分发和处理任务。
  • 即时通讯: 在需要实现实时通讯和轻量级消息传递的应用场景下,RabbitMQ 提供了直接交换机和主题交换机等模型,非常适合实现即时通讯功能。
  • 灵活的路由: RabbitMQ 支持各种灵活的路由策略,可以根据消息的类型、关键字等进行定制化的路由,适合对消息进行复杂的路由操作。
  • 微服务架构: 在微服务架构中,RabbitMQ 作为服务之间的通信桥梁,能够很好地支持微服务之间的消息通信。

Kafka

kafka 基础概念是什么?
  • 消息(Message): 在 Kafka 中,消息是指传输的数据单元,通常是以字节流的形式存在。
  • 生产者(Producer): 生产者是向 Kafka 中的一个或多个主题(Topic)发布消息的实体。它负责将数据发送到 Kafka 集群中的 Broker 服务器。
  • 消费者(Consumer): 消费者是从 Kafka 主题中获取数据并进行处理的实体。它可以订阅一个或多个主题,然后从 Broker 服务器获取对应的消息。
  • 主题(Topic): 主题是消息的逻辑分类,每条消息都属于一个特定的主题。生产者将消息发布到主题,而消费者从主题订阅消息。
  • 分区(Partition): 主题可以划分为多个分区,每个分区是一个有序且不可变的消息序列。分区在提高消息处理的并发能力和容错性方面起到重要作用。
  • 副本(Replication): 为了提供高可用性和容错性,Kafka 允许将每个分区的数据复制到多个 Broker 服务器上,这些副本称为分区的副本。
  • Broker: Broker 是 Kafka 集群中的服务器节点,负责存储和处理消息。每个 Broker 可能会承载多个分区和副本。
  • 消费者组(Consumer Group): 消费者组是多个消费者实例的集合,它们共同消费一个或多个主题的消息,并可以实现负载均衡和横向扩展。
Kafka的架构是怎样的?

以下是 Kafka 的基本架构组件:

  • 主题(Topic):消息的逻辑通道,生产者将消息发布到主题,消费者从主题订阅消息。主题可以分为多个分区,每个分区可以在不同的服务器上。
  • 分区(Partition):每个主题可以分为多个分区,分区是消息存储的物理单元。每条消息都会被附加到特定分区中。分区在服务端是顺序写入、顺序读取的队列结构。
  • 生产者(Producer):负责将消息发布到 Kafka 集群的指定主题中。
  • 消费者(Consumer):订阅并拉取主题中的消息,并进行相应的处理。消费者可以以消费者组的形式进行组织,每个分区只能由同一个消费者组内的一个消费者进行消费。
  • ZooKeeper:Kafka 使用 ZooKeeper 来进行集群协调和配置管理,包括领导者选举、分区分配、集群配置等。
  • Broker:Kafka 集群中的每个服务器节点称为 Broker,每个 Broker 可能包含多个分区,可以接收来自生产者的消息并提供给消费者。
  • 副本(Replica):在 Kafka 中,每个分区都可以有多个副本,这些副本分布在不同的 Broker 上,以提供数据冗余和容错性。
>