知其然,知其所以然
Kafka 内部原理 2026-09-28

Read Committed 和 Read Uncommitted

本机3节点集群里开一个事务写3条消息先不提交,验证read_uncommitted立刻读到、read_committed读到0条;提交后read_committed追上来;中止的事务里read_uncommitted瞬间看到过,但read_committed永远看不到。

Kafka 真实验证 动画演示
Kafka 内部原理 2026-09-28

消费—处理—再生产如何实现事务一致性

验证一个读—处理—写循环把输出produce和offset提交塞进同一个事务,模拟处理完但崩溃在提交之前,重试后committed offset和输出内容验证只留下一份结果,没有重复。

Kafka 真实验证 动画演示
Kafka 内部原理 2026-09-28

Outbox Pattern:数据库和 Kafka 如何最终一致

用sqlite对比naive双写(DB提交后单独发Kafka,崩溃后事件永久丢失)和outbox模式(订单和待发事件同一事务提交,relay崩溃重试后消息重复但不丢)。

Kafka 真实验证 动画演示
Kafka 内部原理 2026-09-28

At Least Once、At Most Once、Exactly Once 对比

对同一条消息构造三种真实消费方式,验证at-most-once丢失、at-least-once重复、exactly-once物理重试但最终只确认一次的具体差异。

Kafka 真实验证 动画演示
Kafka 内部原理 2026-09-28

消息顺序:为什么只能保证 Partition 内有序

3分区topic用3个key各发10条消息,验证同key消息哈希到同一分区且分区内严格有序,但consumer的跨分区全局到达顺序不等于发送顺序。

Kafka 真实验证 动画演示
Kafka 内部原理 2026-09-28

Kafka Controller 到底负责什么

直接dump __cluster_metadata内部topic的原始日志,看broker注册、topic创建、故障切换如何变成REGISTER_BROKER_RECORD/TOPIC_RECORD/PARTITION_CHANGE_RECORD等具体记录。

Kafka 真实验证 动画演示
Kafka 内部原理 2026-09-28

ZooKeeper 模式和 KRaft 模式有什么区别

检查本机Kafka 4.3.1安装目录,确认ZooKeeper相关脚本和配置已完全不存在,用老式zookeeper.connect配置启动直接报错缺少process.roles。

Kafka 真实验证 动画演示
Kafka 内部原理 2026-09-28

KRaft Controller Quorum 如何选主

kill掉3节点KRaft集群当前的controller quorum leader,验证剩下2/3投票节点完成重新选举,且集群操作在此期间完全未受影响。

Kafka 真实验证 动画演示
Kafka 内部原理 2026-09-28

Kafka Metadata:客户端如何知道 Partition 在哪个 Broker

客户端只在bootstrap.servers配置一个broker,验证它能学到完整的集群broker列表和分区leader映射,并成功把消息发送到配置里从未出现过的broker。

Kafka 真实验证 动画演示
Kafka 内部原理 2026-09-28

Partition Leader 是怎么选出来的

创建6分区3副本topic观察初始leader的round-robin分布规律,kill一个broker后验证只有受影响的分区换了leader。

Kafka 真实验证 动画演示
Kafka 内部原理 2026-09-28

Controller 故障时集群发生什么

kill掉一个同时兼任controller leader和数据分区leader的broker,测量三种操作(受影响分区/无关分区/创建新topic)真实的端到端恢复耗时,都约11秒,对应broker.session.timeout.ms默认9秒。

Kafka 真实验证 动画演示
Kafka 内部原理 2026-09-28

Broker 加入和离开集群时发生什么

真实给3节点集群加入第4个broker,验证已有topic完全不受影响,只有新建topic才会用到它;再kill掉它,验证Replicas列表不会自动清理死亡broker id。

Kafka 真实验证 动画演示
京ICP备2026067502号-1京公网安备11010502063487号