zoukankan      html  css  js  c++  java
  • 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事件

  • 相关阅读:
    ASP的URL重写技术 IIS的ISAPI
    关于如何去勾引百度谷歌的蜘蛛爬虫
    如何让百度和google的蜘蛛爬虫迅速爬过来
    本机不安装Oracle客户端,使用PL/SQL Developer和 Instant Client 工具包连接oracle 11g远程数据库
    Java小知识点总结
    Tomcat启动分析(我们为什么要配置CATALINA_HOME环境变量)
    OracleDBconsoleorcl无法启动解决方案
    Java中PreparedStatement的错误使用
    Oracle 中行列转换问题总结
    Java中 Interger 的自动装箱
  • 原文地址:https://www.cnblogs.com/liushoudong/p/13334847.html
Copyright © 2011-2022 走看看