mirror of
https://github.com/PowerJob/PowerJob.git
synced 2025-07-17 00:00:04 +08:00
style: optimize server's package
This commit is contained in:
parent
dcb6b5ee24
commit
51d12dc6b4
@ -16,6 +16,7 @@
|
|||||||
<module>powerjob-server-remote</module>
|
<module>powerjob-server-remote</module>
|
||||||
<module>powerjob-server-persistence</module>
|
<module>powerjob-server-persistence</module>
|
||||||
<module>powerjob-server-starter</module>
|
<module>powerjob-server-starter</module>
|
||||||
|
<module>powerjob-server-extension</module>
|
||||||
</modules>
|
</modules>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
|
|
||||||
@ -47,12 +48,17 @@
|
|||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>tech.powerjob</groupId>
|
<groupId>tech.powerjob</groupId>
|
||||||
<artifactId>powerjob-server-remote</artifactId>
|
<artifactId>powerjob-server-common</artifactId>
|
||||||
<version>1.0.0</version>
|
<version>1.0.0</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>tech.powerjob</groupId>
|
<groupId>tech.powerjob</groupId>
|
||||||
<artifactId>powerjob-server-common</artifactId>
|
<artifactId>powerjob-server-extension</artifactId>
|
||||||
|
<version>1.0.0</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>tech.powerjob</groupId>
|
||||||
|
<artifactId>powerjob-server-remote</artifactId>
|
||||||
<version>1.0.0</version>
|
<version>1.0.0</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package tech.powerjob.server.service.alarm;
|
package tech.powerjob.server.common.module;
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.github.kfcfans.powerjob.common.OmsConstant;
|
import com.github.kfcfans.powerjob.common.OmsConstant;
|
@ -1,4 +1,4 @@
|
|||||||
package tech.powerjob.server.remote.worker.cluster;
|
package tech.powerjob.server.common.module;
|
||||||
|
|
||||||
import com.github.kfcfans.powerjob.common.model.DeployedContainerInfo;
|
import com.github.kfcfans.powerjob.common.model.DeployedContainerInfo;
|
||||||
import com.github.kfcfans.powerjob.common.model.SystemMetrics;
|
import com.github.kfcfans.powerjob.common.model.SystemMetrics;
|
28
powerjob-server/powerjob-server-extension/pom.xml
Normal file
28
powerjob-server/powerjob-server-extension/pom.xml
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<parent>
|
||||||
|
<artifactId>powerjob-server</artifactId>
|
||||||
|
<groupId>com.github.kfcfans</groupId>
|
||||||
|
<version>3.4.6</version>
|
||||||
|
</parent>
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<groupId>tech.powerjob</groupId>
|
||||||
|
<artifactId>powerjob-server-extension</artifactId>
|
||||||
|
<version>1.0.0</version>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<maven.compiler.source>8</maven.compiler.source>
|
||||||
|
<maven.compiler.target>8</maven.compiler.target>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>tech.powerjob</groupId>
|
||||||
|
<artifactId>powerjob-server-persistence</artifactId>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
</project>
|
@ -0,0 +1,17 @@
|
|||||||
|
package tech.powerjob.server.extension;
|
||||||
|
|
||||||
|
import tech.powerjob.server.persistence.core.model.UserInfoDO;
|
||||||
|
import tech.powerjob.server.common.module.Alarm;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 报警接口
|
||||||
|
*
|
||||||
|
* @author tjq
|
||||||
|
* @since 2020/4/19
|
||||||
|
*/
|
||||||
|
public interface Alarmable {
|
||||||
|
|
||||||
|
void onFailed(Alarm alarm, List<UserInfoDO> targetUserList);
|
||||||
|
}
|
@ -1,7 +1,7 @@
|
|||||||
package tech.powerjob.server.extension;
|
package tech.powerjob.server.extension;
|
||||||
|
|
||||||
import tech.powerjob.server.persistence.core.model.JobInfoDO;
|
import tech.powerjob.server.persistence.core.model.JobInfoDO;
|
||||||
import tech.powerjob.server.remote.worker.cluster.WorkerInfo;
|
import tech.powerjob.server.common.module.WorkerInfo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* filter worker by system metrics or other info
|
* filter worker by system metrics or other info
|
@ -1,4 +1,4 @@
|
|||||||
package tech.powerjob.server.service.lock;
|
package tech.powerjob.server.extension.impl;
|
||||||
|
|
||||||
import com.github.kfcfans.powerjob.common.utils.CommonUtils;
|
import com.github.kfcfans.powerjob.common.utils.CommonUtils;
|
||||||
import com.github.kfcfans.powerjob.common.utils.NetUtils;
|
import com.github.kfcfans.powerjob.common.utils.NetUtils;
|
@ -1,13 +1,13 @@
|
|||||||
package tech.powerjob.server.service.alarm.impl;
|
package tech.powerjob.server.extension.impl.alram;
|
||||||
|
|
||||||
import com.github.kfcfans.powerjob.common.OmsConstant;
|
import com.github.kfcfans.powerjob.common.OmsConstant;
|
||||||
import com.github.kfcfans.powerjob.common.PowerJobException;
|
import com.github.kfcfans.powerjob.common.PowerJobException;
|
||||||
import com.github.kfcfans.powerjob.common.utils.NetUtils;
|
import com.github.kfcfans.powerjob.common.utils.NetUtils;
|
||||||
import tech.powerjob.server.common.PowerJobServerConfigKey;
|
import tech.powerjob.server.common.PowerJobServerConfigKey;
|
||||||
import tech.powerjob.server.common.SJ;
|
import tech.powerjob.server.common.SJ;
|
||||||
import tech.powerjob.server.common.utils.DingTalkUtils;
|
import tech.powerjob.server.extension.impl.alram.DingTalkUtils;
|
||||||
import tech.powerjob.server.persistence.core.model.UserInfoDO;
|
import tech.powerjob.server.persistence.core.model.UserInfoDO;
|
||||||
import tech.powerjob.server.service.alarm.Alarm;
|
import tech.powerjob.server.common.module.Alarm;
|
||||||
import tech.powerjob.server.extension.Alarmable;
|
import tech.powerjob.server.extension.Alarmable;
|
||||||
import com.google.common.cache.Cache;
|
import com.google.common.cache.Cache;
|
||||||
import com.google.common.cache.CacheBuilder;
|
import com.google.common.cache.CacheBuilder;
|
@ -1,4 +1,4 @@
|
|||||||
package tech.powerjob.server.common.utils;
|
package tech.powerjob.server.extension.impl.alram;
|
||||||
|
|
||||||
import com.dingtalk.api.DefaultDingTalkClient;
|
import com.dingtalk.api.DefaultDingTalkClient;
|
||||||
import com.dingtalk.api.DingTalkClient;
|
import com.dingtalk.api.DingTalkClient;
|
@ -1,7 +1,7 @@
|
|||||||
package tech.powerjob.server.service.alarm.impl;
|
package tech.powerjob.server.extension.impl.alram;
|
||||||
|
|
||||||
import tech.powerjob.server.persistence.core.model.UserInfoDO;
|
import tech.powerjob.server.persistence.core.model.UserInfoDO;
|
||||||
import tech.powerjob.server.service.alarm.Alarm;
|
import tech.powerjob.server.common.module.Alarm;
|
||||||
import tech.powerjob.server.extension.Alarmable;
|
import tech.powerjob.server.extension.Alarmable;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
@ -1,10 +1,10 @@
|
|||||||
package tech.powerjob.server.service.alarm.impl;
|
package tech.powerjob.server.extension.impl.alram;
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.github.kfcfans.powerjob.common.OmsConstant;
|
import com.github.kfcfans.powerjob.common.OmsConstant;
|
||||||
import com.github.kfcfans.powerjob.common.utils.HttpUtils;
|
import com.github.kfcfans.powerjob.common.utils.HttpUtils;
|
||||||
import tech.powerjob.server.persistence.core.model.UserInfoDO;
|
import tech.powerjob.server.persistence.core.model.UserInfoDO;
|
||||||
import tech.powerjob.server.service.alarm.Alarm;
|
import tech.powerjob.server.common.module.Alarm;
|
||||||
import tech.powerjob.server.extension.Alarmable;
|
import tech.powerjob.server.extension.Alarmable;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import okhttp3.MediaType;
|
import okhttp3.MediaType;
|
@ -1,9 +1,9 @@
|
|||||||
package tech.powerjob.server.remote.worker.cluster.filter;
|
package tech.powerjob.server.extension.impl.workerfilter;
|
||||||
|
|
||||||
import tech.powerjob.server.common.SJ;
|
import tech.powerjob.server.common.SJ;
|
||||||
import tech.powerjob.server.extension.WorkerFilter;
|
import tech.powerjob.server.extension.WorkerFilter;
|
||||||
import tech.powerjob.server.persistence.core.model.JobInfoDO;
|
import tech.powerjob.server.persistence.core.model.JobInfoDO;
|
||||||
import tech.powerjob.server.remote.worker.cluster.WorkerInfo;
|
import tech.powerjob.server.common.module.WorkerInfo;
|
||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
@ -1,8 +1,8 @@
|
|||||||
package tech.powerjob.server.remote.worker.cluster.filter;
|
package tech.powerjob.server.extension.impl.workerfilter;
|
||||||
|
|
||||||
import tech.powerjob.server.extension.WorkerFilter;
|
import tech.powerjob.server.extension.WorkerFilter;
|
||||||
import tech.powerjob.server.persistence.core.model.JobInfoDO;
|
import tech.powerjob.server.persistence.core.model.JobInfoDO;
|
||||||
import tech.powerjob.server.remote.worker.cluster.WorkerInfo;
|
import tech.powerjob.server.common.module.WorkerInfo;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
@ -1,9 +1,9 @@
|
|||||||
package tech.powerjob.server.remote.worker.cluster.filter;
|
package tech.powerjob.server.extension.impl.workerfilter;
|
||||||
|
|
||||||
import com.github.kfcfans.powerjob.common.model.SystemMetrics;
|
import com.github.kfcfans.powerjob.common.model.SystemMetrics;
|
||||||
import tech.powerjob.server.extension.WorkerFilter;
|
import tech.powerjob.server.extension.WorkerFilter;
|
||||||
import tech.powerjob.server.persistence.core.model.JobInfoDO;
|
import tech.powerjob.server.persistence.core.model.JobInfoDO;
|
||||||
import tech.powerjob.server.remote.worker.cluster.WorkerInfo;
|
import tech.powerjob.server.common.module.WorkerInfo;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
@ -23,6 +23,10 @@
|
|||||||
<groupId>tech.powerjob</groupId>
|
<groupId>tech.powerjob</groupId>
|
||||||
<artifactId>powerjob-server-common</artifactId>
|
<artifactId>powerjob-server-common</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>tech.powerjob</groupId>
|
||||||
|
<artifactId>powerjob-server-extension</artifactId>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>tech.powerjob</groupId>
|
<groupId>tech.powerjob</groupId>
|
||||||
<artifactId>powerjob-server-persistence</artifactId>
|
<artifactId>powerjob-server-persistence</artifactId>
|
||||||
|
@ -19,6 +19,10 @@
|
|||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>tech.powerjob</groupId>
|
||||||
|
<artifactId>powerjob-server-extension</artifactId>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>tech.powerjob</groupId>
|
<groupId>tech.powerjob</groupId>
|
||||||
<artifactId>powerjob-server-remote</artifactId>
|
<artifactId>powerjob-server-remote</artifactId>
|
||||||
|
@ -1,24 +0,0 @@
|
|||||||
package tech.powerjob.server.extension;
|
|
||||||
|
|
||||||
import tech.powerjob.server.persistence.core.model.UserInfoDO;
|
|
||||||
import tech.powerjob.server.service.alarm.Alarm;
|
|
||||||
import tech.powerjob.server.service.alarm.AlarmCenter;
|
|
||||||
import org.springframework.beans.factory.InitializingBean;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 报警接口
|
|
||||||
*
|
|
||||||
* @author tjq
|
|
||||||
* @since 2020/4/19
|
|
||||||
*/
|
|
||||||
public interface Alarmable extends InitializingBean {
|
|
||||||
|
|
||||||
void onFailed(Alarm alarm, List<UserInfoDO> targetUserList);
|
|
||||||
|
|
||||||
@Override
|
|
||||||
default void afterPropertiesSet() throws Exception {
|
|
||||||
AlarmCenter.register(this);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,12 +0,0 @@
|
|||||||
package tech.powerjob.server.extension;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 调度服务器选举服务,默认实现为先到先得,可自行接入 Zookeeper 等实现"负载均衡"策略
|
|
||||||
*
|
|
||||||
* @author tjq
|
|
||||||
* @since 2021/2/9
|
|
||||||
*/
|
|
||||||
public interface ServerElectionService {
|
|
||||||
|
|
||||||
String elect(Long appId, String protocol, String currentServer);
|
|
||||||
}
|
|
@ -8,7 +8,7 @@ import tech.powerjob.server.persistence.core.model.JobInfoDO;
|
|||||||
import tech.powerjob.server.persistence.core.repository.InstanceInfoRepository;
|
import tech.powerjob.server.persistence.core.repository.InstanceInfoRepository;
|
||||||
import tech.powerjob.server.remote.transport.TransportService;
|
import tech.powerjob.server.remote.transport.TransportService;
|
||||||
import tech.powerjob.server.remote.worker.cluster.WorkerClusterQueryService;
|
import tech.powerjob.server.remote.worker.cluster.WorkerClusterQueryService;
|
||||||
import tech.powerjob.server.remote.worker.cluster.WorkerInfo;
|
import tech.powerjob.server.common.module.WorkerInfo;
|
||||||
import tech.powerjob.server.service.instance.InstanceManager;
|
import tech.powerjob.server.service.instance.InstanceManager;
|
||||||
import tech.powerjob.server.service.instance.InstanceMetadataService;
|
import tech.powerjob.server.service.instance.InstanceMetadataService;
|
||||||
import tech.powerjob.server.service.lock.local.UseSegmentLock;
|
import tech.powerjob.server.service.lock.local.UseSegmentLock;
|
||||||
|
@ -8,7 +8,6 @@ import com.github.kfcfans.powerjob.common.Protocol;
|
|||||||
import com.github.kfcfans.powerjob.common.response.AskResponse;
|
import com.github.kfcfans.powerjob.common.response.AskResponse;
|
||||||
import com.github.kfcfans.powerjob.common.utils.JsonUtils;
|
import com.github.kfcfans.powerjob.common.utils.JsonUtils;
|
||||||
import tech.powerjob.server.extension.LockService;
|
import tech.powerjob.server.extension.LockService;
|
||||||
import tech.powerjob.server.extension.ServerElectionService;
|
|
||||||
import tech.powerjob.server.persistence.core.model.AppInfoDO;
|
import tech.powerjob.server.persistence.core.model.AppInfoDO;
|
||||||
import tech.powerjob.server.persistence.core.repository.AppInfoRepository;
|
import tech.powerjob.server.persistence.core.repository.AppInfoRepository;
|
||||||
import tech.powerjob.server.remote.transport.TransportService;
|
import tech.powerjob.server.remote.transport.TransportService;
|
||||||
@ -36,7 +35,7 @@ import java.util.concurrent.TimeUnit;
|
|||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Service
|
@Service
|
||||||
public class DefaultServerElectionService implements ServerElectionService {
|
public class ServerElectionService {
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private LockService lockService;
|
private LockService lockService;
|
||||||
@ -52,7 +51,6 @@ public class DefaultServerElectionService implements ServerElectionService {
|
|||||||
private static final long PING_TIMEOUT_MS = 1000;
|
private static final long PING_TIMEOUT_MS = 1000;
|
||||||
private static final String SERVER_ELECT_LOCK = "server_elect_%d";
|
private static final String SERVER_ELECT_LOCK = "server_elect_%d";
|
||||||
|
|
||||||
@Override
|
|
||||||
public String elect(Long appId, String protocol, String currentServer) {
|
public String elect(Long appId, String protocol, String currentServer) {
|
||||||
if (!accurate()) {
|
if (!accurate()) {
|
||||||
// 如果是本机,就不需要查数据库那么复杂的操作了,直接返回成功
|
// 如果是本机,就不需要查数据库那么复杂的操作了,直接返回成功
|
@ -6,6 +6,7 @@ import com.google.common.collect.Lists;
|
|||||||
import com.google.common.collect.Maps;
|
import com.google.common.collect.Maps;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
|
import tech.powerjob.server.common.module.WorkerInfo;
|
||||||
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package tech.powerjob.server.remote.worker.cluster;
|
package tech.powerjob.server.remote.worker.cluster;
|
||||||
|
|
||||||
import com.github.kfcfans.powerjob.common.model.DeployedContainerInfo;
|
import com.github.kfcfans.powerjob.common.model.DeployedContainerInfo;
|
||||||
|
import tech.powerjob.server.common.module.WorkerInfo;
|
||||||
import tech.powerjob.server.extension.WorkerFilter;
|
import tech.powerjob.server.extension.WorkerFilter;
|
||||||
import tech.powerjob.server.persistence.core.model.JobInfoDO;
|
import tech.powerjob.server.persistence.core.model.JobInfoDO;
|
||||||
import tech.powerjob.server.remote.server.redirector.DesignateServer;
|
import tech.powerjob.server.remote.server.redirector.DesignateServer;
|
||||||
|
@ -2,7 +2,7 @@ package tech.powerjob.server.remote.worker.handler;
|
|||||||
|
|
||||||
import com.github.kfcfans.powerjob.common.InstanceStatus;
|
import com.github.kfcfans.powerjob.common.InstanceStatus;
|
||||||
import tech.powerjob.server.remote.worker.cluster.WorkerClusterQueryService;
|
import tech.powerjob.server.remote.worker.cluster.WorkerClusterQueryService;
|
||||||
import tech.powerjob.server.remote.worker.cluster.WorkerInfo;
|
import tech.powerjob.server.common.module.WorkerInfo;
|
||||||
import com.github.kfcfans.powerjob.common.request.*;
|
import com.github.kfcfans.powerjob.common.request.*;
|
||||||
import com.github.kfcfans.powerjob.common.response.AskResponse;
|
import com.github.kfcfans.powerjob.common.response.AskResponse;
|
||||||
import com.github.kfcfans.powerjob.common.utils.JsonUtils;
|
import com.github.kfcfans.powerjob.common.utils.JsonUtils;
|
||||||
|
@ -19,7 +19,7 @@ import tech.powerjob.server.persistence.core.repository.ContainerInfoRepository;
|
|||||||
import tech.powerjob.server.persistence.mongodb.GridFsManager;
|
import tech.powerjob.server.persistence.mongodb.GridFsManager;
|
||||||
import tech.powerjob.server.remote.transport.starter.AkkaStarter;
|
import tech.powerjob.server.remote.transport.starter.AkkaStarter;
|
||||||
import tech.powerjob.server.remote.worker.cluster.WorkerClusterQueryService;
|
import tech.powerjob.server.remote.worker.cluster.WorkerClusterQueryService;
|
||||||
import tech.powerjob.server.remote.worker.cluster.WorkerInfo;
|
import tech.powerjob.server.common.module.WorkerInfo;
|
||||||
import tech.powerjob.server.web.request.SaveContainerInfoRequest;
|
import tech.powerjob.server.web.request.SaveContainerInfoRequest;
|
||||||
import com.google.common.collect.ArrayListMultimap;
|
import com.google.common.collect.ArrayListMultimap;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
package tech.powerjob.server.service.alarm;
|
package tech.powerjob.server.service.alarm;
|
||||||
|
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
import tech.powerjob.server.common.module.Alarm;
|
||||||
import tech.powerjob.server.extension.Alarmable;
|
import tech.powerjob.server.extension.Alarmable;
|
||||||
import tech.powerjob.server.persistence.core.model.UserInfoDO;
|
import tech.powerjob.server.persistence.core.model.UserInfoDO;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
@ -17,20 +20,25 @@ import java.util.concurrent.*;
|
|||||||
* @since 2020/4/19
|
* @since 2020/4/19
|
||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
|
@Component
|
||||||
public class AlarmCenter {
|
public class AlarmCenter {
|
||||||
|
|
||||||
private static final ExecutorService POOL;
|
private final ExecutorService POOL;
|
||||||
private static final List<Alarmable> BEANS = Lists.newLinkedList();
|
private final List<Alarmable> BEANS = Lists.newLinkedList();
|
||||||
private static final int THREAD_KEEP_ALIVE_TIME_M = 5;
|
|
||||||
|
|
||||||
static {
|
@Autowired
|
||||||
|
public AlarmCenter(List<Alarmable> alarmables) {
|
||||||
int cores = Runtime.getRuntime().availableProcessors();
|
int cores = Runtime.getRuntime().availableProcessors();
|
||||||
ThreadFactory factory = new ThreadFactoryBuilder().setNameFormat("AlarmPool-%d").build();
|
ThreadFactory factory = new ThreadFactoryBuilder().setNameFormat("AlarmPool-%d").build();
|
||||||
POOL = new ThreadPoolExecutor(cores, cores, THREAD_KEEP_ALIVE_TIME_M, TimeUnit.MINUTES, Queues.newLinkedBlockingQueue(), factory);
|
POOL = new ThreadPoolExecutor(cores, cores, 5, TimeUnit.MINUTES, Queues.newLinkedBlockingQueue(), factory);
|
||||||
|
|
||||||
|
alarmables.forEach(bean -> {
|
||||||
|
BEANS.add(bean);
|
||||||
|
log.info("[AlarmCenter] bean(className={},obj={}) register to AlarmCenter successfully!", bean.getClass().getName(), bean);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void alarmFailed(Alarm alarm, List<UserInfoDO> targetUserList) {
|
||||||
public static void alarmFailed(Alarm alarm, List<UserInfoDO> targetUserList) {
|
|
||||||
POOL.execute(() -> BEANS.forEach(alarmable -> {
|
POOL.execute(() -> BEANS.forEach(alarmable -> {
|
||||||
try {
|
try {
|
||||||
alarmable.onFailed(alarm, targetUserList);
|
alarmable.onFailed(alarm, targetUserList);
|
||||||
@ -39,9 +47,4 @@ public class AlarmCenter {
|
|||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void register(Alarmable alarmable) {
|
|
||||||
BEANS.add(alarmable);
|
|
||||||
log.info("[AlarmCenter] bean(className={},obj={}) register to AlarmCenter successfully!", alarmable.getClass().getName(), alarmable);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package tech.powerjob.server.service.alarm;
|
package tech.powerjob.server.service.alarm;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import tech.powerjob.server.common.module.Alarm;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 任务执行失败告警对象
|
* 任务执行失败告警对象
|
||||||
|
@ -2,6 +2,7 @@ package tech.powerjob.server.service.alarm;
|
|||||||
|
|
||||||
import com.github.kfcfans.powerjob.common.model.PEWorkflowDAG;
|
import com.github.kfcfans.powerjob.common.model.PEWorkflowDAG;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import tech.powerjob.server.common.module.Alarm;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 工作流执行失败告警对象
|
* 工作流执行失败告警对象
|
||||||
|
@ -35,6 +35,8 @@ import java.util.concurrent.TimeUnit;
|
|||||||
@Service
|
@Service
|
||||||
public class InstanceManager {
|
public class InstanceManager {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private AlarmCenter alarmCenter;
|
||||||
@Resource
|
@Resource
|
||||||
private DispatchService dispatchService;
|
private DispatchService dispatchService;
|
||||||
@Resource
|
@Resource
|
||||||
@ -179,7 +181,7 @@ public class InstanceManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
List<UserInfoDO> userList = SpringUtils.getBean(UserService.class).fetchNotifyUserList(jobInfo.getNotifyUserIds());
|
List<UserInfoDO> userList = SpringUtils.getBean(UserService.class).fetchNotifyUserList(jobInfo.getNotifyUserIds());
|
||||||
AlarmCenter.alarmFailed(content, userList);
|
alarmCenter.alarmFailed(content, userList);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 主动移除缓存,减小内存占用
|
// 主动移除缓存,减小内存占用
|
||||||
|
@ -17,7 +17,7 @@ import tech.powerjob.server.remote.DispatchService;
|
|||||||
import tech.powerjob.server.remote.server.redirector.DesignateServer;
|
import tech.powerjob.server.remote.server.redirector.DesignateServer;
|
||||||
import tech.powerjob.server.remote.transport.TransportService;
|
import tech.powerjob.server.remote.transport.TransportService;
|
||||||
import tech.powerjob.server.remote.worker.cluster.WorkerClusterQueryService;
|
import tech.powerjob.server.remote.worker.cluster.WorkerClusterQueryService;
|
||||||
import tech.powerjob.server.remote.worker.cluster.WorkerInfo;
|
import tech.powerjob.server.common.module.WorkerInfo;
|
||||||
import tech.powerjob.server.service.id.IdGenerateService;
|
import tech.powerjob.server.service.id.IdGenerateService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
|
@ -44,6 +44,8 @@ import static tech.powerjob.server.common.utils.WorkflowDAGUtils.isNotAllowSkipW
|
|||||||
@SuppressWarnings("squid:S1192")
|
@SuppressWarnings("squid:S1192")
|
||||||
public class WorkflowInstanceManager {
|
public class WorkflowInstanceManager {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private AlarmCenter alarmCenter;
|
||||||
@Resource
|
@Resource
|
||||||
private InstanceService instanceService;
|
private InstanceService instanceService;
|
||||||
@Resource
|
@Resource
|
||||||
@ -453,7 +455,7 @@ public class WorkflowInstanceManager {
|
|||||||
content.setResult(result);
|
content.setResult(result);
|
||||||
|
|
||||||
List<UserInfoDO> userList = userService.fetchNotifyUserList(wfInfo.getNotifyUserIds());
|
List<UserInfoDO> userList = userService.fetchNotifyUserList(wfInfo.getNotifyUserIds());
|
||||||
AlarmCenter.alarmFailed(content, userList);
|
alarmCenter.alarmFailed(content, userList);
|
||||||
});
|
});
|
||||||
} catch (Exception ignore) {
|
} catch (Exception ignore) {
|
||||||
// ignore
|
// ignore
|
||||||
|
@ -5,9 +5,9 @@ import com.alibaba.fastjson.JSONObject;
|
|||||||
import com.github.kfcfans.powerjob.common.response.ResultDTO;
|
import com.github.kfcfans.powerjob.common.response.ResultDTO;
|
||||||
import com.github.kfcfans.powerjob.common.utils.CommonUtils;
|
import com.github.kfcfans.powerjob.common.utils.CommonUtils;
|
||||||
import com.github.kfcfans.powerjob.common.utils.NetUtils;
|
import com.github.kfcfans.powerjob.common.utils.NetUtils;
|
||||||
import tech.powerjob.server.extension.ServerElectionService;
|
|
||||||
import tech.powerjob.server.persistence.core.model.AppInfoDO;
|
import tech.powerjob.server.persistence.core.model.AppInfoDO;
|
||||||
import tech.powerjob.server.persistence.core.repository.AppInfoRepository;
|
import tech.powerjob.server.persistence.core.repository.AppInfoRepository;
|
||||||
|
import tech.powerjob.server.remote.server.election.ServerElectionService;
|
||||||
import tech.powerjob.server.remote.transport.TransportService;
|
import tech.powerjob.server.remote.transport.TransportService;
|
||||||
import tech.powerjob.server.remote.worker.cluster.WorkerClusterQueryService;
|
import tech.powerjob.server.remote.worker.cluster.WorkerClusterQueryService;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
@ -7,7 +7,7 @@ import tech.powerjob.server.common.constants.SwitchableStatus;
|
|||||||
import tech.powerjob.server.persistence.core.repository.InstanceInfoRepository;
|
import tech.powerjob.server.persistence.core.repository.InstanceInfoRepository;
|
||||||
import tech.powerjob.server.persistence.core.repository.JobInfoRepository;
|
import tech.powerjob.server.persistence.core.repository.JobInfoRepository;
|
||||||
import tech.powerjob.server.remote.worker.cluster.WorkerClusterQueryService;
|
import tech.powerjob.server.remote.worker.cluster.WorkerClusterQueryService;
|
||||||
import tech.powerjob.server.remote.worker.cluster.WorkerInfo;
|
import tech.powerjob.server.common.module.WorkerInfo;
|
||||||
import tech.powerjob.server.web.response.SystemOverviewVO;
|
import tech.powerjob.server.web.response.SystemOverviewVO;
|
||||||
import tech.powerjob.server.web.response.WorkerStatusVO;
|
import tech.powerjob.server.web.response.WorkerStatusVO;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package tech.powerjob.server.web.response;
|
package tech.powerjob.server.web.response;
|
||||||
|
|
||||||
import com.github.kfcfans.powerjob.common.model.SystemMetrics;
|
import com.github.kfcfans.powerjob.common.model.SystemMetrics;
|
||||||
import tech.powerjob.server.remote.worker.cluster.WorkerInfo;
|
import tech.powerjob.server.common.module.WorkerInfo;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package tech.powerjob.server.test;
|
package tech.powerjob.server.test;
|
||||||
|
|
||||||
import tech.powerjob.server.common.utils.DingTalkUtils;
|
import tech.powerjob.server.extension.impl.alram.DingTalkUtils;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user