一般在这种构架中。主节点进程负责跟踪从节点状态和任务的有效性,并分配任务到从节点。对Zookeeper来说,这个构架风格具有代表性,阐述了大多数流行的任务,如果选举主节点,跟踪有效的从节点,维护应用元数据。

一个重要例子:

HBase---Google的数据存储系统(BigTable)模型的实现,在最高层,主节点服务器(Hmaster)负责跟踪区域服务器(HRegionServer)是否可用,并分派区域到服务器。


要实现主-从模型式的系统,我们必须了解如下概念:

1:主节点崩溃

如果主节点发送错误并失效,系统将无法分派新的任务或重新分配已失败的任务。


2:从节点崩溃

如果从节点崩溃,已分配的任务将无法完成。


3:通信故障

如果主节点和从节点之间无法进行信息交换,从节点将无法得知新任务分配给它。


为了解决这个问题,之前的主节点出现问题时,系统需要可靠地选举一个新的主节点,判断从哪些从节点有效,并判断一个从节点的状态对于系统其它部分是否有效。

通讯故障导致的另外的一个问题时对锁的同步原语的影响。因为节点可能崩溃,而系统网络也可能网路分区(network partition),锁机制也会阻止任务的继续执行。因此Zookeeper也需要实现处理这些情况的机制。首先,客户端可以告诉Zookeeper某些数据的状态是临时状态;其次,同时Zookeeper需要客户端定时发送是否存活的通知,如果一个客户端未能及时发送通知,那么所有从属于这个客户端的临时状态数据将全部被删除。通过这两个机制,在崩溃或通信故障发生的时候,我们就可以预防客户端独立运行而发生的应用宕机。


脑裂(split-brain):系统中两个或者多个部分开始独立工作,导致整体行为不一致。

任务总结:

1:主节点选举

这是关键的一步,使得主节点可以给检点分配任务。

2:崩溃检测

主节点必须具有检测从节点崩溃的能力。

3:组成员关系管理:

主节点必须具有知道哪一个从节点可以执行任务的能力。

4:元数据管理

主节点和从节点必须具有通过某种可靠的方式来保存分配状态和执行状态的能力。