[Optimize]Overview页面的TopN查询ES流程优化(#823)

1、复用线程池,同时支持线程池的线程数可配置;
2、优化查询TopN指标时,可能会出现重复查询的问题;
3、处理代码扫描(SonarLint)反馈的问题;
This commit is contained in:
zengqiao
2022-12-09 14:34:58 +08:00
committed by EricZeng
parent c4fb18a73c
commit b2f0f69365
11 changed files with 398 additions and 420 deletions

View File

@@ -38,40 +38,41 @@ public abstract class BaseMetricService extends BaseKafkaVersionControlService {
protected abstract void initRegisterVCHandler();
protected <T> List<MetricMultiLinesVO> metricMap2VO(Long clusterId,
Map<String/*metric*/, Map<T, List<MetricPointVO>>> map){
List<MetricMultiLinesVO> multiLinesVOS = new ArrayList<>();
if (map == null || map.isEmpty()) {
protected <T> List<MetricMultiLinesVO> metricMap2VO(Long clusterId, Map<String/*metric*/, Map<T, List<MetricPointVO>>> metricsMap ){
List<MetricMultiLinesVO> lineVOList = new ArrayList<>();
if (metricsMap == null || metricsMap.isEmpty()) {
// 如果为空,则直接返回
return multiLinesVOS;
return lineVOList;
}
for(String metric : map.keySet()){
for(Map.Entry<String/*metric*/, Map<T, List<MetricPointVO>>> entry : metricsMap.entrySet()){
try {
MetricMultiLinesVO multiLinesVO = new MetricMultiLinesVO();
multiLinesVO.setMetricName(metric);
multiLinesVO.setMetricName(entry.getKey());
List<MetricLineVO> metricLines = new ArrayList<>();
Map<T, List<MetricPointVO>> metricPointMap = map.get(metric);
if(null == metricPointMap || metricPointMap.isEmpty()){continue;}
for(Map.Entry<T, List<MetricPointVO>> entry : metricPointMap.entrySet()){
MetricLineVO metricLineVO = new MetricLineVO();
metricLineVO.setName(entry.getKey().toString());
metricLineVO.setMetricName(metric);
metricLineVO.setMetricPoints(entry.getValue());
metricLines.add(metricLineVO);
if(null == entry.getValue() || entry.getValue().isEmpty()){
continue;
}
List<MetricLineVO> metricLines = new ArrayList<>();
entry.getValue().entrySet().forEach(resNameAndMetricsEntry -> {
MetricLineVO metricLineVO = new MetricLineVO();
metricLineVO.setName(resNameAndMetricsEntry.getKey().toString());
metricLineVO.setMetricName(entry.getKey());
metricLineVO.setMetricPoints(resNameAndMetricsEntry.getValue());
metricLines.add(metricLineVO);
});
multiLinesVO.setMetricLines(metricLines);
multiLinesVOS.add(multiLinesVO);
}catch (Exception e){
LOGGER.error("method=metricMap2VO||cluster={}||msg=exception!", clusterId, e);
lineVOList.add(multiLinesVO);
} catch (Exception e){
LOGGER.error("method=metricMap2VO||clusterId={}||msg=exception!", clusterId, e);
}
}
return multiLinesVOS;
return lineVOList;
}
/**