看完了前面的那些章节,你会发现有个组件出镜率特别高,几乎无处不在,HDFS 的 NameNode 主备切换,HBase 的 HMaster 主备切换加元数据存储,Kafka 的元数据存储等等,这些内容都指向了它,没错就是接下来需要重点讲解的 Zookeeper ,官方地说它是一个分布式协调系统,主要功能是对其他组件提供一致性服务,把它纳入分布式存储这个模块是因为你确实可以把它看作是一个内存数据库,只是它存储的数据都是元数据,而且它能通过自己的特性解决很多数据库解决不了的问题,所以这也让大家把它和数据库三个字划分开了。话不多说,我们来看看这个无处不在的 Zookeeper 的面试要点。
本篇面试内容划重点:Zab、选举、脑裂、CAP。
架构与各角色职责
Zookeeper 顾名思义,动物园管理员,但是这个管理员也有不同的角色,普通管理员(Follower),代理队长(Leader),编外人员(Observer),在代理队长请假的情况下,所有的普通管理员都有资格参选队长,他们采用投票的方式来选举。小动物们(Client)有提需求(写数据)和取餐(读数据)的权利,队长和管理员都能处理取餐请求,但是提需求需要统一告诉队长让队长确认。另外出了个状况,人手不足,于是找来了编外人员,编外人员没有选举和参选权利,只能负责处理各种请求。这就是 Zookeeper 运营动物园的方式。