您的位置:首页 > 其它

rank和ip 地址的关系

2018-02-26 19:57 190 查看
在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地址是数组中下标和值的关系
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: