2、使用Zookeeper实现Master-Worker协同

1、master-worker架构

master-worker是一个广泛使用的分布式架构。master-worker架构中有一个master负责监控worker的状态,并为worker分配任务

  • 在任何时刻,系统中最多只能有一个master,不可以出现两个master的情况,多个master共存会导致脑裂;
  • 系统中除了处于active状态的master还有一个backup master,如果active master失败了,backup master可以很快的进入active状态;
  • master实时监控worker的状态,能够及时收到worker成员变化的通知。master在收到worker成员变化的时候,通常重新进行任务的重新分配

示例1:HBase

HBase采用的是master-worker的架构。HBase是系统中的master,HRegionServer是系统中的worker。HMBase监控HBase Cluster中worker的成员变化,把region分配给各个HRegionServer。系统中有一个HMaster处于active状态,其他HMaster处于备用状态

示例2:Kafka

一个Kafka集群由多个broker组成,这些broker是系统中的worker。Kafka会从这些worker选举出一个controller,这个controller是系统中的master,负责把topic partition分配给各个broker

示例3:HDFS

HDFS采用的也是master-worker架构,NameNode是系统中的master,DataNode是系统中的worker。NameNode用来保存整个分布式文件系统的metadata,并把数据块分配给cluster中的DataNode进行保存

如何使用ZooKeeper实现master-worker

1、使用一个临时节点/master表示master。master在行使master的职能之前,首先要创建这个znode。如果能创建成功,进入active状态,开始行使master职能。否则的话,进入backup状态,使用watch机制监控/master。假设系统中有一个active master和一个backup master。如果active master失败,它创建的/master就会被ZooKeeper自动删除。这时backup master就会收到通知,通过再次创建/master节点成为新的active master

2、worker通过在/workers下面创建临时节点来加入集群

3、处于active状态的master会通过watch机制监控/worker下面znode列表来实时获取worker成员的变化

1、创建workers

2、创建master

active master

backup master

3、master监控系统中的workers

监控

创建新的workers节点

获取到watch事件

原文地址:https://www.cnblogs.com/liushoudong/p/13334847.html