rank和ip 地址的关系

本文深入探讨了Ceph Monitor中rank值的确定方法及其与IP地址的关系,rank值是选举Leader和Peon的重要依据,文章详细介绍了rank值是如何通过ip地址在Monitor Map中映射为数组下标。
摘要由CSDN通过智能技术生成
在monitor 选举leader和peon的时候,rank这个值很关键,之前讲过这个值和ip地址有关,这个值和ip地址的关系如下
在monitor.cc 中的bootstrap这个函数中可以看到
void Monitor::bootstrap()
{
  // note my rank
  #可以看到是通过get_rank 这个函数得到rank的,这个函数的形参就是ip地址
  int newrank = monmap->get_rank(messenger->get_myaddr());
  if (newrank < 0 && rank >= 0) {
    // was i ever part of the quorum?
    if (has_ever_joined) {
      dout(0) << " removed from monmap, suicide." << dendl;
      exit(0);
    }
  }

  // singleton monitor?
  #从这可以看出,rank也是决定
  if (monmap->size() == 1 && rank == 0) {
    win_standalone_election();
    return;
  }
}
我们这里重点看看get_rank函数
  int get_rank(const string& n) {
    for (unsigned i = 0; i < ranks.size(); i++)
      if (ranks[i] == n)
	return i;
    return -1;
  }
从这里可以知道rank 和形参表示的ip地址是数组中下标和值的关系

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值