1.简述Kafka集群架构
一个典型的Kafka集群包含若干生产者,若干Broker,若干消费者以及一个Zookeeper集群。
Zookeeper用于管理和协调Broker。若集群中有Broker失效、新增、故障,Zookeeper会通知其他生产者和消费者进行Broker协调工作。
生产者会用Push模式将消息发送到Broker,消费者用Pull模式从Broker中订阅并消费消息。
2.请简述Kafka主题与分区的概念
Kafka通过主题对消息进行分类,一个主题可以分为多个分区,每个分区可以存储于不同的Broker上。
3.请简述Kafka分区副本同步的基于ISR动态复制方案及其优点。
在Kafka的系统中,领导者会维护一个需要与其保持同步的副本列表(包括自己),该列表称为ISR(In-sync Replica)。且每个分区都有一个ISR。
- 若一定时间内,跟随者没有向领导者请求新的消息,该跟随者就被认为是不同步的,领导者会将其移出ISR列表,避免因为跟随者的请求速度过慢而拖慢整体的速度。
- 当跟随者重新与领导者保持同步时,领导者再次将其加入ISR。
- 当领导者失效的时,只会选择ISR中仍然存在的跟随者作为新的领导者。
且ISR的列表数据保存在Zookeeper中,每次ISR改变后,领导者都会将最新的列表数据同步到Zookeeper中。 - 从消费者的角度来看,每次消息写入时,只有当ISR中所有的跟随者都复制完毕,领导者才会将消息写入状态置为Commit,而只有写入状态为Commit的消息才能被消费者拉取&#x