public void addNodes(List<Node> nodes) { lock.lock(); try { Node newMaster = null; for (Node node : nodes) { if (newMaster == null) { newMaster = node; } else { if (newMaster.getCreateTime() > node.getCreateTime()) { newMaster = node; } } } addNode(newMaster); } finally { lock.unlock(); } }
public void addNodes(List<Node> nodes) { if (CollectionUtils.isEmpty(nodes)) { return; } // 只需要和当前节点相同的节点类型和组 List<Node> groupNodes = new ArrayList<Node>(); for (Node node : nodes) { if (isSameGroup(node)) { groupNodes.add(node); } } if (groupNodes.size() > 0) { appContext.getMasterElector().addNodes(groupNodes); } }
public void addNode(Node newNode) { lock.lock(); try { if (master == null) { master = newNode; notifyListener(); } else { if (master.getCreateTime() > newNode.getCreateTime()) { master = newNode; notifyListener(); } } } finally { lock.unlock(); } }
protected void initConfig() { String compiler = config.getParameter(ExtConfig.COMPILER); if (StringUtils.isNotEmpty(compiler)) { AbstractCompiler.setCompiler(compiler); } if (StringUtils.isEmpty(config.getIp())) { config.setIp(NetUtils.getLocalHost()); } if (StringUtils.isEmpty(config.getIdentity())) { JobNodeConfigFactory.buildIdentity(config); } NodeFactory.build(node, config); LOGGER.info("Current Node config :{}", config); appContext.setEventCenter(ServiceLoader.load(EventCenter.class, config)); appContext.setCommandBodyWrapper(new CommandBodyWrapper(config)); appContext.setMasterElector(new MasterElector(appContext)); appContext.getMasterElector().addMasterChangeListener(masterChangeListeners); appContext.setRegistryStatMonitor(new RegistryStatMonitor(appContext)); // 订阅的node管理 SubscribedNodeManager subscribedNodeManager = new SubscribedNodeManager(appContext); appContext.setSubscribedNodeManager(subscribedNodeManager); nodeChangeListeners.add(subscribedNodeManager); // 用于master选举的监听器 nodeChangeListeners.add(new MasterElectionListener(appContext)); // 监听自己节点变化(如,当前节点被禁用了) nodeChangeListeners.add(new SelfChangeListener(appContext)); setSpiConfig(); }
public void removeNodes(List<Node> nodes) { if (CollectionUtils.isEmpty(nodes)) { return; } // 只需要和当前节点相同的节点类型和组 List<Node> groupNodes = new ArrayList<Node>(); for (Node node : nodes) { if (isSameGroup(node)) { groupNodes.add(node); } } if (groupNodes.size() > 0) { appContext.getMasterElector().removeNode(groupNodes); } }
public RetryScheduler(String name, final AppContext appContext, String storePath) { this.name = name; this.appContext = appContext; FailStoreFactory failStoreFactory = ServiceLoader.load(FailStoreFactory.class, appContext.getConfig()); failStore = failStoreFactory.getFailStore(appContext.getConfig(), storePath); try { failStore.open(); } catch (FailStoreException e) { throw new RuntimeException(e); } EventSubscriber subscriber = new EventSubscriber(RetryScheduler.class.getSimpleName() .concat(appContext.getConfig().getIdentity()), new Observer() { @Override public void onObserved(EventInfo eventInfo) { Node masterNode = (Node) eventInfo.getParam("master"); if (masterNode != null && masterNode.getIdentity().equals(appContext.getConfig().getIdentity())) { startMasterCheck(); } else { stopMasterCheck(); } } }); appContext.getEventCenter().subscribe(subscriber, EcTopic.MASTER_CHANGED); if (appContext.getMasterElector().isCurrentMaster()) { startMasterCheck(); } }
protected void initConfig() { String compiler = config.getParameter(ExtConfig.COMPILER); if (StringUtils.isNotEmpty(compiler)) { AbstractCompiler.setCompiler(compiler); } if (StringUtils.isEmpty(config.getIp())) { config.setIp(NetUtils.getLocalHost()); } if (StringUtils.isEmpty(config.getIdentity())) { JobNodeConfigFactory.buildIdentity(config); } NodeFactory.build(node, config); LOGGER.info("Current Node config :{}", config); appContext.setEventCenter(ServiceLoader.load(EventCenter.class, config)); appContext.setCommandBodyWrapper(new CommandBodyWrapper(config)); appContext.setMasterElector(new MasterElector(appContext)); appContext.getMasterElector().addMasterChangeListener(masterChangeListeners); appContext.setRegistryStatMonitor(new RegistryStatMonitor(appContext)); // 订阅的node管理 SubscribedNodeManager subscribedNodeManager = new SubscribedNodeManager(appContext); appContext.setSubscribedNodeManager(subscribedNodeManager); nodeChangeListeners.add(subscribedNodeManager); // 用于master选举的监听器 nodeChangeListeners.add(new MasterElectionListener(appContext)); // 监听自己节点变化(如,当前节点被禁用了) nodeChangeListeners.add(new SelfChangeListener(appContext)); setSpiConfig(); }
public void removeNodes(List<Node> nodes) { if (CollectionUtils.isEmpty(nodes)) { return; } // 只需要和当前节点相同的节点类型和组 List<Node> groupNodes = new ArrayList<Node>(); for (Node node : nodes) { if (isSameGroup(node)) { groupNodes.add(node); } } if (groupNodes.size() > 0) { appContext.getMasterElector().removeNode(groupNodes); } }
public RetryScheduler(String name, final AppContext appContext, String storePath) { this.name = name; this.appContext = appContext; FailStoreFactory failStoreFactory = ServiceLoader.load(FailStoreFactory.class, appContext.getConfig()); failStore = failStoreFactory.getFailStore(appContext.getConfig(), storePath); try { failStore.open(); } catch (FailStoreException e) { throw new RuntimeException(e); } EventSubscriber subscriber = new EventSubscriber(RetryScheduler.class.getSimpleName() .concat(appContext.getConfig().getIdentity()), new Observer() { @Override public void onObserved(EventInfo eventInfo) { Node masterNode = (Node) eventInfo.getParam("master"); if (masterNode != null && masterNode.getIdentity().equals(appContext.getConfig().getIdentity())) { startMasterCheck(); } else { stopMasterCheck(); } } }); appContext.getEventCenter().subscribe(subscriber, EcTopic.MASTER_CHANGED); if (appContext.getMasterElector().isCurrentMaster()) { startMasterCheck(); } }
protected void initConfig() { String compiler = config.getParameter(ExtConfig.COMPILER); if (StringUtils.isNotEmpty(compiler)) { AbstractCompiler.setCompiler(compiler); } if (StringUtils.isEmpty(config.getIp())) { config.setIp(NetUtils.getLocalHost()); } if (StringUtils.isEmpty(config.getIdentity())) { JobNodeConfigFactory.buildIdentity(config); } NodeFactory.build(node, config); LOGGER.info("Current Node config :{}", config); appContext.setEventCenter(ServiceLoader.load(EventCenter.class, config)); appContext.setCommandBodyWrapper(new CommandBodyWrapper(config)); appContext.setMasterElector(new MasterElector(appContext)); appContext.getMasterElector().addMasterChangeListener(masterChangeListeners); appContext.setRegistryStatMonitor(new RegistryStatMonitor(appContext)); // 订阅的node管理 SubscribedNodeManager subscribedNodeManager = new SubscribedNodeManager(appContext); appContext.setSubscribedNodeManager(subscribedNodeManager); nodeChangeListeners.add(subscribedNodeManager); // 用于master选举的监听器 nodeChangeListeners.add(new MasterElectionListener(appContext)); // 监听自己节点变化(如,当前节点被禁用了) nodeChangeListeners.add(new SelfChangeListener(appContext)); setSpiConfig(); }
public void addNode(Node newNode) { lock.lock(); try { if (master == null) { master = newNode; notifyListener(); } else { if (master.getCreateTime() > newNode.getCreateTime()) { master = newNode; notifyListener(); } } } finally { lock.unlock(); } }
public void removeNodes(List<Node> nodes) { if (CollectionUtils.isEmpty(nodes)) { return; } // 只需要和当前节点相同的节点类型和组 List<Node> groupNodes = new ArrayList<Node>(); for (Node node : nodes) { if (isSameGroup(node)) { groupNodes.add(node); } } if (groupNodes.size() > 0) { appContext.getMasterElector().removeNode(groupNodes); } }
public void addNodes(List<Node> nodes) { if (CollectionUtils.isEmpty(nodes)) { return; } // 只需要和当前节点相同的节点类型和组 List<Node> groupNodes = new ArrayList<Node>(); for (Node node : nodes) { if (isSameGroup(node)) { groupNodes.add(node); } } if (groupNodes.size() > 0) { appContext.getMasterElector().addNodes(groupNodes); } }
public void addNodes(List<Node> nodes) { lock.lock(); try { Node newMaster = null; for (Node node : nodes) { if (newMaster == null) { newMaster = node; } else { if (newMaster.getCreateTime() > node.getCreateTime()) { newMaster = node; } } } addNode(newMaster); } finally { lock.unlock(); } }
public RetryScheduler(String name, final AppContext appContext, String storePath) { this.name = name; this.appContext = appContext; FailStoreFactory failStoreFactory = ServiceLoader.load(FailStoreFactory.class, appContext.getConfig()); failStore = failStoreFactory.getFailStore(appContext.getConfig(), storePath); try { failStore.open(); } catch (FailStoreException e) { throw new RuntimeException(e); } EventSubscriber subscriber = new EventSubscriber(RetryScheduler.class.getSimpleName() .concat(appContext.getConfig().getIdentity()), new Observer() { @Override public void onObserved(EventInfo eventInfo) { Node masterNode = (Node) eventInfo.getParam("master"); if (masterNode != null && masterNode.getIdentity().equals(appContext.getConfig().getIdentity())) { startMasterCheck(); } else { stopMasterCheck(); } } }); appContext.getEventCenter().subscribe(subscriber, EcTopic.MASTER_CHANGED); if (appContext.getMasterElector().isCurrentMaster()) { startMasterCheck(); } }
public void addNodes(List<Node> nodes) { if (CollectionUtils.isEmpty(nodes)) { return; } // 只需要和当前节点相同的节点类型和组 List<Node> groupNodes = new ArrayList<Node>(); for (Node node : nodes) { if (isSameGroup(node)) { groupNodes.add(node); } } if (groupNodes.size() > 0) { appContext.getMasterElector().addNodes(groupNodes); } }
public void addNodes(List<Node> nodes) { lock.lock(); try { Node newMaster = null; for (Node node : nodes) { if (newMaster == null) { newMaster = node; } else { if (newMaster.getCreateTime() > node.getCreateTime()) { newMaster = node; } } } addNode(newMaster); } finally { lock.unlock(); } }
public void addNode(Node newNode) { lock.lock(); try { if (master == null) { master = newNode; notifyListener(); } else { if (master.getCreateTime() > newNode.getCreateTime()) { master = newNode; notifyListener(); } } } finally { lock.unlock(); } }