From 5e16ece3f603356371125f425c614a8f7a91ca3c Mon Sep 17 00:00:00 2001 From: ascrutae Date: Fri, 20 May 2016 19:53:17 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=BB=9F=E8=AE=A1=E7=BB=93?= =?UTF-8?q?=E6=9E=9C=E4=B8=8D=E5=87=86=E7=A1=AE=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chainbuild/entity/CallChainTreeNode.java | 482 +++++++++--------- .../analysis/chainbuild/util/HBaseUtil.java | 8 +- 2 files changed, 245 insertions(+), 245 deletions(-) diff --git a/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/chainbuild/entity/CallChainTreeNode.java b/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/chainbuild/entity/CallChainTreeNode.java index b2a737272..37820120a 100644 --- a/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/chainbuild/entity/CallChainTreeNode.java +++ b/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/chainbuild/entity/CallChainTreeNode.java @@ -21,269 +21,269 @@ import java.util.*; * @author wusheng */ public class CallChainTreeNode { - private Logger logger = LogManager.getLogger(CallChainTreeNode.class); + private Logger logger = LogManager.getLogger(CallChainTreeNode.class); - @Expose - private String traceLevelId; - @Expose - private String viewPointId; + @Expose + private String traceLevelId; + @Expose + private String viewPointId; - /** - * key: treeId + 小时 value: 当前树的当前小时范围内的,所有分钟和节点的统计数据 - */ - private Map chainNodeSpecificMinSummaryContainer; + /** + * key: treeId + 小时 value: 当前树的当前小时范围内的,所有分钟和节点的统计数据 + */ + private Map chainNodeSpecificMinSummaryContainer; - /** - * key: treeId + 天 value: 当前树的当前天范围内的,所有小时和节点的统计数据 - */ - private Map chainNodeSpecificHourSummaryContainer; + /** + * key: treeId + 天 value: 当前树的当前天范围内的,所有小时和节点的统计数据 + */ + private Map chainNodeSpecificHourSummaryContainer; - /** - * key: treeId + 月 value: 当前树的当前月范围内的,所有天和节点的统计数据 - */ - private Map chainNodeSpecificDaySummaryContainer; + /** + * key: treeId + 月 value: 当前树的当前月范围内的,所有天和节点的统计数据 + */ + private Map chainNodeSpecificDaySummaryContainer; - /** - * key: treeId + 年 value: 当前树的当前年范围内的,所有月份和节点的统计数据 - */ - private Map chainNodeSpecificMonthSummaryContainer; + /** + * key: treeId + 年 value: 当前树的当前年范围内的,所有月份和节点的统计数据 + */ + private Map chainNodeSpecificMonthSummaryContainer; - public CallChainTreeNode(ChainNode node) { - this.traceLevelId = node.getTraceLevelId(); - chainNodeSpecificMinSummaryContainer = new HashMap(); - chainNodeSpecificHourSummaryContainer = new HashMap(); - chainNodeSpecificDaySummaryContainer = new HashMap(); - chainNodeSpecificMonthSummaryContainer = new HashMap(); - this.viewPointId = node.getViewPoint(); - } + public CallChainTreeNode(ChainNode node) { + this.traceLevelId = node.getTraceLevelId(); + chainNodeSpecificMinSummaryContainer = new HashMap(); + chainNodeSpecificHourSummaryContainer = new HashMap(); + chainNodeSpecificDaySummaryContainer = new HashMap(); + chainNodeSpecificMonthSummaryContainer = new HashMap(); + this.viewPointId = node.getViewPoint(); + } - /** - * 针对节点、汇总类型,进行数据汇总。
- * 已汇总数据加载使用lazy load模式,只有此次汇总过程中触发的数据节点统计数量,才会被读取
- * - * @param treeId - * @param node - * @param summaryType - * @param summaryDate - * @throws IOException - */ - public void summary(String treeId, ChainNode node, SummaryType summaryType, - String summaryDate) throws IOException { - Calendar calendar = Calendar.getInstance(); - calendar.setTime(new Date(node.getStartDate())); - switch (summaryType) { - case HOUR: { - summaryMinResult(treeId, node, calendar, summaryDate); - break; - } - case DAY: { - summaryHourResult(treeId, node, calendar, summaryDate); - break; - } - case MONTH: { - summaryDayResult(treeId, node, calendar, summaryDate); - break; - } - case YEAR: { - summaryMonthResult(treeId, node, calendar, summaryDate); - break; - } - default: { - logger.error("unknown summary type :{}", summaryType); - break; - } - } + /** + * 针对节点、汇总类型,进行数据汇总。
+ * 已汇总数据加载使用lazy load模式,只有此次汇总过程中触发的数据节点统计数量,才会被读取
+ * + * @param treeId + * @param node + * @param summaryType + * @param summaryDate + * @throws IOException + */ + public void summary(String treeId, ChainNode node, SummaryType summaryType, + String summaryDate) throws IOException { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(new Date(node.getStartDate())); + switch (summaryType) { + case HOUR: { + summaryMinResult(treeId, node, calendar, summaryDate); + break; + } + case DAY: { + summaryHourResult(treeId, node, calendar, summaryDate); + break; + } + case MONTH: { + summaryDayResult(treeId, node, calendar, summaryDate); + break; + } + case YEAR: { + summaryMonthResult(treeId, node, calendar, summaryDate); + break; + } + default: { + logger.error("unknown summary type :{}", summaryType); + break; + } + } - } + } - private void summaryMonthResult(String treeId, ChainNode node, - Calendar calendar, String summaryDate) throws IOException { - String keyOfMonthSummaryTable = generateRowKey(treeId, summaryDate); - ChainNodeSpecificMonthSummary monthSummary = chainNodeSpecificMonthSummaryContainer - .get(keyOfMonthSummaryTable); - if (monthSummary == null) { - if (Config.AnalysisServer.IS_ACCUMULATE_MODE) { - monthSummary = HBaseUtil.loadSpecificMonthSummary( - keyOfMonthSummaryTable, getTreeNodeId()); - } else { - monthSummary = new ChainNodeSpecificMonthSummary(); - } - chainNodeSpecificMonthSummaryContainer.put(keyOfMonthSummaryTable, - monthSummary); - } - monthSummary.summary(String.valueOf(calendar.get(Calendar.MONTH) + 1), - node); - } + private void summaryMonthResult(String treeId, ChainNode node, + Calendar calendar, String summaryDate) throws IOException { + String keyOfMonthSummaryTable = generateRowKey(treeId, summaryDate); + ChainNodeSpecificMonthSummary monthSummary = chainNodeSpecificMonthSummaryContainer + .get(keyOfMonthSummaryTable); + if (monthSummary == null) { + if (Config.AnalysisServer.IS_ACCUMULATE_MODE) { + monthSummary = HBaseUtil.loadSpecificMonthSummary( + keyOfMonthSummaryTable, getTreeNodeId()); + } else { + monthSummary = new ChainNodeSpecificMonthSummary(); + } + chainNodeSpecificMonthSummaryContainer.put(keyOfMonthSummaryTable, + monthSummary); + } + monthSummary.summary(String.valueOf(calendar.get(Calendar.MONTH) + 1), + node); + } - private void summaryDayResult(String treeId, ChainNode node, - Calendar calendar, String summaryDate) throws IOException { - String keyOfDaySummaryTable = generateRowKey(treeId, summaryDate); - ChainNodeSpecificDaySummary daySummary = chainNodeSpecificDaySummaryContainer - .get(keyOfDaySummaryTable); - if (daySummary == null) { - if (Config.AnalysisServer.IS_ACCUMULATE_MODE) { - daySummary = HBaseUtil.loadSpecificDaySummary( - keyOfDaySummaryTable, getTreeNodeId()); - } else { - daySummary = new ChainNodeSpecificDaySummary(); - } - chainNodeSpecificDaySummaryContainer.put(keyOfDaySummaryTable, - daySummary); - } - daySummary.summary(String.valueOf(calendar.get(Calendar.DAY_OF_MONTH)), - node); - } + private void summaryDayResult(String treeId, ChainNode node, + Calendar calendar, String summaryDate) throws IOException { + String keyOfDaySummaryTable = generateRowKey(treeId, summaryDate); + ChainNodeSpecificDaySummary daySummary = chainNodeSpecificDaySummaryContainer + .get(keyOfDaySummaryTable); + if (daySummary == null) { + if (Config.AnalysisServer.IS_ACCUMULATE_MODE) { + daySummary = HBaseUtil.loadSpecificDaySummary( + keyOfDaySummaryTable, getTreeNodeId()); + } else { + daySummary = new ChainNodeSpecificDaySummary(); + } + chainNodeSpecificDaySummaryContainer.put(keyOfDaySummaryTable, + daySummary); + } + daySummary.summary(String.valueOf(calendar.get(Calendar.DAY_OF_MONTH)), + node); + } - private void summaryHourResult(String treeId, ChainNode node, - Calendar calendar, String summaryDate) throws IOException { - String keyOfHourSummaryTable = generateRowKey(treeId, summaryDate); - ChainNodeSpecificHourSummary hourSummary = chainNodeSpecificHourSummaryContainer - .get(keyOfHourSummaryTable); - if (hourSummary == null) { - if (Config.AnalysisServer.IS_ACCUMULATE_MODE) { - hourSummary = HBaseUtil.loadSpecificHourSummary( - keyOfHourSummaryTable, getTreeNodeId()); - } else { - hourSummary = new ChainNodeSpecificHourSummary(); - } - chainNodeSpecificHourSummaryContainer.put(keyOfHourSummaryTable, - hourSummary); - } - hourSummary.summary(String.valueOf(calendar.get(Calendar.HOUR)), node); - } + private void summaryHourResult(String treeId, ChainNode node, + Calendar calendar, String summaryDate) throws IOException { + String keyOfHourSummaryTable = generateRowKey(treeId, summaryDate); + ChainNodeSpecificHourSummary hourSummary = chainNodeSpecificHourSummaryContainer + .get(keyOfHourSummaryTable); + if (hourSummary == null) { + if (Config.AnalysisServer.IS_ACCUMULATE_MODE) { + hourSummary = HBaseUtil.loadSpecificHourSummary( + keyOfHourSummaryTable, getTreeNodeId()); + } else { + hourSummary = new ChainNodeSpecificHourSummary(); + } + chainNodeSpecificHourSummaryContainer.put(keyOfHourSummaryTable, + hourSummary); + } + hourSummary.summary(String.valueOf(calendar.get(Calendar.HOUR)), node); + } - /** - * 按分钟维度进行汇总
- * chainNodeContainer以treeId和时间(精确到分钟)为key,value为当前时间范围内的所有分钟的汇总数据 - */ - private void summaryMinResult(String treeId, ChainNode node, - Calendar calendar, String summaryDate) throws IOException { - String keyOfMinSummaryTable = generateRowKey(treeId, summaryDate); - ChainNodeSpecificMinSummary minSummary = chainNodeSpecificMinSummaryContainer - .get(keyOfMinSummaryTable); - if (minSummary == null) { - if (Config.AnalysisServer.IS_ACCUMULATE_MODE) { - minSummary = HBaseUtil.loadSpecificMinSummary( - keyOfMinSummaryTable, getTreeNodeId()); - } else { - minSummary = new ChainNodeSpecificMinSummary(); - } - chainNodeSpecificMinSummaryContainer.put(keyOfMinSummaryTable, - minSummary); - } - minSummary.summary(String.valueOf(calendar.get(Calendar.MINUTE)), node); - } + /** + * 按分钟维度进行汇总
+ * chainNodeContainer以treeId和时间(精确到分钟)为key,value为当前时间范围内的所有分钟的汇总数据 + */ + private void summaryMinResult(String treeId, ChainNode node, + Calendar calendar, String summaryDate) throws IOException { + String keyOfMinSummaryTable = generateRowKey(treeId, summaryDate); + ChainNodeSpecificMinSummary minSummary = chainNodeSpecificMinSummaryContainer + .get(keyOfMinSummaryTable); + if (minSummary == null) { + if (Config.AnalysisServer.IS_ACCUMULATE_MODE) { + minSummary = HBaseUtil.loadSpecificMinSummary( + keyOfMinSummaryTable, getTreeNodeId()); + } else { + minSummary = new ChainNodeSpecificMinSummary(); + } + chainNodeSpecificMinSummaryContainer.put(keyOfMinSummaryTable, + minSummary); + } + minSummary.summary(String.valueOf(calendar.get(Calendar.MINUTE)), node); + } - private String generateRowKey(String treeId, String dateKey) { - return treeId + "/" + dateKey; - } + private String generateRowKey(String treeId, String dateKey) { + return treeId + "/" + dateKey; + } - @Override - public String toString() { - return new GsonBuilder().excludeFieldsWithoutExposeAnnotation() - .create().toJson(this); - } + @Override + public String toString() { + return new GsonBuilder().excludeFieldsWithoutExposeAnnotation() + .create().toJson(this); + } - /** - * 存储入库时
- * hbase的key 为 treeId + 小时
- * 列族中,列为节点id,规则为:traceLevelId + "@" + viewPointId
- * 列的值,为当前节点按小时内各分钟的汇总
- * - * @throws IOException - * @throws InterruptedException - */ - public void saveSummaryResultToHBase(SummaryType summaryType) - throws IOException, InterruptedException { - switch (summaryType) { - case HOUR: { - batchSaveMinSummaryResult(); - break; - } - case DAY: { - batchSaveHourSummaryResult(); - break; - } - case MONTH: { - batchSaveDaySummaryResult(); - break; - } - case YEAR: { - batchSaveMonthSummaryResult(); - break; - } - default: { - logger.error("unknown summary type :{}", summaryType); - break; - } - } - } + /** + * 存储入库时
+ * hbase的key 为 treeId + 小时
+ * 列族中,列为节点id,规则为:traceLevelId + "@" + viewPointId
+ * 列的值,为当前节点按小时内各分钟的汇总
+ * + * @throws IOException + * @throws InterruptedException + */ + public void saveSummaryResultToHBase(SummaryType summaryType) + throws IOException, InterruptedException { + switch (summaryType) { + case HOUR: { + batchSaveMinSummaryResult(); + break; + } + case DAY: { + batchSaveHourSummaryResult(); + break; + } + case MONTH: { + batchSaveDaySummaryResult(); + break; + } + case YEAR: { + batchSaveMonthSummaryResult(); + break; + } + default: { + logger.error("unknown summary type :{}", summaryType); + break; + } + } + } - private void batchSaveMonthSummaryResult() throws IOException, - InterruptedException { - List puts = new ArrayList(); - for (Map.Entry entry : chainNodeSpecificMonthSummaryContainer - .entrySet()) { - Put put = new Put(entry.getKey().getBytes()); - put.addColumn( - HBaseTableMetaData.TABLE_CHAIN_ONE_MONTH_SUMMARY.COLUMN_FAMILY_NAME - .getBytes(), getTreeNodeId().getBytes(), entry - .getValue().toString().getBytes()); - puts.add(put); - } + private void batchSaveMonthSummaryResult() throws IOException, + InterruptedException { + List puts = new ArrayList(); + for (Map.Entry entry : chainNodeSpecificMonthSummaryContainer + .entrySet()) { + Put put = new Put(entry.getKey().getBytes()); + put.addColumn( + HBaseTableMetaData.TABLE_CHAIN_ONE_MONTH_SUMMARY.COLUMN_FAMILY_NAME + .getBytes(), getTreeNodeId().getBytes(), entry + .getValue().toString().getBytes()); + puts.add(put); + } - HBaseUtil.batchSaveMonthSummaryResult(puts); - } + HBaseUtil.batchSaveMonthSummaryResult(puts); + } - private void batchSaveDaySummaryResult() throws IOException, - InterruptedException { - List puts = new ArrayList(); - for (Map.Entry entry : chainNodeSpecificDaySummaryContainer - .entrySet()) { - Put put = new Put(entry.getKey().getBytes()); - put.addColumn( - HBaseTableMetaData.TABLE_CHAIN_ONE_DAY_SUMMARY.COLUMN_FAMILY_NAME - .getBytes(), getTreeNodeId().getBytes(), entry - .getValue().toString().getBytes()); - puts.add(put); - } + private void batchSaveDaySummaryResult() throws IOException, + InterruptedException { + List puts = new ArrayList(); + for (Map.Entry entry : chainNodeSpecificDaySummaryContainer + .entrySet()) { + Put put = new Put(entry.getKey().getBytes()); + put.addColumn( + HBaseTableMetaData.TABLE_CHAIN_ONE_DAY_SUMMARY.COLUMN_FAMILY_NAME + .getBytes(), getTreeNodeId().getBytes(), entry + .getValue().toString().getBytes()); + puts.add(put); + } - HBaseUtil.batchSaveDaySummaryResult(puts); - } + HBaseUtil.batchSaveDaySummaryResult(puts); + } - private void batchSaveHourSummaryResult() throws IOException, - InterruptedException { - List puts = new ArrayList(); - for (Map.Entry entry : chainNodeSpecificHourSummaryContainer - .entrySet()) { - Put put = new Put(entry.getKey().getBytes()); - put.addColumn( - HBaseTableMetaData.TABLE_CHAIN_ONE_HOUR_SUMMARY.COLUMN_FAMILY_NAME - .getBytes(), getTreeNodeId().getBytes(), entry - .getValue().toString().getBytes()); - puts.add(put); - } + private void batchSaveHourSummaryResult() throws IOException, + InterruptedException { + List puts = new ArrayList(); + for (Map.Entry entry : chainNodeSpecificHourSummaryContainer + .entrySet()) { + Put put = new Put(entry.getKey().getBytes()); + put.addColumn( + HBaseTableMetaData.TABLE_CHAIN_ONE_HOUR_SUMMARY.COLUMN_FAMILY_NAME + .getBytes(), getTreeNodeId().getBytes(), entry + .getValue().toString().getBytes()); + puts.add(put); + } - HBaseUtil.batchSaveHourSummaryResult(puts); - } + HBaseUtil.batchSaveHourSummaryResult(puts); + } - private void batchSaveMinSummaryResult() throws IOException, - InterruptedException { - List puts = new ArrayList(); - for (Map.Entry entry : chainNodeSpecificMinSummaryContainer - .entrySet()) { - Put put = new Put(entry.getKey().getBytes()); - put.addColumn( - HBaseTableMetaData.TABLE_CHAIN_ONE_MINUTE_SUMMARY.COLUMN_FAMILY_NAME - .getBytes(), getTreeNodeId().getBytes(), entry - .getValue().toString().getBytes()); - puts.add(put); - } + private void batchSaveMinSummaryResult() throws IOException, + InterruptedException { + List puts = new ArrayList(); + for (Map.Entry entry : chainNodeSpecificMinSummaryContainer + .entrySet()) { + Put put = new Put(entry.getKey().getBytes()); + put.addColumn( + HBaseTableMetaData.TABLE_CHAIN_ONE_MINUTE_SUMMARY.COLUMN_FAMILY_NAME + .getBytes(), getTreeNodeId().getBytes(), entry + .getValue().toString().getBytes()); + puts.add(put); + } - HBaseUtil.batchSaveMinSummaryResult(puts); - } + HBaseUtil.batchSaveMinSummaryResult(puts); + } - public String getTreeNodeId() { - return traceLevelId + "@" + viewPointId; - } + public String getTreeNodeId() { + return traceLevelId + "@" + viewPointId; + } } diff --git a/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/chainbuild/util/HBaseUtil.java b/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/chainbuild/util/HBaseUtil.java index 1a56dc102..4ba2a81ef 100644 --- a/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/chainbuild/util/HBaseUtil.java +++ b/skywalking-analysis/src/main/java/com/ai/cloud/skywalking/analysis/chainbuild/util/HBaseUtil.java @@ -111,7 +111,7 @@ public class HBaseUtil { return new ChainNodeSpecificHourSummary(); } - Cell cell = r.getColumnLatestCell(HBaseTableMetaData.TABLE_CHAIN_ONE_MINUTE_SUMMARY.COLUMN_FAMILY_NAME.getBytes(), + Cell cell = r.getColumnLatestCell(HBaseTableMetaData.TABLE_CHAIN_ONE_HOUR_SUMMARY.COLUMN_FAMILY_NAME.getBytes(), treeNodeId.getBytes()); if (cell != null && cell.getValueArray().length > 0) { @@ -134,7 +134,7 @@ public class HBaseUtil { return new ChainNodeSpecificDaySummary(); } - Cell cell = r.getColumnLatestCell(HBaseTableMetaData.TABLE_CHAIN_ONE_MINUTE_SUMMARY.COLUMN_FAMILY_NAME.getBytes(), + Cell cell = r.getColumnLatestCell(HBaseTableMetaData.TABLE_CHAIN_ONE_DAY_SUMMARY.COLUMN_FAMILY_NAME.getBytes(), treeNodeId.getBytes()); if (cell != null && cell.getValueArray().length > 0) { @@ -149,7 +149,7 @@ public class HBaseUtil { public static ChainNodeSpecificMonthSummary loadSpecificMonthSummary(String keyOfMonthSummaryTable, String treeNodeId) throws IOException { ChainNodeSpecificMonthSummary result = null; - Table table = connection.getTable(TableName.valueOf(HBaseTableMetaData.TABLE_CHAIN_ONE_DAY_SUMMARY.TABLE_NAME)); + Table table = connection.getTable(TableName.valueOf(HBaseTableMetaData.TABLE_CHAIN_ONE_MONTH_SUMMARY.TABLE_NAME)); Get g = new Get(Bytes.toBytes(keyOfMonthSummaryTable)); Result r = table.get(g); @@ -157,7 +157,7 @@ public class HBaseUtil { return new ChainNodeSpecificMonthSummary(); } - Cell cell = r.getColumnLatestCell(HBaseTableMetaData.TABLE_CHAIN_ONE_MINUTE_SUMMARY.COLUMN_FAMILY_NAME.getBytes(), + Cell cell = r.getColumnLatestCell(HBaseTableMetaData.TABLE_CHAIN_ONE_MONTH_SUMMARY.COLUMN_FAMILY_NAME.getBytes(), treeNodeId.getBytes()); if (cell != null && cell.getValueArray().length > 0) {