1.修改了部分类名和代码结构。

This commit is contained in:
wusheng 2016-01-20 14:58:46 +08:00
parent 8d404e71b1
commit dbdb9ee43d
5 changed files with 70 additions and 55 deletions

View File

@ -4,15 +4,26 @@ import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.google.gson.reflect.TypeToken;
import java.util.HashMap;
import java.util.Map;
public class ChainNodeSummaryResult {
public class ChainNodeSpecificTimeWindowSummary {
private String traceLevelId;
private Map<String, SummaryResult> summerResultMap;
public static ChainNodeSpecificTimeWindowSummary newInstance(String traceLevelId){
ChainNodeSpecificTimeWindowSummary cns = new ChainNodeSpecificTimeWindowSummary();
cns.traceLevelId = traceLevelId;
return cns;
}
private ChainNodeSpecificTimeWindowSummary(){
summerResultMap = new HashMap<String, SummaryResult>();
}
public ChainNodeSummaryResult(String value) {
public ChainNodeSpecificTimeWindowSummary(String value) {
JsonObject jsonObject = new Gson().fromJson(value, JsonObject.class);
traceLevelId = jsonObject.get("traceLevelId").getAsString();
summerResultMap = new Gson().fromJson(jsonObject.get("summerResultMap").getAsString(),

View File

@ -0,0 +1,45 @@
package com.ai.cloud.skywalking.analysis.model;
import com.ai.cloud.skywalking.analysis.util.HBaseUtil;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
public class ChainSpecificTimeWindowSummary {
private Map<String, ChainNodeSpecificTimeWindowSummary> chainNodeSummaryResultMap;
public ChainSpecificTimeWindowSummary() {
chainNodeSummaryResultMap = new HashMap<String, ChainNodeSpecificTimeWindowSummary>();
}
public static ChainSpecificTimeWindowSummary load(String cid_time) {
ChainSpecificTimeWindowSummary result = null;
try {
result = HBaseUtil.selectChainSummaryResult(cid_time);
} catch (IOException e) {
e.printStackTrace();
}
if (result == null) {
result = new ChainSpecificTimeWindowSummary();
}
return result;
}
public void summaryResult(ChainInfo chainInfo) {
for (ChainNode node : chainInfo.getNodes()) {
String tlid = node.getTraceLevelId();
ChainNodeSpecificTimeWindowSummary chainNodeSummaryResult = chainNodeSummaryResultMap.get(tlid);
if(chainNodeSummaryResult == null){
chainNodeSummaryResult = ChainNodeSpecificTimeWindowSummary.newInstance(tlid);
}
chainNodeSummaryResult.summary(node);
}
}
public void addNodeSummaryResult(ChainNodeSpecificTimeWindowSummary chainNodeSummaryResult) {
chainNodeSummaryResultMap.put(chainNodeSummaryResult.getTraceLevelId(), chainNodeSummaryResult);
}
}

View File

@ -1,41 +0,0 @@
package com.ai.cloud.skywalking.analysis.model;
import com.ai.cloud.skywalking.analysis.util.HBaseUtil;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
public class ChainSummaryResult {
private Map<String, ChainNodeSummaryResult> chainNodeSummaryResultMap;
public ChainSummaryResult() {
chainNodeSummaryResultMap = new HashMap<String, ChainNodeSummaryResult>();
}
public static ChainSummaryResult load(String id) {
ChainSummaryResult result = null;
try {
result = HBaseUtil.selectChainSummaryResult(id);
} catch (IOException e) {
e.printStackTrace();
}
if (result == null) {
result = new ChainSummaryResult();
}
return result;
}
public void summaryResult(ChainInfo chainInfo) {
for (ChainNode node : chainInfo.getNodes()) {
ChainNodeSummaryResult chainNodeSummaryResult = chainNodeSummaryResultMap.get(node.getTraceLevelId());
chainNodeSummaryResult.summary(node);
}
}
public void addNodeSummaryResult(ChainNodeSummaryResult chainNodeSummaryResult) {
chainNodeSummaryResultMap.put(chainNodeSummaryResult.getTraceLevelId(), chainNodeSummaryResult);
}
}

View File

@ -4,20 +4,20 @@ import java.util.Map;
public class Summary {
private Map<String, ChainSummaryResult> summaryResultMap;
private Map<String, ChainSpecificTimeWindowSummary> summaryResultMap;
public void summary(ChainInfo chainInfo) {
String key = generateKey(chainInfo);
ChainSummaryResult chainSummaryResult = summaryResultMap.get(key);
String csk = generateChainSummaryKey(chainInfo);
ChainSpecificTimeWindowSummary chainSummaryResult = summaryResultMap.get(csk);
if (chainSummaryResult == null) {
chainSummaryResult = ChainSummaryResult.load(key);
summaryResultMap.put(key, chainSummaryResult);
chainSummaryResult = ChainSpecificTimeWindowSummary.load(csk);
summaryResultMap.put(csk, chainSummaryResult);
}
chainSummaryResult.summaryResult(chainInfo);
}
private String generateKey(ChainInfo chainInfo) {
private String generateChainSummaryKey(ChainInfo chainInfo) {
return chainInfo.getChainToken() + ":" + (chainInfo.getStartDate() / (1000 * 60 * 60));
}

View File

@ -2,9 +2,9 @@ package com.ai.cloud.skywalking.analysis.util;
import com.ai.cloud.skywalking.analysis.config.Config;
import com.ai.cloud.skywalking.analysis.model.ChainInfo;
import com.ai.cloud.skywalking.analysis.model.ChainNodeSummaryResult;
import com.ai.cloud.skywalking.analysis.model.ChainNodeSpecificTimeWindowSummary;
import com.ai.cloud.skywalking.analysis.model.ChainRelate;
import com.ai.cloud.skywalking.analysis.model.ChainSummaryResult;
import com.ai.cloud.skywalking.analysis.model.ChainSpecificTimeWindowSummary;
import com.ai.cloud.skywalking.protocol.Span;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.*;
@ -91,17 +91,17 @@ public class HBaseUtil {
return null;
}
public static ChainSummaryResult selectChainSummaryResult(String key) throws IOException {
ChainSummaryResult result = null;
public static ChainSpecificTimeWindowSummary selectChainSummaryResult(String key) throws IOException {
ChainSpecificTimeWindowSummary result = null;
//TODO 初始化表
Table table = connection.getTable(TableName.valueOf(Config.HBase.TABLE_CHAIN_INFO));
Get g = new Get(Bytes.toBytes(key));
Result r = table.get(g);
for (Cell cell : r.rawCells()) {
result = new ChainSummaryResult();
result = new ChainSpecificTimeWindowSummary();
if (cell.getValueArray().length > 0)
result.addNodeSummaryResult(new ChainNodeSummaryResult(Bytes.toString(cell.getValueArray(),
result.addNodeSummaryResult(new ChainNodeSpecificTimeWindowSummary(Bytes.toString(cell.getValueArray(),
cell.getValueOffset(), cell.getValueLength())));
}