20# Apache Kafka 的学习笔记
Kafka 相当厉害啊. 目录 Kafka Kafka 怎么进行数据备份 Consumer 在 Leader 还是 Follower 中拿去数据 Kafka ISR 机制 Kafka 数据不丢失不重复 Kafka 如何实现幂等性 Kafka 为什么速度快 - 页缓存技术 kafka 数据格式都是什么 Kafka 如何清理过期数据 kafka 的 Broker, partition, segment 都是啥 kafka 一条 Message 中包含哪些信息 Kafka 蓄水池机制 Kafka Kafka 怎么进行数据备份 备份是 0.8 版本后的功能. 一个备份数量为 n 的集群允许 n-1 个节点失效. 有一个节点作为 Leader 节点, 负责保存其他备份节点的列表, 并维持备份间状态同步. Consumer 在 Leader 还是 Follower 中拿去数据 读写操作都来自 Leader, Follower 只负责数据备份和心跳检测 Leader 存活状态, 并及时顶替. Kafka ISR 机制 Kafka 为了保持数据一致性而设计了 ISR 机制. 数据可靠主要是依赖于 Broker 中的 in-sync Replica 副本同步队列机制, 主要逻辑是制造冗余, 数据互备. Leader 会维护一个与其保持同步的 Replica 集合, 然后保证这组集合至少有一个存活, 并且消息 Commit 成功. Partition Leader 保持同步的 Partition Follower 集合, 当 ISR 中的 Partition Follower 完成数据的同步之后给 Leader 发送 ack. 如果 Partition Follower 长时间 (Replica.lag.time.max.ms) 未向 Leader 同步数据, 则该 Partition Follower 将被踢出 ISR. Partition Leader 发生故障之后, 就会从 ISR 中选举新的 Partition Leader. 当 ISR 中所有 Replica 都向 Leader 发送 ACK 时, Leader 执行 Commit. Kafka 数据不丢失不重复 首先, Kafka 并不能完全的保证不丢失不重复. 0.11 版本前, Kafka 有两次消息传递: