kafka新版本为了解决HW&LEO的同步机制更新缺陷,引入了Epoch的概念。 Leader epoch 分两部分组成:

Epoch : 版本号。每当副本领导权发生变更时,都会增加该版本号。小版本号的 Leader 被认为是过期 Leader,不能再行使 Leader 权力。

起始位移(Start Offset)。Leader 副本在该 Epoch 值上写入的首条消息的位移。

Leader epoch(1, 120) 说明这个leader 的版本号为1,版本的起始位置是 第120条消息开始的 Kafka Broker 会在内存中为每个分区都缓存 Leader Epoch 数据,同时它还会定期地将这些信息持久化到一个 checkpoint 文件中。 当 Leader 副本写入消息到磁盘时,Broker 会尝试更新这部分缓存。如果该 Leader 是首次写入消息,那么 Broker 会向缓存中增加一个 Leader Epoch 条目,否则就不做更新。 这样,每次有 Leader 变更时,新的 Leader 副本会查询这部分缓存,取出对应的 Leader Epoch 的起始位移,以避免数据丢失和不一致的情况。 Kafka通过ISR的同步机制及优化策略,用 HW & LEO的方式很好的确保了数据不丢失以及吞吐率。

在这里插入图片描述

Logo

Kafka开源项目指南提供详尽教程,助开发者掌握其架构、配置和使用,实现高效数据流管理和实时处理。它高性能、可扩展,适合日志收集和实时数据处理,通过持久化保障数据安全,是企业大数据生态系统的核心。

更多推荐