Hadoop-2.7.0 HA实现细节分析之HealthMonitor

一、HealthMonitor是什么

      HealthMonitor是一个周期性工作的后台线程,它在一个循环中周期性的同HA服务进行心跳,负责跟踪NameNode服务的健康状况,并在健康状况变化时调用failover控制器的回调方法。

二、HealthMonitor是如何实现的

      1、成员变量

            HealthMonitor内部有如下主要成员变量:

            1)后台工作线程:真正卖力干活的

  private Daemon daemon;// 后台工作线程
            2)一些时间间隔、rpc超时参数等配置信息,见注释

  // 重连、周期性检查、失连后的睡眠时间等时间间隔
  private long connectRetryInterval;
  private long checkIntervalMillis;
  private long sleepAfterDisconnectMillis;

  // rpc超时时间
  private int rpcTimeout;
    // 配置信息
  private final Configuration conf;

            3)连接代理相关

  /** The connected proxy */
  // 连接代理
  private HAServiceProtocol proxy;

  /** The HA service to monitor */
  // HA服务到监视器的对象,通过它来获取连接代理proxy,代表一个客户端HA管理命令的目标。
  private final HAServiceTarget targetToMonitor;

            4)监视器s,状态发生变化时需要周知监视器s,故它们都实现了相同的接口

  /**
   * Listeners for state changes
   * 状态变更监视器列表,里面的元素是实现Callback的对象
   */
  private List<Callback> callbacks = Collections.synchronizedList(
      new LinkedList<Callback>());

  /**
   * 服务状态监视器列表,里面的元素是实现ServiceStateCallback的对象
   */
  private List<ServiceStateCallback> serviceStateCallbacks = Collections
      .synchronizedList(new LinkedList<ServiceStateCallback>());

            5)状态

  // 服务状态,默认为正在初始化
  private State state = State.INITIALIZING;
  /**
   * 最后一次服务状态,默认为正在初始化
   */
  private HAServiceStatus lastServiceState = new HAServiceStatus(
      HAServiceState.INITIALIZING);

      2、状态&接口

            2.1、状态

            HealthMonitor定义

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值