Commit 895fc6e7 by Nepxion

需求不合理,去掉TraceId传递功能

parent 371eff46
......@@ -51,5 +51,4 @@ public class DiscoveryConstant {
public static final String NO = "NO";
public static final String UNKNOWN = "UNKNOWN";
public static final String EXT = "ext";
public static final String TRACE_ID = "traceId";
}
\ No newline at end of file
......@@ -16,24 +16,18 @@ import java.util.Enumeration;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.context.request.ServletRequestAttributes;
import com.nepxion.discovery.common.constant.DiscoveryConstant;
import com.nepxion.discovery.plugin.strategy.service.context.ServiceStrategyContextHolder;
import com.nepxion.discovery.plugin.strategy.service.trace.TraceIdGenerator;
public class FeignStrategyInterceptor implements RequestInterceptor {
private static final Logger LOG = LoggerFactory.getLogger(FeignStrategyInterceptor.class);
private String requestHeaders;
@Autowired(required = false)
private TraceIdGenerator traceIdGenerator;
@Autowired
private ServiceStrategyContextHolder serviceStrategyContextHolder;
......@@ -58,29 +52,13 @@ public class FeignStrategyInterceptor implements RequestInterceptor {
return;
}
if (requestHeaders.contains(DiscoveryConstant.TRACE_ID.toLowerCase())) {
String traceId = previousRequest.getHeader(DiscoveryConstant.TRACE_ID);
if (StringUtils.isEmpty(traceId) && traceIdGenerator != null) {
try {
traceId = traceIdGenerator.generate();
} catch (Exception e) {
LOG.error("Generate trace id failed, ignore to set trace id", e);
}
}
if (StringUtils.isNotEmpty(traceId)) {
requestTemplate.header(DiscoveryConstant.TRACE_ID, traceId);
}
}
while (headerNames.hasMoreElements()) {
String headerName = headerNames.nextElement();
String header = previousRequest.getHeader(headerName);
if (requestHeaders.contains(headerName.toLowerCase())) {
if (!StringUtils.equals(headerName, DiscoveryConstant.TRACE_ID)) {
requestTemplate.header(headerName, header);
}
}
}
}
}
\ No newline at end of file
......@@ -14,7 +14,6 @@ import java.util.Enumeration;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -25,18 +24,13 @@ import org.springframework.http.client.ClientHttpRequestInterceptor;
import org.springframework.http.client.ClientHttpResponse;
import org.springframework.web.context.request.ServletRequestAttributes;
import com.nepxion.discovery.common.constant.DiscoveryConstant;
import com.nepxion.discovery.plugin.strategy.service.context.ServiceStrategyContextHolder;
import com.nepxion.discovery.plugin.strategy.service.trace.TraceIdGenerator;
public class RestTemplateStrategyInterceptor implements ClientHttpRequestInterceptor {
private static final Logger LOG = LoggerFactory.getLogger(RestTemplateStrategyInterceptor.class);
private String requestHeaders;
@Autowired(required = false)
private TraceIdGenerator traceIdGenerator;
@Autowired
private ServiceStrategyContextHolder serviceStrategyContextHolder;
......@@ -62,31 +56,14 @@ public class RestTemplateStrategyInterceptor implements ClientHttpRequestInterce
}
HttpHeaders headers = request.getHeaders();
if (requestHeaders.contains(DiscoveryConstant.TRACE_ID.toLowerCase())) {
String traceId = previousRequest.getHeader(DiscoveryConstant.TRACE_ID);
if (StringUtils.isEmpty(traceId) && traceIdGenerator != null) {
try {
traceId = traceIdGenerator.generate();
} catch (Exception e) {
LOG.error("Generate trace id failed, ignore to set trace id", e);
}
}
if (StringUtils.isNotEmpty(traceId)) {
headers.add(DiscoveryConstant.TRACE_ID, traceId);
}
}
while (headerNames.hasMoreElements()) {
String headerName = headerNames.nextElement();
String header = previousRequest.getHeader(headerName);
if (requestHeaders.contains(headerName.toLowerCase())) {
if (!StringUtils.equals(headerName, DiscoveryConstant.TRACE_ID)) {
headers.add(headerName, header);
}
}
}
return execution.execute(request, body);
}
......
package com.nepxion.discovery.plugin.strategy.service.trace;
/**
* <p>Title: Nepxion Discovery</p>
* <p>Description: Nepxion Discovery</p>
* <p>Copyright: Copyright (c) 2017-2050</p>
* <p>Company: Nepxion</p>
* @author Haojun Ren
* @version 1.0
*/
public interface TraceIdGenerator {
String generate();
}
\ No newline at end of file
......@@ -28,7 +28,6 @@ import com.nepxion.discovery.plugin.example.service.impl.MyRegisterListener;
import com.nepxion.discovery.plugin.example.service.impl.MySentinelExceptionHandler;
import com.nepxion.discovery.plugin.example.service.impl.MySentinelFlowRuleParser;
import com.nepxion.discovery.plugin.example.service.impl.MySubscriber;
import com.nepxion.discovery.plugin.example.service.impl.MyTraceIdGenerator;
import com.nepxion.discovery.plugin.strategy.service.aop.RestTemplateStrategyInterceptor;
@SpringBootApplication
......@@ -86,9 +85,4 @@ public class DiscoveryApplicationA1 {
public MyDiscoveryEnabledStrategy myDiscoveryEnabledStrategy() {
return new MyDiscoveryEnabledStrategy();
}
@Bean
public MyTraceIdGenerator myTraceIdGenerator() {
return new MyTraceIdGenerator();
}
}
\ No newline at end of file
......@@ -11,19 +11,13 @@ package com.nepxion.discovery.plugin.example.service.feign;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.context.request.ServletRequestAttributes;
import com.nepxion.discovery.common.constant.DiscoveryConstant;
import com.nepxion.discovery.plugin.framework.adapter.PluginAdapter;
import com.nepxion.discovery.plugin.strategy.service.context.ServiceStrategyContextHolder;
public class AbstractFeignImpl {
@Autowired
private PluginAdapter pluginAdapter;
@Autowired
private ServiceStrategyContextHolder serviceStrategyContextHolder;
public String doInvoke(String value) {
String serviceId = pluginAdapter.getServiceId();
String host = pluginAdapter.getHost();
......@@ -31,12 +25,6 @@ public class AbstractFeignImpl {
String version = pluginAdapter.getVersion();
String region = pluginAdapter.getRegion();
String traceId = null;
ServletRequestAttributes attributes = serviceStrategyContextHolder.getRestAttributes();
if (attributes != null) {
traceId = attributes.getRequest().getHeader(DiscoveryConstant.TRACE_ID);
}
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(value + " -> " + serviceId);
stringBuilder.append("[" + host + ":" + port + "]");
......@@ -46,9 +34,6 @@ public class AbstractFeignImpl {
if (StringUtils.isNotEmpty(region)) {
stringBuilder.append("[Region=" + region + "]");
}
if (StringUtils.isNotEmpty(traceId)) {
stringBuilder.append("[TraceId=" + traceId + "]");
}
return stringBuilder.toString();
}
......
package com.nepxion.discovery.plugin.example.service.impl;
/**
* <p>Title: Nepxion Discovery</p>
* <p>Description: Nepxion Discovery</p>
* <p>Copyright: Copyright (c) 2017-2050</p>
* <p>Company: Nepxion</p>
* @author Haojun Ren
* @version 1.0
*/
import java.util.UUID;
import com.nepxion.discovery.plugin.strategy.service.trace.TraceIdGenerator;
public class MyTraceIdGenerator implements TraceIdGenerator {
@Override
public String generate() {
return UUID.randomUUID().toString();
}
}
\ No newline at end of file
......@@ -11,19 +11,13 @@ package com.nepxion.discovery.plugin.example.service.rest;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.context.request.ServletRequestAttributes;
import com.nepxion.discovery.common.constant.DiscoveryConstant;
import com.nepxion.discovery.plugin.framework.adapter.PluginAdapter;
import com.nepxion.discovery.plugin.strategy.service.context.ServiceStrategyContextHolder;
public class AbstractRestImpl {
@Autowired
private PluginAdapter pluginAdapter;
@Autowired
private ServiceStrategyContextHolder serviceStrategyContextHolder;
public String doRest(String value) {
String serviceId = pluginAdapter.getServiceId();
String host = pluginAdapter.getHost();
......@@ -31,12 +25,6 @@ public class AbstractRestImpl {
String version = pluginAdapter.getVersion();
String region = pluginAdapter.getRegion();
String traceId = null;
ServletRequestAttributes attributes = serviceStrategyContextHolder.getRestAttributes();
if (attributes != null) {
traceId = attributes.getRequest().getHeader(DiscoveryConstant.TRACE_ID);
}
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(value + " -> " + serviceId);
stringBuilder.append("[" + host + ":" + port + "]");
......@@ -46,9 +34,6 @@ public class AbstractRestImpl {
if (StringUtils.isNotEmpty(region)) {
stringBuilder.append("[Region=" + region + "]");
}
if (StringUtils.isNotEmpty(traceId)) {
stringBuilder.append("[TraceId=" + traceId + "]");
}
return stringBuilder.toString();
}
......
......@@ -89,6 +89,6 @@ spring.boot.admin.client.url=http://localhost:5555
# 用户自定义和编程灰度路由策略的时候,对RPC方法调用拦截的时候,需要指定对业务Controller类的扫描路径,以便传递上下文对象。该项配置只对服务有效,对网关无效。缺失则默认关闭该功能
spring.application.strategy.scan.packages=com.nepxion.discovery.plugin.example.service.feign
# 用户自定义和编程灰度路由策略的时候,对REST调用拦截的时候(支持Feign或者RestTemplate调用),需要把来自外部的指定Header参数传递到服务里,如果多个用“;”分隔,不允许出现空格。该项配置只对服务有效,对网关无效。缺失则默认关闭该功能
spring.application.strategy.request.headers=traceId;version;region;token
spring.application.strategy.request.headers=version;region;token
# 开启服务端实现Hystrix线程隔离模式做服务隔离时,必须把spring.application.strategy.hystrix.threadlocal.supported设置为true,同时要引入discovery-plugin-strategy-starter-hystrix包,否则线程切换时会发生ThreadLocal上下文对象丢失
# spring.application.strategy.hystrix.threadlocal.supported=true
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment