提交 c662740a 编写于 作者: Y yong.you

modify the compute score style

上级 b154893c
...@@ -47,6 +47,7 @@ import com.dianping.cat.report.service.ReportService; ...@@ -47,6 +47,7 @@ import com.dianping.cat.report.service.ReportService;
import com.dianping.cat.report.task.heavy.HeavyReportMerger.ServiceComparator; import com.dianping.cat.report.task.heavy.HeavyReportMerger.ServiceComparator;
import com.dianping.cat.report.task.heavy.HeavyReportMerger.UrlComparator; import com.dianping.cat.report.task.heavy.HeavyReportMerger.UrlComparator;
import com.dianping.cat.system.config.BugConfigManager; import com.dianping.cat.system.config.BugConfigManager;
import com.dianping.cat.system.config.UtilizationConfigManager;
public class Handler implements PageHandler<Context> { public class Handler implements PageHandler<Context> {
@Inject @Inject
...@@ -61,6 +62,9 @@ public class Handler implements PageHandler<Context> { ...@@ -61,6 +62,9 @@ public class Handler implements PageHandler<Context> {
@Inject @Inject
private BugConfigManager m_bugConfigManager; private BugConfigManager m_bugConfigManager;
@Inject
private UtilizationConfigManager m_configManager;
@Inject @Inject
private PayloadNormalizer m_normalizePayload; private PayloadNormalizer m_normalizePayload;
...@@ -225,7 +229,7 @@ public class Handler implements PageHandler<Context> { ...@@ -225,7 +229,7 @@ public class Handler implements PageHandler<Context> {
private UtilizationReport queryUtilizationReport(Payload payload) { private UtilizationReport queryUtilizationReport(Payload payload) {
Pair<Date, Date> pair = queryStartEndTime(payload); Pair<Date, Date> pair = queryStartEndTime(payload);
UtilizationReport report = m_reportService.queryUtilizationReport(CatString.CAT, pair.getKey(), pair.getValue()); UtilizationReport report = m_reportService.queryUtilizationReport(CatString.CAT, pair.getKey(), pair.getValue());
new UtilizationReportScore().visitUtilizationReport(report); new UtilizationReportScore().setConfigManager(m_configManager).visitUtilizationReport(report);
return report; return report;
} }
......
package com.dianping.cat.report.page.bug; package com.dianping.cat.report.page.bug;
import com.dianping.cat.home.utilization.config.entity.UtilizationConfig;
import com.dianping.cat.home.utilization.entity.Domain; import com.dianping.cat.home.utilization.entity.Domain;
import com.dianping.cat.home.utilization.transform.BaseVisitor; import com.dianping.cat.home.utilization.transform.BaseVisitor;
import com.dianping.cat.system.config.UtilizationConfigManager;
public class UtilizationReportScore extends BaseVisitor { public class UtilizationReportScore extends BaseVisitor {
private UtilizationConfigManager m_configManager;
private double m_callWeight;
private double m_sqlWeight;
private double m_cacheWeight;
private double m_swallWeight;
@Override @Override
public void visitDomain(Domain domain) { public void visitDomain(Domain domain) {
long urlCount = domain.getUrlCount(); long urlCount = domain.getUrlCount();
long serviceCount = domain.getServiceCount(); long serviceCount = domain.getServiceCount();
if (urlCount > 0) { if (urlCount > 0) {
domain.setWebScore(computeWebScore(domain)); domain.setWebScore(computeScore(domain));
} }
if (serviceCount > 0) { if (serviceCount > 0) {
domain.setServiceScore(computeServiceScore(domain)); domain.setServiceScore(computeScore(domain));
} }
} }
private int computeWebScore(Domain domain) { private int computeScore(Domain domain) {
long urlCount = domain.getUrlCount(); long urlCount = domain.getUrlCount();
long serviceCount = domain.getServiceCount();
long cacheCount = domain.getMemcacheCount(); long cacheCount = domain.getMemcacheCount();
long sqlCount = domain.getSqlCount(); long sqlCount = domain.getSqlCount();
long callCount = domain.getPigeonCallCount(); long callCount = domain.getPigeonCallCount();
long swallowCount = domain.getSwallowCallCount(); long swallowCount = domain.getSwallowCallCount();
return (int) ((callCount * 100 + sqlCount * 10 + cacheCount + swallowCount * 10) * 1.0 / urlCount); return (int) ((callCount * m_callWeight + sqlCount * m_sqlWeight + cacheCount * m_cacheWeight + swallowCount
* m_swallWeight) * 1.0 / (urlCount + serviceCount));
} }
private int computeServiceScore(Domain domain) { public UtilizationReportScore setConfigManager(UtilizationConfigManager configManager) {
m_configManager = configManager;
long serviceCount = domain.getServiceCount(); UtilizationConfig utilizationConfig = m_configManager.getUtilizationConfig();
long cacheCount = domain.getMemcacheCount(); m_callWeight = utilizationConfig.getPigeoncallWeight();
long sqlCount = domain.getSqlCount(); m_sqlWeight = utilizationConfig.getSqlWeight();
long callCount = domain.getPigeonCallCount(); m_cacheWeight = utilizationConfig.getCacheWeight();
long swallowCount = domain.getSwallowCallCount(); m_swallWeight = utilizationConfig.getSwallowWeight();
return (int) ((callCount * 100 + sqlCount * 10 + cacheCount + swallowCount * 10) * 1.0 / serviceCount); return this;
} }
} }
...@@ -2767,6 +2767,9 @@ ...@@ -2767,6 +2767,9 @@
<requirement> <requirement>
<role>com.dianping.cat.system.config.BugConfigManager</role> <role>com.dianping.cat.system.config.BugConfigManager</role>
</requirement> </requirement>
<requirement>
<role>com.dianping.cat.system.config.UtilizationConfigManager</role>
</requirement>
<requirement> <requirement>
<role>com.dianping.cat.report.page.PayloadNormalizer</role> <role>com.dianping.cat.report.page.PayloadNormalizer</role>
</requirement> </requirement>
...@@ -2790,6 +2793,15 @@ ...@@ -2790,6 +2793,15 @@
</requirement> </requirement>
</requirements> </requirements>
</component> </component>
<component>
<role>com.dianping.cat.system.config.UtilizationConfigManager</role>
<implementation>com.dianping.cat.system.config.UtilizationConfigManager</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.core.config.ConfigDao</role>
</requirement>
</requirements>
</component>
<component> <component>
<role>com.dianping.cat.system.SystemModule</role> <role>com.dianping.cat.system.SystemModule</role>
<implementation>com.dianping.cat.system.SystemModule</implementation> <implementation>com.dianping.cat.system.SystemModule</implementation>
...@@ -3060,15 +3072,6 @@ ...@@ -3060,15 +3072,6 @@
</requirement> </requirement>
</requirements> </requirements>
</component> </component>
<component>
<role>com.dianping.cat.system.config.UtilizationConfigManager</role>
<implementation>com.dianping.cat.system.config.UtilizationConfigManager</implementation>
<requirements>
<requirement>
<role>com.dianping.cat.core.config.ConfigDao</role>
</requirement>
</requirements>
</component>
<component> <component>
<role>com.dianping.cat.system.page.abtest.Handler</role> <role>com.dianping.cat.system.page.abtest.Handler</role>
<implementation>com.dianping.cat.system.page.abtest.Handler</implementation> <implementation>com.dianping.cat.system.page.abtest.Handler</implementation>
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<li class='nav-header'><h4>Statistics</h4></li> <li class='nav-header'><h4>Statistics</h4></li>
<li id="bug" class="text-right " id="bug"><a href="?domain=${model.domain}&ip=${model.ipAddress}&date=${model.date}&op=view"><strong>项目异常</strong></a></li> <li id="bug" class="text-right " id="bug"><a href="?domain=${model.domain}&ip=${model.ipAddress}&date=${model.date}&op=view"><strong>项目异常</strong></a></li>
<li id="service" class="text-right" id="service"><a href="?domain=${model.domain}&ip=${model.ipAddress}&date=${model.date}&op=service"><strong>服务可用性</strong></a></li> <li id="service" class="text-right" id="service"><a href="?domain=${model.domain}&ip=${model.ipAddress}&date=${model.date}&op=service"><strong>服务可用性</strong></a></li>
<li id="utilization" class="text-right" id="service"><a href="?domain=${model.domain}&ip=${model.ipAddress}&date=${model.date}&op=utilization"><strong>应用节能排行榜</strong></a></li> <li id="utilization" class="text-right" id="service"><a href="?domain=${model.domain}&ip=${model.ipAddress}&date=${model.date}&op=utilization"><strong>应用排行榜</strong></a></li>
<li id="heavy" class="text-right" id="heavy"><a href="?domain=${model.domain}&ip=${model.ipAddress}&date=${model.date}&op=heavy"><strong>重量级访问</strong></a></li> <li id="heavy" class="text-right" id="heavy"><a href="?domain=${model.domain}&ip=${model.ipAddress}&date=${model.date}&op=heavy"><strong>重量级访问</strong></a></li>
</ul> </ul>
</div> </div>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册