Appearance
大纲
- Kafka 是什么
- Kafka 的核心概念
1、Kafka 是什么
略
2、Kafka 的核心概念
核心概念主要是: Producer、Consumer、Broker、Topic、Partition
有点类似 RocketMQ,毕竟RocketMQ 的设计之处是参考了部分 Kafka 的设计,其中 Kafka 是没有 Queue 这个概念的,主题 Topic 下面的实际存储数据采用的是 Partion 分区。

kafka 和 Zookeeper 的关系
在 Kafka 2.8 之前,Kafka 其重度依赖于 Zookeeper。
在 Kafka 2.8 之后,引入了基于 Raft 协议的 KRaft 模式,不再依赖 Zookeeper,简化了 Kafka 的架构。
Zookeeper 的作用就是注册中心,作为节点的 Broker 的路由管理 和集群负载等功能
kafka 和 RocketMQ 的区别
可以看一下下面这个解释, 具体更深层次的理解建议从实际的代码程序方面入手去理解。
Kafka 和 RocketMQ 都是高性能的消息中间件,广泛用于处理大规模数据流和实现分布式系统中的消息传递。
尽管它们有许多相似之处,但也存在一些关键的区别。以下是 Kafka 和 RocketMQ 主要区别的概述:
- 设计架构
- Kafka:最初由LinkedIn开发,重点放在高吞吐量和可扩展性上。Kafka 使用分区(Partition)和复制(Replication)的概念来保证消息的可靠性和可伸缩性。
- RocketMQ:最初由阿里巴巴开发,设计重点是提供更丰富的消息模型和服务质量。它采用了更复杂的存储和消息路由机制。
- 存储机制
- Kafka:采用分布式、可伸缩的日志存储机制。每个主题(Topic)分为多个分区,每个分区在物理上对应一个日志文件。
- RocketMQ:使用单一的
CommitLog文件来存储所有主题的消息,然后通过ConsumeQueue和IndexFile来为消息提供索引和快速访问。
- 消息消费模型
- Kafka:主要支持发布-订阅模型,但也可以通过分区分配实现类似队列的消费模式。Kafka 强调消费者的概念,每个消费者负责跟踪自己的偏移量。
- RocketMQ:提供更多样的消息模型,包括发布-订阅、点对点消息、顺序消息和延时消息等。
- 事务消息
- Kafka:在较新版本中增加了对事务消息的支持,但实现相对简单。
- RocketMQ:提供了更为复杂和强大的事务消息支持。
- 性能和可靠性
- Kafka:以其高性能和高吞吐量而著称,特别是在处理大量数据时。
- RocketMQ:虽然也提供高性能处理,但在某些场景下可能不如Kafka高效,尤其是在单一CommitLog设计下。
- 社区和生态
- Kafka:有着广泛的社区支持和成熟的生态系统,是流数据处理和实时分析的首选。
- RocketMQ:在中国有较强的社区支持,特别是在阿里巴巴及其生态系统中得到广泛应用。
选择Kafka还是RocketMQ,取决于具体的应用场景和需求。
如果需要处理大规模的数据流,特别是在数据分析和流处理方面,Kafka可能是更好的选择。而如果需要更复杂的消息类型和服务质量,或者对事务消息有更高的要求,RocketMQ可能更适合。在实际选择时,还需要考虑团队的技术栈兼容性和具体的业务需求。
3、Kafka 消费顺序、消息丢失和重复消费
to be contined.....
参考