Merge branch 'master' into eureka

eureka
tanghc 5 years ago
commit e11c6079a6
  1. 4
      README.md
  2. 4
      doc/docs/README.md
  3. 72
      doc/docs/_sidebar.md
  4. 45
      doc/docs/files/90001_网关性能测试.md
  5. 17
      sop-admin/sop-admin-server/src/main/java/com/gitee/sop/adminserver/service/impl/RegistryServiceNacosImpl.java

@ -91,4 +91,6 @@ SOP封装了开放平台大部分功能包括:签名验证、统一异常处
## 沟通交流 ## 沟通交流
Q群:50212229 Q群:167643071
![SOP2群](https://images.gitee.com/uploads/images/2020/0203/103119_bdf84eb6_332975.png "SOP2群.png")

@ -2,4 +2,6 @@
Git地址:[SOP](https://gitee.com/durcframework/SOP) Git地址:[SOP](https://gitee.com/durcframework/SOP)
Q群:50212229 Q群:167643071
![SOP2群](https://images.gitee.com/uploads/images/2020/0203/103119_bdf84eb6_332975.png "SOP2群.png")

@ -1,38 +1,38 @@
* [首页](/?t=1579512230184) * [首页](/?t=1580871460178)
* 开发文档 * 开发文档
* [快速体验](files/10010_快速体验.md?t=1579512230186) * [快速体验](files/10010_快速体验.md?t=1580871460179)
* [项目接入到SOP](files/10011_项目接入到SOP.md?t=1579512230207) * [项目接入到SOP](files/10011_项目接入到SOP.md?t=1580871460202)
* [新增接口](files/10020_新增接口.md?t=1579512230208) * [新增接口](files/10020_新增接口.md?t=1580871460202)
* [开发流程](files/10021_开发流程.md?t=1579512230208) * [开发流程](files/10021_开发流程.md?t=1580871460202)
* [业务参数校验](files/10030_业务参数校验.md?t=1579512230208) * [业务参数校验](files/10030_业务参数校验.md?t=1580871460203)
* [错误处理](files/10040_错误处理.md?t=1579512230208) * [错误处理](files/10040_错误处理.md?t=1580871460203)
* [编写文档](files/10041_编写文档.md?t=1579512230208) * [编写文档](files/10041_编写文档.md?t=1580871460203)
* [接口交互详解](files/10050_接口交互详解.md?t=1579512230208) * [接口交互详解](files/10050_接口交互详解.md?t=1580871460203)
* [easyopen支持](files/10070_easyopen支持.md?t=1579512230208) * [easyopen支持](files/10070_easyopen支持.md?t=1580871460203)
* [使用签名校验工具](files/10080_使用签名校验工具.md?t=1579512230209) * [使用签名校验工具](files/10080_使用签名校验工具.md?t=1580871460203)
* [ISV管理](files/10085_ISV管理.md?t=1579512230209) * [ISV管理](files/10085_ISV管理.md?t=1580871460204)
* [自定义返回结果](files/10087_自定义返回结果.md?t=1579512230209) * [自定义返回结果](files/10087_自定义返回结果.md?t=1580871460204)
* [自定义过滤器](files/10088_自定义过滤器.md?t=1579512230209) * [自定义过滤器](files/10088_自定义过滤器.md?t=1580871460204)
* [自定义校验token](files/10089_自定义校验token.md?t=1579512230209) * [自定义校验token](files/10089_自定义校验token.md?t=1580871460204)
* [路由授权](files/10090_路由授权.md?t=1579512230209) * [路由授权](files/10090_路由授权.md?t=1580871460204)
* [接口限流](files/10092_接口限流.md?t=1579512230209) * [接口限流](files/10092_接口限流.md?t=1580871460204)
* [监控日志](files/10093_监控日志.md?t=1579512230209) * [监控日志](files/10093_监控日志.md?t=1580871460204)
* [SDK开发](files/10095_SDK开发.md?t=1579512230210) * [SDK开发](files/10095_SDK开发.md?t=1580871460204)
* [使用SpringCloudGateway](files/10096_使用SpringCloudGateway.md?t=1579512230210) * [使用SpringCloudGateway](files/10096_使用SpringCloudGateway.md?t=1580871460205)
* [应用授权](files/10097_应用授权.md?t=1579512230210) * [应用授权](files/10097_应用授权.md?t=1580871460205)
* [提供restful接口](files/10100_提供restful接口.md?t=1579512230210) * [提供restful接口](files/10100_提供restful接口.md?t=1580871460205)
* [文件上传](files/10104_文件上传.md?t=1579512230210) * [文件上传](files/10104_文件上传.md?t=1580871460205)
* [配置Sleuth链路追踪](files/10109_配置Sleuth链路追踪.md?t=1579512230210) * [配置Sleuth链路追踪](files/10109_配置Sleuth链路追踪.md?t=1580871460205)
* [预发布灰度发布](files/10110_预发布灰度发布.md?t=1579512230211) * [预发布灰度发布](files/10110_预发布灰度发布.md?t=1580871460205)
* [动态修改请求参数](files/10111_动态修改请求参数.md?t=1579512230211) * [动态修改请求参数](files/10111_动态修改请求参数.md?t=1580871460205)
* [使用eureka](files/10112_使用eureka.md?t=1579512230211) * [使用eureka](files/10112_使用eureka.md?t=1580871460205)
* [扩展其它注册中心](files/10113_扩展其它注册中心.md?t=1579512230211) * [扩展其它注册中心](files/10113_扩展其它注册中心.md?t=1580871460206)
* 原理分析 * 原理分析
* [原理分析之@ApiMapping](files/90010_原理分析之@ApiMapping.md?t=1579512230211) * [网关性能测试](files/90001_网关性能测试.md?t=1580871460206)
* [原理分析之如何存储路由](files/90011_原理分析之如何存储路由.md?t=1579512230211) * [原理分析之@ApiMapping](files/90010_原理分析之@ApiMapping.md?t=1580871460206)
* [原理分析之如何路由](files/90012_原理分析之如何路由.md?t=1579512230211) * [原理分析之如何存储路由](files/90011_原理分析之如何存储路由.md?t=1580871460206)
* [原理分析之文档归纳](files/90013_原理分析之文档归纳.md?t=1579512230211) * [原理分析之如何路由](files/90012_原理分析之如何路由.md?t=1580871460206)
* [原理分析之预发布灰度发布](files/90014_原理分析之预发布灰度发布.md?t=1579512230211) * [原理分析之文档归纳](files/90013_原理分析之文档归纳.md?t=1580871460207)
* [2.x升3.x注意事项](files/90099_2.x升3.x注意事项.md?t=1579512230212) * [原理分析之预发布灰度发布](files/90014_原理分析之预发布灰度发布.md?t=1580871460207)
* [常见问题](files/90100_常见问题.md?t=1579512230212) * [2.x升3.x注意事项](files/90099_2.x升3.x注意事项.md?t=1580871460207)
* [网关性能测试](files/90999_网关性能测试.md?t=1579512230212) * [常见问题](files/90100_常见问题.md?t=1580871460207)

@ -1,13 +1,13 @@
# 网关性能测试 # 网关性能测试
**测试环境**
> 注意:记得关闭限流功能 > 注意:记得关闭限流功能
**测试环境**
- 测试工具:[wrk](https://github.com/wg/wrk),[安装教程](https://www.cnblogs.com/quanxiaoha/p/10661650.html) - 测试工具:[wrk](https://github.com/wg/wrk),[安装教程](https://www.cnblogs.com/quanxiaoha/p/10661650.html)
- 服务器:CentOS7(虚拟机,宿主机:macbookpro),内存:2G,CPU:1,核数:2核 - 服务器:CentOS7(虚拟机,宿主机:macbookpro),内存:2G,CPU:1,核数:2核
- 运行环境:Java8、Mysql-5.7、Nacos-1.1.3 - 运行环境:Java8、Mysql-5.7、Nacos-1.1.3
- 运行参数: - 网关启动参数:
``` ```
-verbose:gc -XX:+PrintGCDetails -XX:+PrintHeapAtGC -Xloggc:gc-zuul.log \ -verbose:gc -XX:+PrintGCDetails -XX:+PrintHeapAtGC -Xloggc:gc-zuul.log \
@ -15,7 +15,7 @@
-XX:+UseConcMarkSweepGC -XX:+UseConcMarkSweepGC
``` ```
- zuul配置: - zuul配置(仅针对zuul,Spring Cloud Gateway没有做优化配置)
```properties ```properties
# 不校验时间,这样一个链接可以一直进行测试 # 不校验时间,这样一个链接可以一直进行测试
@ -35,8 +35,6 @@ hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=13000
logging.file=sop-gateway.log logging.file=sop-gateway.log
``` ```
以上配置仅针对zuul,Spring Cloud Gateway没有做优化配置
CentOS允许最大连接数 CentOS允许最大连接数
``` ```
$ ulimit -n $ ulimit -n
@ -63,6 +61,21 @@ Requests/sec: 1441.96
Transfer/sec: 406.96KB Transfer/sec: 406.96KB
``` ```
结果说明,下同:
```
8 threads and 200 connections (共8个测试线程,200个连接)
(平均值) (标准差) (最大值)(正负一个标准差所占比例)
Thread Stats Avg Stdev Max +/- Stdev
(延迟)
Latency 139.74ms 69.39ms 617.14ms 69.82%
(每秒请求数)
Req/Sec 182.12 55.74 343.00 66.24%
43391 requests in 30.09s, 11.96MB read (30.09秒内处理了43391个请求,耗费流量11.96MB)
Requests/sec: 1441.96 (QPS 1441.96,即平均每秒处理请求数为1441.96)
Transfer/sec: 406.96KB (平均每秒流量406.96KB)
```
- Spring Cloud Zuul测试结果 - Spring Cloud Zuul测试结果
``` ```
@ -114,3 +127,23 @@ Transfer/sec: 226.50KB
综上所述,Spring Cloud Gateway在没有优化的情况下,压测表现比zuul好,但zuul的数据表现也不差,但是出现超时现象,总的来说还是Spring Cloud Gateway具有优势。 综上所述,Spring Cloud Gateway在没有优化的情况下,压测表现比zuul好,但zuul的数据表现也不差,但是出现超时现象,总的来说还是Spring Cloud Gateway具有优势。
附启动脚本:
`restart.sh`
```bash
echo "Stopping sop-gateway-1.0.0-SNAPSHOT.jar"
pid=`ps -ef | grep sop-gateway-1.0.0-SNAPSHOT.jar | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
echo "kill -9 的id:" $pid
kill -9 $pid
fi
nohup java -jar -verbose:gc -XX:+PrintGCDetails -XX:+PrintHeapAtGC -Xloggc:gc.log \
-XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Xms1024m -Xmx1024m -Xmn256m -Xss256k -XX:SurvivorRatio=8\
-XX:+UseConcMarkSweepGC sop-gateway-1.0.0-SNAPSHOT.jar\
--spring.profiles.active=dev --server.port=8081 &
tail -f nohup.out
```

@ -2,6 +2,7 @@ package com.gitee.sop.adminserver.service.impl;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.alibaba.nacos.api.PropertyKeyConst;
import com.alibaba.nacos.api.exception.NacosException; import com.alibaba.nacos.api.exception.NacosException;
import com.alibaba.nacos.api.naming.NamingFactory; import com.alibaba.nacos.api.naming.NamingFactory;
import com.alibaba.nacos.api.naming.NamingService; import com.alibaba.nacos.api.naming.NamingService;
@ -18,11 +19,7 @@ import org.springframework.util.CollectionUtils;
import javax.annotation.PostConstruct; import javax.annotation.PostConstruct;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.*;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/** /**
* nacos接口实现, https://nacos.io/zh-cn/docs/open-api.html * nacos接口实现, https://nacos.io/zh-cn/docs/open-api.html
@ -36,6 +33,9 @@ public class RegistryServiceNacosImpl implements RegistryService {
@Value("${nacos.discovery.server-addr:${spring.cloud.nacos.discovery.server-addr:}}") @Value("${nacos.discovery.server-addr:${spring.cloud.nacos.discovery.server-addr:}}")
private String nacosAddr; private String nacosAddr;
@Value("${nacos.discovery.namespace:${spring.cloud.nacos.discovery.namespace:}}")
private String nacosNamespace;
private NamingService namingService; private NamingService namingService;
@PostConstruct @PostConstruct
@ -43,7 +43,12 @@ public class RegistryServiceNacosImpl implements RegistryService {
if (StringUtils.isBlank(nacosAddr)) { if (StringUtils.isBlank(nacosAddr)) {
throw new IllegalArgumentException("请在配置文件中指定nacos.discovery.server-addr参数"); throw new IllegalArgumentException("请在配置文件中指定nacos.discovery.server-addr参数");
} }
namingService = NamingFactory.createNamingService(nacosAddr); Properties nacosProperties = new Properties();
nacosProperties.put(PropertyKeyConst.SERVER_ADDR, nacosAddr);
if (StringUtils.isNotBlank(nacosNamespace)) {
nacosProperties.put(PropertyKeyConst.NAMESPACE, nacosNamespace);
}
namingService = NamingFactory.createNamingService(nacosProperties);
} }
@Override @Override

Loading…
Cancel
Save