feat: optimize server info

This commit is contained in:
tjq 2023-01-27 19:16:54 +08:00
parent d9b1272802
commit 1c60f17b1b
3 changed files with 25 additions and 11 deletions

View File

@ -15,5 +15,7 @@ public class ServerInfo {
private String ip; private String ip;
private long bornTime;
private String version = "UNKNOWN"; private String version = "UNKNOWN";
} }

View File

@ -1,22 +1,20 @@
package tech.powerjob.server.remote.server.self; package tech.powerjob.server.remote.server.self;
import com.google.common.base.Stopwatch;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.info.BuildProperties; import org.springframework.boot.info.BuildProperties;
import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import tech.powerjob.common.exception.PowerJobException; import tech.powerjob.common.exception.PowerJobException;
import tech.powerjob.common.utils.CommonUtils; import tech.powerjob.common.utils.CommonUtils;
import tech.powerjob.common.utils.NetUtils; import tech.powerjob.common.utils.NetUtils;
import tech.powerjob.server.common.constants.PJThreadPool;
import tech.powerjob.server.common.module.ServerInfo; import tech.powerjob.server.common.module.ServerInfo;
import tech.powerjob.server.extension.LockService; import tech.powerjob.server.extension.LockService;
import tech.powerjob.server.persistence.remote.model.ServerInfoDO; import tech.powerjob.server.persistence.remote.model.ServerInfoDO;
import tech.powerjob.server.persistence.remote.repository.ServerInfoRepository; import tech.powerjob.server.persistence.remote.repository.ServerInfoRepository;
import com.google.common.base.Stopwatch;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.time.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -50,6 +48,7 @@ public class ServerInfoServiceImpl implements ServerInfoService {
String ip = NetUtils.getLocalHost(); String ip = NetUtils.getLocalHost();
serverInfo.setIp(ip); serverInfo.setIp(ip);
serverInfo.setBornTime(System.currentTimeMillis());
this.serverInfoRepository = serverInfoRepository; this.serverInfoRepository = serverInfoRepository;
Stopwatch sw = Stopwatch.createStarted(); Stopwatch sw = Stopwatch.createStarted();

View File

@ -11,6 +11,8 @@ import tech.powerjob.common.request.ServerDiscoveryRequest;
import tech.powerjob.common.response.ResultDTO; import tech.powerjob.common.response.ResultDTO;
import tech.powerjob.common.utils.CommonUtils; import tech.powerjob.common.utils.CommonUtils;
import tech.powerjob.common.utils.NetUtils; import tech.powerjob.common.utils.NetUtils;
import tech.powerjob.server.common.aware.ServerInfoAware;
import tech.powerjob.server.common.module.ServerInfo;
import tech.powerjob.server.persistence.remote.model.AppInfoDO; import tech.powerjob.server.persistence.remote.model.AppInfoDO;
import tech.powerjob.server.persistence.remote.repository.AppInfoRepository; import tech.powerjob.server.persistence.remote.repository.AppInfoRepository;
import tech.powerjob.server.remote.server.election.ServerElectionService; import tech.powerjob.server.remote.server.election.ServerElectionService;
@ -30,8 +32,9 @@ import java.util.TimeZone;
@RestController @RestController
@RequestMapping("/server") @RequestMapping("/server")
@RequiredArgsConstructor @RequiredArgsConstructor
public class ServerController { public class ServerController implements ServerInfoAware {
private ServerInfo serverInfo;
private final TransportService transportService; private final TransportService transportService;
private final ServerElectionService serverElectionService; private final ServerElectionService serverElectionService;
@ -56,15 +59,25 @@ public class ServerController {
public ResultDTO<JSONObject> ping(@RequestParam(required = false) boolean debug) { public ResultDTO<JSONObject> ping(@RequestParam(required = false) boolean debug) {
JSONObject res = new JSONObject(); JSONObject res = new JSONObject();
res.put("localHost", NetUtils.getLocalHost()); res.put("localHost", NetUtils.getLocalHost());
res.put("defaultAddress", transportService.defaultProtocol()); res.put("serverInfo", serverInfo);
res.put("serverTime", CommonUtils.formatTime(System.currentTimeMillis())); res.put("serverTime", CommonUtils.formatTime(System.currentTimeMillis()));
res.put("serverTimeTs", System.currentTimeMillis());
res.put("serverTimeZone", TimeZone.getDefault().getDisplayName()); res.put("serverTimeZone", TimeZone.getDefault().getDisplayName());
res.put("appIds", workerClusterQueryService.getAppId2ClusterStatus().keySet()); res.put("appIds", workerClusterQueryService.getAppId2ClusterStatus().keySet());
if (debug) { if (debug) {
res.put("appId2ClusterInfo", JSON.parseObject(JSON.toJSONString(workerClusterQueryService.getAppId2ClusterStatus()))); res.put("appId2ClusterInfo", JSON.parseObject(JSON.toJSONString(workerClusterQueryService.getAppId2ClusterStatus())));
} }
try {
res.put("defaultAddress", JSONObject.toJSON(transportService.defaultProtocol()));
} catch (Exception ignore) {
}
return ResultDTO.success(res); return ResultDTO.success(res);
} }
@Override
public void setServerInfo(ServerInfo serverInfo) {
this.serverInfo = serverInfo;
}
} }