在生产环境中,你一定碰到过“某个主题分区不能工作了”的情形。使用命令行查看状态的 话,会发现 Leader 是 -1,于是,你使用各种命令都无济于事,最后只能用“重启大 法”。

但是,有没有什么办法,可以不重启集群,就能解决此事呢?这就是此题的由来。

我直接给答案:删除 ZooKeeper 节点 /controller,触发 Controller 重选举。 Controller 重 选举能够为所有主题分区重刷分区状态,可以有效解决因不一致导致的 Leader 不可用问题。 我几乎可以断定,当面试官问出此题时,要么就是他真的不知道怎么 解决在向你寻求答案,要 么他就是在等你说出这个答案。所以,千万别一上来就说“来个重 启”之类的话。