大数据课程I3——Kafka的消息流与索引机制

文章作者邮箱:[email protected]              地址:广东惠州

 ▲ 本章节目的

⚪ 掌握Kafka的消息流处理;

⚪ 掌握Kafka的索引机制;

⚪ 掌握Kafka的消息系统语义;

一、Kafka消息流处理

1. Producer 写入消息

大数据课程I3——Kafka的消息流与索引机制_第1张图片

 流程说明:

1. producer 要向Kafka生产消息,需要先通过 zookeeper 的 "/brokers/.../state" 节点找到该 partition 的 副本leader的位置信息。
2. producer 将消息发送给该 leader。
3. leader 收到消息后,将消息写入到分区目录下的本地 log 文件中。
4. followers 从 leader pull 同步消息,将消息写入到分区目录下的 log 中。如果同步成功(将消息写入log文件成功),则向 leader 返回 ACK(确认机制)。

细节补充:

Kafka引入了一个ISR机制(概念),在Follower和Leader数据同步的过程中,

比如:

①副本-Follower

②副本-Leader

③副本-Follower

在数据同步过程中,①②同步,③出故障没有跟上。

此时①②是同一组ISR成员,③不是。

如果后续Leader挂掉了,则Kafka会从Leader的ISR组中随机选择一个Follower成为Leader。

Kafka底层有一个同步超时的时间(10s),即一个Follower在超时时间内没有反馈ACK,则人为同步失败。

由写入流程可知ISR里面的所有replica都跟上了Leader,只有ISR里面的成员才能选为Leader。对于 f+1 个replica,一个partition可以在容忍 f 个replica失效的情况下保证消息步丢失。

比如:一个分区由5个副本,挂掉4个,剩下一个副本,依然可以工作。

注意:Kafka的选举不同于zookeeper,用的不是过半选举。

5. leader 收到所有 ISR 中的 repli

你可能感兴趣的:(大数据,kafka,分布式)