@Override // @wjw_note: 删除此server下的所有zookeeper上的数据! public void UnRegisterScheduleServer(ScheduleServer server) throws Exception { // 1. 删除server String zkPath = this.pathServer; if (this.getZooKeeper().exists(zkPath, false) != null) { ZKTools.deleteTree(this.getZooKeeper(), zkPath + "/" + server.getUuid()); } // 2. 删除task zkPath = this.pathTask; if (this.getZooKeeper().exists(zkPath, false) == null) { return; } List<String> children = this.getZooKeeper().getChildren(zkPath, false); if (null == children || children.size() == 0) { return; } for (int i = 0; i < children.size(); i++) { String taskName = children.get(i); String taskPath = zkPath + "/" + taskName + "/" + server.getUuid(); if (this.getZooKeeper().exists(taskPath, false) != null) { ZKTools.deleteTree(this.getZooKeeper(), taskPath); } } }
void someTask() { try { server.Open(this); } catch (Throwable t) { Log.e("TestWebServer", t.getMessage()); } }
public void onDestroy() { try { server.Close(); } catch (Throwable t) { Log.e("TestWebServer", t.getMessage()); } super.onDestroy(); Log.d("TestWebServer", "onDestroy"); }
@Override // @wjw_note: 在Zookeeper上注册ScheduleServer public void registerScheduleServer(ScheduleServer server) throws Exception { if (server.isRegisted() == true) { throw new Exception(server.getUuid() + " 被重复注册"); } String realPath = null; // 此处必须增加UUID作为唯一性保障 StringBuilder id = new StringBuilder(); id.append(server.getIp()) .append("$") .append(UUID.randomUUID().toString().replaceAll("-", "").toUpperCase()); String zkServerPath = pathServer + "/" + id.toString() + "$"; realPath = this.getZooKeeper() .create(zkServerPath, null, this.zkManager.getAcl(), CreateMode.PERSISTENT_SEQUENTIAL); server.setUuid(realPath.substring(realPath.lastIndexOf("/") + 1)); Timestamp heartBeatTime = new Timestamp(getSystemTime()); server.setHeartBeatTime(heartBeatTime); String valueString = this.gson.toJson(server); this.getZooKeeper().setData(realPath, valueString.getBytes(), -1); server.setRegisted(true); }
public void startServer() { scheduleServer.startBooting(); scheduleServer.readSystemConfigFile(); scheduleServer.init(); scheduleServer.initializeContext(); scheduleServer.initializeListeners(); scheduleServer.createSystemObject(); }
public void stopServer() { scheduleServer.realeaseProcesses(); scheduleServer.destroy(); scheduleServer.destroySystemObjects(); scheduleServer.destroyListener(); scheduleServer.destroyContext(); scheduleServer.shutdown(); }
/** * x发送心跳信息 * * @param server * @throws Exception */ @Override public boolean refreshScheduleServer(ScheduleServer server) throws Exception { Timestamp heartBeatTime = new Timestamp(this.getSystemTime()); String zkPath = this.pathServer + "/" + server.getUuid(); if (this.getZooKeeper().exists(zkPath, false) == null) { // 数据可能被清除,先清除内存数据后,重新注册数据 server.setRegisted(false); return false; } Timestamp oldHeartBeatTime = server.getHeartBeatTime(); server.setHeartBeatTime(heartBeatTime); server.setVersion(server.getVersion() + 1); String valueString = this.gson.toJson(server); try { this.getZooKeeper().setData(zkPath, valueString.getBytes(), -1); } catch (Exception e) { // 恢复上次的心跳时间 server.setHeartBeatTime(oldHeartBeatTime); server.setVersion(server.getVersion() - 1); throw e; } return true; }