This is an automated email from the ASF dual-hosted git repository. liubao pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git
commit 9382d3c344b7f6b62f37f9d8e1faaa9b5812e89e Author: zyl <[email protected]> AuthorDate: Tue Jan 12 17:08:18 2021 +0800 SCB-2178 Improve algorithm of loadBalance strage WeightedResponse #之前使用的策略是会一直累积计算平均响应时间,会导致出现影响速度较慢。 #通过使用时间窗口来计算平均响应时间,可以提高响应的敏感度。 --- .../apache/servicecomb/loadbalance/WeightedResponseTimeRuleExt.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/WeightedResponseTimeRuleExt.java b/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/WeightedResponseTimeRuleExt.java index 055f75b..d96f6d4 100644 --- a/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/WeightedResponseTimeRuleExt.java +++ b/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/WeightedResponseTimeRuleExt.java @@ -83,7 +83,8 @@ public class WeightedResponseTimeRuleExt extends RoundRobinRuleExt { boolean needRandom = false; for (ServiceCombServer server : servers) { ServerStats serverStats = loadBalancer.getLoadBalancerStats().getSingleServerStat(server); - double avgTime = serverStats.getResponseTimeAvg(); + //getResponseTimeAvgRecent()按照时间窗口统计,时间窗口大小为1分钟;getResponseTimeAvg()一直累积 + double avgTime = serverStats.getResponseTimeAvgRecent(); if (!needRandom && avgTime > MIN_GAP) { needRandom = true; }
