大家好,我是小米。前几天有个读者私信我,说自己去面试 Java 后端,被面试官问了一道经典题:“Zookeeper 节点宕机怎么办?”
很多同学一听到这个问题就开始紧张:Leader 宕机?Follower 宕机?选举?过半机制?脑子瞬间一团乱。
其实这件事情如果换个视角来看,你会发现Zookeeper 的设计,就像一个村子选村长的故事。今天我们就用一个小故事,把这道经典面试题彻底讲明白。
先认识一下 Zookeeper 集群
Zookeeper 本身就是一个分布式集群系统。在生产环境中,一般推荐:至少部署 3 台服务器。
为什么不是 1 台?为什么不是 2 台?这个问题我们等会儿就知道答案了。
在 Zookeeper 集群里,每个节点有不同角色:
简单理解:Leader = 村长Follower = 村委会成员,只要村委会成员还在,村子就不会乱。
如果 Follower 宕机,会发生什么?
想象一下这个场景。一个村子有3 个村委会成员:
- 村长:Leader
- 村委:Follower1
- 村委:Follower2
有一天,其中一个村委请假了(宕机)。那么村子还能不能正常运转?