diff --git a/src/main/java/com/ycwl/basic/mapper/RenderWorkerMapper.java b/src/main/java/com/ycwl/basic/mapper/RenderWorkerMapper.java index 1347426..d27ea7a 100644 --- a/src/main/java/com/ycwl/basic/mapper/RenderWorkerMapper.java +++ b/src/main/java/com/ycwl/basic/mapper/RenderWorkerMapper.java @@ -21,4 +21,6 @@ public interface RenderWorkerMapper { int updateStatus(Long id); RenderWorkerEntity findByAccessKey(String accessKey); + + int updateHost(Long id, RenderWorkerEntity status); } diff --git a/src/main/java/com/ycwl/basic/repository/RenderWorkerRepository.java b/src/main/java/com/ycwl/basic/repository/RenderWorkerRepository.java index f4adbce..88099af 100644 --- a/src/main/java/com/ycwl/basic/repository/RenderWorkerRepository.java +++ b/src/main/java/com/ycwl/basic/repository/RenderWorkerRepository.java @@ -8,6 +8,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.Date; import java.util.concurrent.TimeUnit; @@ -52,6 +54,21 @@ public class RenderWorkerRepository { return; } status.setUpdateAt(new Date()); + RenderWorkerEntity worker = new RenderWorkerEntity(); + worker.setCpuCount(status.getCpu_count()); + worker.setCpuUsage(status.getCpu_usage()); + // 上报的是字节,存储的是兆 + worker.setMemoryAvailable(status.getMemory_available().divide(BigDecimal.valueOf(1024 * 1024), RoundingMode.CEILING)); + worker.setMemoryTotal(status.getMemory_total().divide(BigDecimal.valueOf(1024 * 1024), RoundingMode.CEILING)); + + worker.setPlatform(status.getPlatform()); + worker.setRuntimeVersion(status.getRuntime_version()); + worker.setSupportFeature(String.join(",", status.getSupport_feature())); + worker.setVersion(status.getVersion()); + worker.setUpdateAt(status.getUpdateAt()); + if (!redisTemplate.hasKey(key)) { + mapper.updateHost(id, worker); + } redisTemplate.opsForValue().set(key, JSONObject.toJSONString(status), 1, TimeUnit.HOURS); } diff --git a/src/main/java/com/ycwl/basic/service/task/impl/TaskTaskServiceImpl.java b/src/main/java/com/ycwl/basic/service/task/impl/TaskTaskServiceImpl.java index fa2d9cb..4a2b0f6 100644 --- a/src/main/java/com/ycwl/basic/service/task/impl/TaskTaskServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/task/impl/TaskTaskServiceImpl.java @@ -175,6 +175,7 @@ public class TaskTaskServiceImpl implements TaskService { taskList.forEach(task -> { taskMapper.assignToWorker(task.getId(), worker.getId()); videoTaskRepository.clearTaskCache(task.getId()); + repository.clearCache(worker.getId()); }); } finally { lock.unlock(); diff --git a/src/main/resources/mapper/RenderWorkerMapper.xml b/src/main/resources/mapper/RenderWorkerMapper.xml index eab6ad5..4e47bf2 100644 --- a/src/main/resources/mapper/RenderWorkerMapper.xml +++ b/src/main/resources/mapper/RenderWorkerMapper.xml @@ -65,6 +65,19 @@ END) where id = #{id} + + update render_worker + set platform = #{status.platform}, + runtime_version = #{status.runtimeVersion}, + version = #{status.version}, + cpu_count = #{status.cpuCount}, + cpu_usage = #{status.cpuUsage}, + memory_total = #{status.memoryTotal}, + memory_available = #{status.memoryAvailable}, + support_feature = #{status.supportFeature}, + update_at = #{status.updateAt} + where id = #{id} + delete from render_worker where id = #{id}