Search in sources :

Example 1 with ThroughputStatDO

use of com.alibaba.otter.manager.biz.statistics.throughput.dal.dataobject.ThroughputStatDO in project otter by alibaba.

the class ThroughputStatServiceImpl method listRealtimeThroughput.

/**
     * 3种时间间隔的统计信息
     */
public Map<AnalysisType, ThroughputInfo> listRealtimeThroughput(RealtimeThroughputCondition condition) {
    Assert.assertNotNull(condition);
    Map<AnalysisType, ThroughputInfo> throughputInfos = new HashMap<AnalysisType, ThroughputInfo>();
    TimelineThroughputCondition timelineCondition = new TimelineThroughputCondition();
    Date realtime = new Date(System.currentTimeMillis());
    timelineCondition.setPipelineId(condition.getPipelineId());
    timelineCondition.setType(condition.getType());
    timelineCondition.setStart(new Date(realtime.getTime() - condition.getMax() * 60 * 1000));
    timelineCondition.setEnd(realtime);
    List<ThroughputStatDO> throughputStatDOs = throughputDao.listTimelineThroughputStat(timelineCondition);
    for (AnalysisType analysisType : condition.getAnalysisType()) {
        ThroughputInfo throughputInfo = new ThroughputInfo();
        List<ThroughputStat> throughputStat = new ArrayList<ThroughputStat>();
        for (ThroughputStatDO throughputStatDO : throughputStatDOs) {
            if (realtime.getTime() - throughputStatDO.getEndTime().getTime() <= analysisType.getValue() * 60 * 1000) {
                throughputStat.add(throughputStatDOToModel(throughputStatDO));
            }
        }
        throughputInfo.setItems(throughputStat);
        throughputInfo.setSeconds(analysisType.getValue() * 60L);
        throughputInfos.put(analysisType, throughputInfo);
    }
    return throughputInfos;
}
Also used : AnalysisType(com.alibaba.otter.manager.biz.statistics.throughput.param.AnalysisType) TimelineThroughputCondition(com.alibaba.otter.manager.biz.statistics.throughput.param.TimelineThroughputCondition) ThroughputStatDO(com.alibaba.otter.manager.biz.statistics.throughput.dal.dataobject.ThroughputStatDO) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) ThroughputInfo(com.alibaba.otter.manager.biz.statistics.throughput.param.ThroughputInfo) ArrayList(java.util.ArrayList) ThroughputStat(com.alibaba.otter.shared.common.model.statistics.throughput.ThroughputStat) Date(java.util.Date)

Example 2 with ThroughputStatDO

use of com.alibaba.otter.manager.biz.statistics.throughput.dal.dataobject.ThroughputStatDO in project otter by alibaba.

the class ThroughputStatServiceImpl method findThroughputStatByPipelineId.

public ThroughputStat findThroughputStatByPipelineId(ThroughputCondition condition) {
    Assert.assertNotNull(condition);
    ThroughputStatDO throughputStatDO = throughputDao.findRealtimeThroughputStat(condition);
    ThroughputStat throughputStat = new ThroughputStat();
    if (throughputStatDO != null) {
        throughputStat = throughputStatDOToModel(throughputStatDO);
    }
    return throughputStat;
}
Also used : ThroughputStatDO(com.alibaba.otter.manager.biz.statistics.throughput.dal.dataobject.ThroughputStatDO) ThroughputStat(com.alibaba.otter.shared.common.model.statistics.throughput.ThroughputStat)

Example 3 with ThroughputStatDO

use of com.alibaba.otter.manager.biz.statistics.throughput.dal.dataobject.ThroughputStatDO in project otter by alibaba.

the class ThroughputStatServiceImpl method listTimelineThroughput.

/**
     * <pre>
     * 列出pipeLineId下,start-end时间段下的throughputStat 
     * 首先从数据库中取出这一段时间所以数据,该数据都是根据end_time倒排序的, 每隔1分钟将这些数据分组
     * </pre>
     */
public Map<Long, ThroughputInfo> listTimelineThroughput(TimelineThroughputCondition condition) {
    Assert.assertNotNull(condition);
    Map<Long, ThroughputInfo> throughputInfos = new LinkedHashMap<Long, ThroughputInfo>();
    List<ThroughputStatDO> throughputStatDOs = throughputDao.listTimelineThroughputStat(condition);
    int size = throughputStatDOs.size();
    int k = size - 1;
    for (Long i = condition.getStart().getTime(); i <= condition.getEnd().getTime(); i += 60 * 1000) {
        ThroughputInfo throughputInfo = new ThroughputInfo();
        List<ThroughputStat> throughputStat = new ArrayList<ThroughputStat>();
        // 取出每个时间点i以内的数据,k是一个游标,每次遍历时前面已经取过了的数据就不用再遍历了
        for (int j = k; j >= 0; --j) {
            if ((i - throughputStatDOs.get(j).getEndTime().getTime() <= 60 * 1000) && (i - throughputStatDOs.get(j).getEndTime().getTime() >= 0)) {
                throughputStat.add(throughputStatDOToModel(throughputStatDOs.get(j)));
                k = j - 1;
            } else // 如果不满足if条件,则后面的数据也不用再遍历
            {
                break;
            }
        }
        if (throughputStat.size() > 0) {
            throughputInfo.setItems(throughputStat);
            throughputInfo.setSeconds(1 * 60L);
            throughputInfos.put(i, throughputInfo);
        }
    }
    return throughputInfos;
}
Also used : ThroughputStatDO(com.alibaba.otter.manager.biz.statistics.throughput.dal.dataobject.ThroughputStatDO) ThroughputInfo(com.alibaba.otter.manager.biz.statistics.throughput.param.ThroughputInfo) ArrayList(java.util.ArrayList) ThroughputStat(com.alibaba.otter.shared.common.model.statistics.throughput.ThroughputStat) LinkedHashMap(java.util.LinkedHashMap)

Example 4 with ThroughputStatDO

use of com.alibaba.otter.manager.biz.statistics.throughput.dal.dataobject.ThroughputStatDO in project otter by alibaba.

the class ThroughputStatServiceImpl method listRealtimeThroughputByPipelineIds.

public List<ThroughputStat> listRealtimeThroughputByPipelineIds(List<Long> pipelineIds, int minute) {
    Assert.assertNotNull(pipelineIds);
    List<ThroughputStatDO> throughputStatDOs = throughputDao.listRealTimeThroughputStatByPipelineIds(pipelineIds, minute);
    List<ThroughputStat> infos = new ArrayList<ThroughputStat>();
    for (ThroughputStatDO throughputStatDO : throughputStatDOs) {
        infos.add(throughputStatDOToModel(throughputStatDO));
    }
    return infos;
}
Also used : ThroughputStatDO(com.alibaba.otter.manager.biz.statistics.throughput.dal.dataobject.ThroughputStatDO) ArrayList(java.util.ArrayList) ThroughputStat(com.alibaba.otter.shared.common.model.statistics.throughput.ThroughputStat)

Example 5 with ThroughputStatDO

use of com.alibaba.otter.manager.biz.statistics.throughput.dal.dataobject.ThroughputStatDO in project otter by alibaba.

the class ThroughputStatServiceImpl method throughputStatModelToDo.

/**
     * 用于Model对象转化为DO对象
     * 
     * @param throughputStat
     * @return throughputStatDO
     */
private ThroughputStatDO throughputStatModelToDo(ThroughputStat throughputStat) {
    ThroughputStatDO throughputStatDO = new ThroughputStatDO();
    throughputStatDO.setId(throughputStat.getId());
    throughputStatDO.setPipelineId(throughputStat.getPipelineId());
    throughputStatDO.setStartTime(throughputStat.getStartTime());
    throughputStatDO.setEndTime(throughputStat.getEndTime());
    throughputStatDO.setType(throughputStat.getType());
    throughputStatDO.setNumber(throughputStat.getNumber());
    throughputStatDO.setSize(throughputStat.getSize());
    throughputStatDO.setGmtCreate(throughputStat.getGmtCreate());
    throughputStatDO.setGmtModified(throughputStat.getGmtModified());
    return throughputStatDO;
}
Also used : ThroughputStatDO(com.alibaba.otter.manager.biz.statistics.throughput.dal.dataobject.ThroughputStatDO)

Aggregations

ThroughputStatDO (com.alibaba.otter.manager.biz.statistics.throughput.dal.dataobject.ThroughputStatDO)5 ThroughputStat (com.alibaba.otter.shared.common.model.statistics.throughput.ThroughputStat)4 ArrayList (java.util.ArrayList)3 ThroughputInfo (com.alibaba.otter.manager.biz.statistics.throughput.param.ThroughputInfo)2 LinkedHashMap (java.util.LinkedHashMap)2 AnalysisType (com.alibaba.otter.manager.biz.statistics.throughput.param.AnalysisType)1 TimelineThroughputCondition (com.alibaba.otter.manager.biz.statistics.throughput.param.TimelineThroughputCondition)1 Date (java.util.Date)1 HashMap (java.util.HashMap)1