Skip to content

Commit f8a1db9

Browse files
authored
Merge pull request #44 from SpringCloud/A
A
2 parents e543cfa + dcfe0ec commit f8a1db9

File tree

6 files changed

+97
-10
lines changed

6 files changed

+97
-10
lines changed

doc/guide/performance-testing.md

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
2+
# 测试结果
3+
4+
## 性能测试
5+
6+
7+
* 测试场景
8+
9+
提供方service-a接口sleep 50ms。
10+
测试机器均为4C8G。
11+
一个策略,两个决策(HttpParameter)。
12+
13+
14+
测试场景 | 服务 | 接口
15+
--- | --- | ---
16+
zuul | gateway | /gateway/service-a/api/test/get?version=${version}&platform={platform}
17+
zuul+feign | gateway | /gateway/service-b/api/test/feignGet?version=${version}&platform={platform}
18+
feign | service-b | /api/test/feignGet?version=${version}&platform={platform}
19+
20+
21+
压测准备:zuul-feign 预热5分钟
22+
23+
 
24+
场景:feign
25+
接口:/api/test/feignGet
26+
压测5分钟
27+
28+
灰度环境
29+
30+
connections | RPS | Avg | Max | 90%Line | Error
31+
--- | --- | --- | --- | --- | ---
32+
200连接 | 3.32k | 61.11ms | 642.61ms | 69.06ms | 0/996349
33+
300连接 | 4.17k| 72.30ms | 523.08ms | 86.03ms | 0/1252191
34+
 
35+
正常环境
36+
37+
connections | RPS | Avg | Max | 90%Line | Error
38+
--- | --- | --- | --- | --- | ---
39+
200连接 | 3.70k | 54.12ms | 180.54ms | 57.08ms | 0/1111624
40+
300连接 | 5.14k | 58.82ms | 1.03s | 66.62ms | 2/1540693
41+
 
42+
 
43+
场景:Zuul
44+
接口:/gateway/service-a/api/test/get
45+
压测5分钟
46+
47+
灰度环境
48+
49+
connections | RPS | Avg | Max | 90%Line | Error
50+
--- | --- | --- | --- | --- | ---
51+
200连接 | 3.61k | 55.69ms | 383.83ms | 58.64ms | 0/1082715
52+
300连接 | 4.80k | 62.87ms | 442.96ms | 69.38ms | 0/1439638
53+
 
54+
正常环境
55+
56+
connections | RPS | Avg | Max | 90%Line | Error
57+
--- | --- | --- | --- | --- | ---
58+
200连接 | 3.71k | 53.95ms | 161.71ms | 56.58ms | 0/1113616
59+
300连接 | 5.35k | 56.32ms | 207.53ms | 60.69ms | 0/1605155
60+
 
61+
 
62+
场景:Zuul-feign
63+
接口:/gateway/service-b/api/test/feignGet
64+
压测5分钟,超时时间8s
65+
66+
灰度环境
67+
68+
connections | RPS | Avg | Max | 90%Line | Error
69+
--- | --- | --- | --- | --- | ---
70+
200连接 | 3.08k | 66.10ms | 727.43ms | 77.56ms | 0/922887
71+
300连接 | 3.56k | 85.61ms | 1.37s | 108.50ms | 11/1067908
72+
 
73+
正常环境
74+
75+
connections | RPS | Avg | Max | 90%Line | Error
76+
--- | --- | --- | --- | --- | ---
77+
200连接 | 3.57k | 56.35ms | 188.72ms | 60.71ms | 0/1070078
78+
300连接 | 4.95k | 63.21ms | 1.16s | 70.76ms | 401/1485965
79+
80+
81+
## 稳定性测试
82+
灰度环境以100测试zuul+feign的调用场景,连接数持续运行12小时,未发现泄漏风险。
83+

spring-cloud-gray-client-netflix/src/main/java/cn/springcloud/gray/client/netflix/RibbonServerChooser.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package cn.springcloud.gray.client.netflix;
22

3+
import cn.springcloud.gray.GrayClientHolder;
34
import cn.springcloud.gray.GrayManager;
45
import cn.springcloud.gray.ServerChooser;
56
import cn.springcloud.gray.ServerListResult;
@@ -11,6 +12,7 @@
1112
import cn.springcloud.gray.servernode.ServerListProcessor;
1213
import cn.springcloud.gray.servernode.ServerSpec;
1314
import com.netflix.loadbalancer.Server;
15+
import org.apache.commons.collections.ListUtils;
1416
import org.apache.commons.lang3.StringUtils;
1517

1618
import java.util.ArrayList;
@@ -71,10 +73,14 @@ public ServerListResult<Server> distinguishAndMatchGrayServerList(List<Server> s
7173
return null;
7274
}
7375

74-
serverListResult.setGrayServers(
75-
serverListResult.getGrayServers().stream()
76-
.filter(this::matchGrayDecisions)
77-
.collect(Collectors.toList()));
76+
if (GrayClientHolder.getGraySwitcher().isEanbleGrayRouting()) {
77+
serverListResult.setGrayServers(
78+
serverListResult.getGrayServers().stream()
79+
.filter(this::matchGrayDecisions)
80+
.collect(Collectors.toList()));
81+
}else{
82+
serverListResult.setGrayServers(ListUtils.EMPTY_LIST);
83+
}
7884

7985
return serverListResult;
8086
}

spring-cloud-gray-client/src/main/java/cn/springcloud/gray/decision/factory/HttpHeaderGrayDecisionFactory.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,7 @@ public GrayDecision apply(Config configBean) {
3434
log.warn("没有找到相应与compareMode'{}'对应的PredicateComparator", configBean.getCompareMode());
3535
return false;
3636
}
37-
Map<String, ? extends Collection<String>> headers = grayRequest.getHeaders();
38-
return predicateComparator.test(headers.get(configBean.getHeader()), configBean.getValues());
37+
return predicateComparator.test(grayRequest.getHeader(configBean.getHeader()), configBean.getValues());
3938
};
4039
}
4140

spring-cloud-gray-client/src/main/java/cn/springcloud/gray/decision/factory/HttpParameterGrayDecisionFactory.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public GrayDecision apply(Config configBean) {
3232
log.warn("没有找到相应与compareMode'{}'对应的PredicateComparator", configBean.getCompareMode());
3333
return false;
3434
}
35-
return predicateComparator.test(grayRequest.getParameters().get(configBean.getName()), configBean.getValues());
35+
return predicateComparator.test(grayRequest.getParameter(configBean.getName()), configBean.getValues());
3636
};
3737
}
3838

spring-cloud-gray-server/src/main/java/cn/springcloud/gray/server/resources/rest/OperateRecordResource.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ public class OperateRecordResource {
7676
@GetMapping(value = "/page")
7777
public ResponseEntity<ApiRes<List<OperateRecord>>> list(
7878
@Validated OperateQueryFO fo,
79-
@ApiParam @PageableDefault(direction = Sort.Direction.DESC) Pageable pageable) {
79+
@ApiParam @PageableDefault(sort = "operateTime", direction = Sort.Direction.DESC) Pageable pageable) {
8080
OperateQuery query = fo.toOperateQuery();
8181
Page<OperateRecord> operateRecordPage = operateAuditModule.queryRecords(query, pageable);
8282
HttpHeaders headers = PaginationUtils.generatePaginationHttpHeaders(operateRecordPage);

spring-cloud-gray-webui/src/views/gray-trackor/complex-table.vue

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,8 +142,7 @@ export default {
142142
pvData: [],
143143
rules: {
144144
serviceId: [{ required: true, message: 'Service Id is required', trigger: 'change' }],
145-
name: [{ required: true, message: 'Name is required', trigger: 'change' }],
146-
infos: [{ required: true, message: 'Infos is required', trigger: 'change' }]
145+
name: [{ required: true, message: 'Name is required', trigger: 'change' }]
147146
},
148147
downloadLoading: false,
149148
tempRoute: {}

0 commit comments

Comments
 (0)