这道题表面上是考核你对 Leader 和 Follower 区别的理解,但很容易引申到 Kafka 的同步 机 制上。因此,我建议你主动出击,一次性地把隐含的考点也答出来,也许能够暂时把面试 官 “唬住”,并体现你的专业性。 你可以这么回答:Kafka 副本当前分为领导者副本和追随者副本。只有 Leader 副本才能 对外提 供读写服务,响应 Clients 端的请求。Follower 副本只是采用拉(PULL)的方 式,被动地同步 Leader 副本中的数据,并且在 Leader 副本所在的 Broker 宕机后,随时 准备应聘 Leader 副本。

通常来说,回答到这个程度,其实才只说了 60%,因此,我建议你再回答两个额外的加分 项。

强调 Follower 副本也能对外提供读服务。自 Kafka 2.4 版本开始,社区通过引入新的 Broker 端参数,允许 Follower 副本有限度地提供读服务。 强调 Leader 和 Follower 的消息序列在实际场景中不一致。很多原因都可能造成 Leader 和 Follower 保存的消息序列不一致,比如程序 Bug、网络问题等。这是很严重 的错误,必须要 完全规避。你可以补充下,之前确保一致性的主要手段是高水位机制,但高水位值无法保证 Leader 连续变更场景下的数据一致性,因此,社区引入了 Leader Epoch 机制,来修复高水 位值的弊端。关于“Leader Epoch 机制”,国内的资料不是 很多,它的普及度远不如高水位, 不妨大胆地把这个概念秀出来,力求惊艳一把。