From f3bdfbc6bfeeb3aa711c2b44a71695a89b31c1af Mon Sep 17 00:00:00 2001 From: gaoyutao Date: Thu, 11 Dec 2025 19:18:59 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E5=AE=9A=E4=BD=8D=E5=B9=B6=E8=A7=A3?= =?UTF-8?q?=E5=86=B3=E6=94=B6=E7=9B=8A=E6=9C=AA=E8=87=AA=E5=8A=A8=E7=94=9F?= =?UTF-8?q?=E6=88=90=E9=97=AE=E9=A2=98=E3=80=82=202=E3=80=81=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E6=9C=8D=E5=8A=A1=E5=99=A8=E5=88=97=E8=A1=A8=E7=AD=9B?= =?UTF-8?q?=E9=80=89=E6=9D=A1=E4=BB=B6=E6=9F=A5=E8=AF=A2=E9=80=9F=E5=BA=A6?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/RmMtrPolicyConfigServiceImpl.java | 48 ++++++--- .../EpsInitialTrafficDataServiceImpl.java | 2 + .../RmResourceRegistrationServiceImpl.java | 97 ++++++++++--------- .../src/main/resources/logback.xml | 2 +- .../mapper/system/AllInterfaceNameMapper.xml | 2 +- 5 files changed, 93 insertions(+), 58 deletions(-) diff --git a/tongran-modules/tongran-mtragent/src/main/java/com/tongran/mtragent/service/impl/RmMtrPolicyConfigServiceImpl.java b/tongran-modules/tongran-mtragent/src/main/java/com/tongran/mtragent/service/impl/RmMtrPolicyConfigServiceImpl.java index cd2c5a8..f35cb99 100644 --- a/tongran-modules/tongran-mtragent/src/main/java/com/tongran/mtragent/service/impl/RmMtrPolicyConfigServiceImpl.java +++ b/tongran-modules/tongran-mtragent/src/main/java/com/tongran/mtragent/service/impl/RmMtrPolicyConfigServiceImpl.java @@ -68,21 +68,45 @@ public class RmMtrPolicyConfigServiceImpl implements IRmMtrPolicyConfigService * 辅助方法,给ip集合赋值 * @param mtrPolicyConfig */ - public void setServerip(RmMtrPolicyConfig mtrPolicyConfig){ + public void setServerip(RmMtrPolicyConfig mtrPolicyConfig) { StringJoiner resultJoiner = new StringJoiner(";"); - String serverGroupStr = mtrPolicyConfig.getServerGroup().replace("\n",","); - RmNetworkInterfaceRemote query = new RmNetworkInterfaceRemote(); - query.setClientIds(serverGroupStr); - R> networkList = remoteRocketMqService.getNetworkInterfaceList(query, SecurityConstants.INNER); - if(networkList != null && networkList.getData() != null){ - List rmNetworkInterfaceRemoteList = networkList.getData(); - if(!rmNetworkInterfaceRemoteList.isEmpty()){ - for (RmNetworkInterfaceRemote rmNetworkInterfaceRemote : rmNetworkInterfaceRemoteList) { - String publicIp = rmNetworkInterfaceRemote.getPublicIp(); - resultJoiner.add(publicIp); + String serverGroupStr = mtrPolicyConfig.getServerGroup().replace("\n", ","); + String[] serverIds = serverGroupStr.split(","); + + // 分批次处理,每批200个 + int batchSize = 200; + for (int i = 0; i < serverIds.length; i += batchSize) { + int end = Math.min(i + batchSize, serverIds.length); + + // 构建当前批次的id字符串 + StringBuilder batchIds = new StringBuilder(); + for (int j = i; j < end; j++) { + if (batchIds.length() > 0) { + batchIds.append(","); } - mtrPolicyConfig.setServeripGroup(resultJoiner.toString()); + batchIds.append(serverIds[j].trim()); } + + // 查询当前批次 + RmNetworkInterfaceRemote query = new RmNetworkInterfaceRemote(); + query.setClientIds(batchIds.toString()); + R> networkList = remoteRocketMqService.getNetworkInterfaceList(query, SecurityConstants.INNER); + + // 处理结果 + if (networkList != null && networkList.getData() != null) { + for (RmNetworkInterfaceRemote rmNetworkInterfaceRemote : networkList.getData()) { + String publicIp = rmNetworkInterfaceRemote.getPublicIp(); + if (publicIp != null && !publicIp.trim().isEmpty()) { + resultJoiner.add(publicIp); + } + } + } + } + + // 设置最终结果 + String result = resultJoiner.toString(); + if (!result.isEmpty()) { + mtrPolicyConfig.setServeripGroup(result); } } /** diff --git a/tongran-modules/tongran-system/src/main/java/com/tongran/system/service/impl/EpsInitialTrafficDataServiceImpl.java b/tongran-modules/tongran-system/src/main/java/com/tongran/system/service/impl/EpsInitialTrafficDataServiceImpl.java index fd7288a..3735d86 100644 --- a/tongran-modules/tongran-system/src/main/java/com/tongran/system/service/impl/EpsInitialTrafficDataServiceImpl.java +++ b/tongran-modules/tongran-system/src/main/java/com/tongran/system/service/impl/EpsInitialTrafficDataServiceImpl.java @@ -289,6 +289,7 @@ public class EpsInitialTrafficDataServiceImpl implements EpsInitialTrafficDataSe log.error("计算{}的95带宽值失败,详情:{}", interfaceName.getClientId(), e.getMessage()); } }); + log.info("服务器95带宽值计算完成,总计{}台设备",snList.size()); } /** * 计算金山95带宽值/日 @@ -755,6 +756,7 @@ public class EpsInitialTrafficDataServiceImpl implements EpsInitialTrafficDataSe calculateSegment95(queryParam, dailyStartTime, dailyEndTime, calculationMode); } }else{ + queryParam.setBusinessId(null); calculateNormalDeviceBandwidth(queryParam, dailyStartTime, dailyEndTime, calculationMode); } } diff --git a/tongran-modules/tongran-system/src/main/java/com/tongran/system/service/impl/RmResourceRegistrationServiceImpl.java b/tongran-modules/tongran-system/src/main/java/com/tongran/system/service/impl/RmResourceRegistrationServiceImpl.java index 06a2190..2ecfa55 100644 --- a/tongran-modules/tongran-system/src/main/java/com/tongran/system/service/impl/RmResourceRegistrationServiceImpl.java +++ b/tongran-modules/tongran-system/src/main/java/com/tongran/system/service/impl/RmResourceRegistrationServiceImpl.java @@ -166,6 +166,7 @@ public class RmResourceRegistrationServiceImpl implements IRmResourceRegistratio @Override public List selectRmResourceRegistrationList(RmResourceRegistration rmResourceRegistration) { List allData = rmResourceRegistrationMapper.getRegistrationTableInfoList(rmResourceRegistration); + batchSetNetWorkMsg(allData); // 获取参数 String queryParam = rmResourceRegistration.getQueryParam(); @@ -189,7 +190,6 @@ public class RmResourceRegistrationServiceImpl implements IRmResourceRegistratio // 处理全部数据 for (RmResourceRegistration item : filteredList) { if (item.getClientId() != null) { - setNetWorkMsg(item); setBandwidthYestoday(item); } } @@ -287,61 +287,70 @@ public class RmResourceRegistrationServiceImpl implements IRmResourceRegistratio long startTime = System.currentTimeMillis(); - // 收集所有需要查询的clientId,用逗号分隔 - String clientIdsStr = pageList.stream() - .map(RmResourceRegistration::getClientId) - .filter(Objects::nonNull) - .distinct() - .collect(Collectors.joining(",")); + // 设置每批大小 + int batchSize = 200; + int totalBatches = (int) Math.ceil((double) pageList.size() / batchSize); - if (StringUtils.isBlank(clientIdsStr)) { - return; - } - log.debug("批量查询网络信息,clientIds: {}", clientIdsStr); + for (int batchNum = 0; batchNum < totalBatches; batchNum++) { + int fromIndex = batchNum * batchSize; + int toIndex = Math.min(fromIndex + batchSize, pageList.size()); + List batchList = pageList.subList(fromIndex, toIndex); - try { - // 使用批量查询接口 - RmNetworkInterfaceRemote queryParam = new RmNetworkInterfaceRemote(); - queryParam.setClientIds(clientIdsStr); // 这里是逗号分隔的字符串 - queryParam.setNewFlag(1); - R> result = remoteRocketMqService.getNetworkInterfaceList(queryParam, SecurityConstants.INNER); - - if (result == null || result.getData() == null || result.getData().isEmpty()) { - log.warn("批量查询网络信息返回为空,clientIds: {}", clientIdsStr); - // 回退到单条查询 -// fallbackSetNetworkInfo(pageList); - return; + // 收集当前批次需要查询的clientId + String clientIdsStr = batchList.stream() + .map(RmResourceRegistration::getClientId) + .filter(Objects::nonNull) + .distinct() + .collect(Collectors.joining(",")); + if (StringUtils.isBlank(clientIdsStr)) { + continue; } - List networkList = result.getData(); - // 按clientId分组 - Map> networkMap = networkList.stream() - .filter(Objects::nonNull) - .filter(item -> item.getClientId() != null) - .collect(Collectors.groupingBy(RmNetworkInterfaceRemote::getClientId)); + try { + // 使用批量查询接口 + RmNetworkInterfaceRemote queryParam = new RmNetworkInterfaceRemote(); + queryParam.setClientIds(clientIdsStr); + queryParam.setNewFlag(1); - // 批量设置 - for (RmResourceRegistration registration : pageList) { - String clientId = registration.getClientId(); - if (clientId != null) { - List clientNetworks = networkMap.get(clientId); - if (clientNetworks != null && !clientNetworks.isEmpty()) { - // 调用原有的setNetWorkMsg方法 - setNetWorkMsgWithNetworkList(registration, clientNetworks); + R> result = remoteRocketMqService.getNetworkInterfaceList(queryParam, SecurityConstants.INNER); + + if (result == null || result.getData() == null || result.getData().isEmpty()) { + continue; + } + + List networkList = result.getData(); + + // 按clientId分组 + Map> networkMap = networkList.stream() + .filter(Objects::nonNull) + .filter(item -> item.getClientId() != null) + .collect(Collectors.groupingBy(RmNetworkInterfaceRemote::getClientId)); + + // 批量设置当前批次 + for (RmResourceRegistration registration : batchList) { + String clientId = registration.getClientId(); + if (clientId != null) { + List clientNetworks = networkMap.get(clientId); + if (clientNetworks != null && !clientNetworks.isEmpty()) { + setNetWorkMsgWithNetworkList(registration, clientNetworks); + } } } + } catch (Exception e) { + log.error("第{}批查询网络信息异常", batchNum + 1, e); } - log.debug("批量处理网络信息完成,耗时: {}ms, 处理{}条记录, 返回{}条网络信息", - System.currentTimeMillis() - startTime, pageList.size(), networkList.size()); - - } catch (Exception e) { - log.error("批量查询网络信息异常", e); - // 回退到单条查询 -// fallbackSetNetworkInfo(pageList); + // 添加小延迟,避免对下游服务造成压力 + if (batchNum < totalBatches - 1) { + try { + Thread.sleep(10); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } + } } } /** diff --git a/tongran-modules/tongran-system/src/main/resources/logback.xml b/tongran-modules/tongran-system/src/main/resources/logback.xml index 1116191..59d2191 100644 --- a/tongran-modules/tongran-system/src/main/resources/logback.xml +++ b/tongran-modules/tongran-system/src/main/resources/logback.xml @@ -18,7 +18,7 @@ ${log.path}/debug.%d{yyyy-MM-dd}.log - 7 + 30 ${log.pattern} diff --git a/tongran-modules/tongran-system/src/main/resources/mapper/system/AllInterfaceNameMapper.xml b/tongran-modules/tongran-system/src/main/resources/mapper/system/AllInterfaceNameMapper.xml index e4f5485..66a6e48 100644 --- a/tongran-modules/tongran-system/src/main/resources/mapper/system/AllInterfaceNameMapper.xml +++ b/tongran-modules/tongran-system/src/main/resources/mapper/system/AllInterfaceNameMapper.xml @@ -166,7 +166,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - INSERT IGNORE INTO all_interface_name + INSERT INTO all_interface_name ( interface_name, client_id,