kafka学习(四)---kafka工作流和消息存储

本文详细解析了Kafka的架构与工作流程,包括生产者写入消息、消费者组消费消息的过程,以及消息的offset机制。阐述了leader与follower的角色分配原则,以及通过分区提高负载和消费效率的方法。同时介绍了Kafka的消息保存时限与消息有序性特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前有说到过 kafka 的架构图,根据架构图 kafka 工作流程可以表达为下图机制。

流程已经很清楚,生产者写消息到 kafka 集群,消费者 [组] 从 kafka 集群中消费消息。另外,其中的 0,1,2...就是消息的 offset,保存在 partition 中。

其中有几点值得注意:

1. 为了容灾,leader 和 follower 一定不在同一个 broker 内。

2.生产者写入和消费者消费的 partition 对象都是leader,而 follower 则主动与 leader 同步,等到 leader 刮掉以后,由 follower 代替 leader。

3.为了提高负载和消费效率,针对某一个 topic,kafka 会在不同的 broker 创建 partition(分区)。比如对于 topicA,分别在 broker0,broker1,broker2 上创建了 topicA 的三个分区 partition0,partition1 和 partition2。

4.kafka 消息默认保存时间为 7 天。

5.kafka 区内有序,但是不保证全局有序(也就是消费者消费消息的顺序和生产者生产的消息的顺序一致)

topic 是逻辑上的概念,而 partition 是物理上的概念,每个partition 对应于一个 log 文件,log 文件中存储的就是 producer 生产的数据,producer 生产的数据会不断追加到 log 文件的末尾,并且每条消息都有自己的 offset。消费者组中的每个消费者,都会保存自己消费到了哪个 offset,以便出错恢复时,从上次位置继续消费。

接下来看看保存在 data 目录下的 topic 各分区的数据是什么样的。

这里查看了 forthTopic 的 0 号分区中消息数据,其中

接下来看一个图就会对消费者如何从上次消费的地方继续消费一目了然。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你不是叶秋

你的鼓励就是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值