栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

【无标题】

【无标题】

private void electLeader() throws Exception {
    logger.info("[" + metadata + "] cluster leader: " + cluster.getLeader());
    if (cluster.getNodes().size() > 1) {
        metadata leader = cluster.getLeader();
        // 判断集群中是否有主节点或者主节点是否存活,没有则发起选举。
        if ((leader == null) || (leader.getNodeStatus() !=
            NodeStatus.ALIVE)) {
            logger.info("Starting election ...");
            epoch.getAndIncrement();
            metadata.setEpoch(epoch.get());
            // 获取集群中比自己ID大的所有节点
            List largerNodes = cluster.largerNodes(metadata);
            // 如果没有则向其他节点发送Victory消息,宣布为主节点
            if (largerNodes.isEmpty()) {
                if (metadata.getNodeStatus() != NodeStatus.ALIVE) {
                    logger.warn("Node is not alive: " + metadata);
                }else {
                    cluster.getNodes().get(metadata.getNodeId().toString()).setEpoch(epoch.get());
                    cluster.setLeader(metadata);
                    List otherNodes = cluster.otherNodes(metadata);
                    for (metadata otherNode : otherNodes) {
                        client.invokeOneway(otherNode.getNodeAddress(), VictoryMessage.getInstance().
                        request(metadata), 3*1000);
                    }
                }
            }else {
                // 向比自己ID大的所有节点发送Election消息
                for (metadata largerNode : largerNodes) {
                    RemotingMessage response = client.invokeSync(largerNode.getNodeAddress(), 
                    ElectionMessage.getInstance().
                    request(metadata), 3*1000);
                    String res = new String(response.getMessageBody(), Charset.forName("UTF-8"));
                    logger.info("Election response: " + res);
                }
            }
        }
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/701547.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号