Skip to content

MQ Kafka_基础

大纲

  • Kafka 是什么
  • Kafka 的核心概念

1、Kafka 是什么

2、Kafka 的核心概念

核心概念主要是: Producer、Consumer、Broker、Topic、Partition

有点类似 RocketMQ,毕竟RocketMQ 的设计之处是参考了部分 Kafka 的设计,其中 Kafka 是没有 Queue 这个概念的,主题 Topic 下面的实际存储数据采用的是 Partion 分区。

image.png


kafka 和 Zookeeper 的关系

在 Kafka 2.8 之前,Kafka 其重度依赖于 Zookeeper。

在 Kafka 2.8 之后,引入了基于 Raft 协议的 KRaft 模式,不再依赖 Zookeeper,简化了 Kafka 的架构。

Zookeeper 的作用就是注册中心,作为节点的 Broker 的路由管理 和集群负载等功能

kafka 和 RocketMQ 的区别

可以看一下下面这个解释, 具体更深层次的理解建议从实际的代码程序方面入手去理解。

Kafka 和 RocketMQ 都是高性能的消息中间件,广泛用于处理大规模数据流和实现分布式系统中的消息传递。

尽管它们有许多相似之处,但也存在一些关键的区别。以下是 Kafka 和 RocketMQ 主要区别的概述:

  1. 设计架构
  • Kafka:最初由LinkedIn开发,重点放在高吞吐量和可扩展性上。Kafka 使用分区(Partition)和复制(Replication)的概念来保证消息的可靠性和可伸缩性。
  • RocketMQ:最初由阿里巴巴开发,设计重点是提供更丰富的消息模型和服务质量。它采用了更复杂的存储和消息路由机制。
  1. 存储机制
  • Kafka:采用分布式、可伸缩的日志存储机制。每个主题(Topic)分为多个分区,每个分区在物理上对应一个日志文件。
  • RocketMQ:使用单一的 CommitLog 文件来存储所有主题的消息,然后通过 ConsumeQueueIndexFile 来为消息提供索引和快速访问。
  1. 消息消费模型
  • Kafka:主要支持发布-订阅模型,但也可以通过分区分配实现类似队列的消费模式。Kafka 强调消费者的概念,每个消费者负责跟踪自己的偏移量。
  • RocketMQ:提供更多样的消息模型,包括发布-订阅、点对点消息、顺序消息和延时消息等。
  1. 事务消息
  • Kafka:在较新版本中增加了对事务消息的支持,但实现相对简单。
  • RocketMQ:提供了更为复杂和强大的事务消息支持。
  1. 性能和可靠性
  • Kafka:以其高性能和高吞吐量而著称,特别是在处理大量数据时。
  • RocketMQ:虽然也提供高性能处理,但在某些场景下可能不如Kafka高效,尤其是在单一CommitLog设计下。
  1. 社区和生态
  • Kafka:有着广泛的社区支持和成熟的生态系统,是流数据处理和实时分析的首选。
  • RocketMQ:在中国有较强的社区支持,特别是在阿里巴巴及其生态系统中得到广泛应用。

选择Kafka还是RocketMQ,取决于具体的应用场景和需求。

如果需要处理大规模的数据流,特别是在数据分析和流处理方面,Kafka可能是更好的选择。而如果需要更复杂的消息类型和服务质量,或者对事务消息有更高的要求,RocketMQ可能更适合。在实际选择时,还需要考虑团队的技术栈兼容性和具体的业务需求。

3、Kafka 消费顺序、消息丢失和重复消费

to be contined.....


参考