Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
D
discovery
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
谢捷峰
discovery
Commits
895fc6e7
Commit
895fc6e7
authored
Jan 02, 2019
by
Nepxion
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
需求不合理,去掉TraceId传递功能
parent
371eff46
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
2 additions
and
123 deletions
+2
-123
discovery-common/src/main/java/com/nepxion/discovery/common/constant/DiscoveryConstant.java
+0
-2
discovery-plugin-strategy-starter-service/src/main/java/com/nepxion/discovery/plugin/strategy/service/aop/FeignStrategyInterceptor.java
+0
-23
discovery-plugin-strategy-starter-service/src/main/java/com/nepxion/discovery/plugin/strategy/service/aop/RestTemplateStrategyInterceptor.java
+0
-23
discovery-plugin-strategy-starter-service/src/main/java/com/nepxion/discovery/plugin/strategy/service/trace/TraceIdGenerator.java
+0
-15
discovery-springcloud-example-service/src/main/java/com/nepxion/discovery/plugin/example/service/DiscoveryApplicationA1.java
+0
-7
discovery-springcloud-example-service/src/main/java/com/nepxion/discovery/plugin/example/service/feign/AbstractFeignImpl.java
+0
-15
discovery-springcloud-example-service/src/main/java/com/nepxion/discovery/plugin/example/service/impl/MyTraceIdGenerator.java
+0
-22
discovery-springcloud-example-service/src/main/java/com/nepxion/discovery/plugin/example/service/rest/AbstractRestImpl.java
+0
-15
discovery-springcloud-example-service/src/main/resources/bootstrap.properties
+2
-1
No files found.
discovery-common/src/main/java/com/nepxion/discovery/common/constant/DiscoveryConstant.java
View file @
895fc6e7
...
...
@@ -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
discovery-plugin-strategy-starter-service/src/main/java/com/nepxion/discovery/plugin/strategy/service/aop/FeignStrategyInterceptor.java
View file @
895fc6e7
...
...
@@ -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
discovery-plugin-strategy-starter-service/src/main/java/com/nepxion/discovery/plugin/strategy/service/aop/RestTemplateStrategyInterceptor.java
View file @
895fc6e7
...
...
@@ -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
);
}
...
...
discovery-plugin-strategy-starter-service/src/main/java/com/nepxion/discovery/plugin/strategy/service/trace/TraceIdGenerator.java
deleted
100644 → 0
View file @
371eff46
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
discovery-springcloud-example-service/src/main/java/com/nepxion/discovery/plugin/example/service/DiscoveryApplicationA1.java
View file @
895fc6e7
...
...
@@ -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
discovery-springcloud-example-service/src/main/java/com/nepxion/discovery/plugin/example/service/feign/AbstractFeignImpl.java
View file @
895fc6e7
...
...
@@ -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
();
}
...
...
discovery-springcloud-example-service/src/main/java/com/nepxion/discovery/plugin/example/service/impl/MyTraceIdGenerator.java
deleted
100644 → 0
View file @
371eff46
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
discovery-springcloud-example-service/src/main/java/com/nepxion/discovery/plugin/example/service/rest/AbstractRestImpl.java
View file @
895fc6e7
...
...
@@ -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
();
}
...
...
discovery-springcloud-example-service/src/main/resources/bootstrap.properties
View file @
895fc6e7
...
...
@@ -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
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment