Skip to content

Commit 5025d29

Browse files
committed
优化代码
1 parent 69fc5e0 commit 5025d29

File tree

6 files changed

+49
-59
lines changed

6 files changed

+49
-59
lines changed

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

Lines changed: 33 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,28 +5,29 @@
55
import cn.springcloud.gray.client.netflix.connectionpoint.RibbonConnectionPoint;
66
import cn.springcloud.gray.client.netflix.hystrix.HystrixRequestLocalStorage;
77
import cn.springcloud.gray.request.RequestLocalStorage;
8+
import cn.springcloud.gray.request.track.GrayTrackHolder;
9+
import cn.springcloud.gray.web.GrayTrackFilter;
810
import com.netflix.hystrix.HystrixCommand;
11+
import com.netflix.hystrix.strategy.concurrency.HystrixRequestContext;
912
import feign.hystrix.HystrixFeign;
10-
import org.springframework.beans.factory.annotation.Autowired;
1113
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
1214
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
1315
import org.springframework.context.annotation.Bean;
1416
import org.springframework.context.annotation.Configuration;
15-
import org.springframework.context.annotation.Import;
17+
18+
import javax.servlet.FilterChain;
19+
import javax.servlet.ServletException;
20+
import javax.servlet.ServletRequest;
21+
import javax.servlet.ServletResponse;
22+
import java.io.IOException;
1623

1724
@Configuration
1825
@ConditionalOnBean(GrayManager.class)
1926
@ConditionalOnClass({HystrixCommand.class, HystrixFeign.class})
20-
@Import(HystrixGrayTrackWebConfiguration.class)
27+
//@Import(HystrixGrayTrackWebConfiguration.class)
2128
public class HystrixGrayAutoConfiguration {
2229

2330

24-
@Autowired
25-
private GrayManager grayManager;
26-
@Autowired
27-
private RequestLocalStorage requestLocalStorage;
28-
29-
3031
@Bean
3132
public RequestLocalStorage requestLocalStorage() {
3233
return new HystrixRequestLocalStorage();
@@ -39,8 +40,30 @@ public RequestLocalStorage requestLocalStorage() {
3940
* @return DefaultHystrixRibbonConnectionPoint
4041
*/
4142
@Bean
42-
public RibbonConnectionPoint hystrixRibbonConnectionPoint() {
43+
public RibbonConnectionPoint hystrixRibbonConnectionPoint(
44+
GrayManager grayManager, RequestLocalStorage requestLocalStorage) {
4345
return new DefaultHystrixRibbonConnectionPoint(grayManager, requestLocalStorage);
4446
}
4547

48+
49+
@Bean
50+
public GrayTrackFilter grayTrackFilter(
51+
GrayTrackHolder grayTrackHolder,
52+
RequestLocalStorage requestLocalStorage) {
53+
return new GrayTrackFilter(grayTrackHolder, requestLocalStorage) {
54+
@Override
55+
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
56+
if (!HystrixRequestContext.isCurrentThreadInitialized()) {
57+
HystrixRequestContext.initializeContext();
58+
}
59+
try {
60+
super.doFilter(request, response, chain);
61+
} finally {
62+
if (HystrixRequestContext.isCurrentThreadInitialized()) {
63+
HystrixRequestContext.getContextForCurrentThread().shutdown();
64+
}
65+
}
66+
}
67+
};
68+
}
4669
}

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

Lines changed: 0 additions & 39 deletions
This file was deleted.

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import cn.springcloud.gray.decision.GrayDecisionFactoryKeeper;
66
import cn.springcloud.gray.model.GrayInstance;
77
import cn.springcloud.gray.model.GrayService;
8+
import cn.springcloud.gray.model.GrayStatus;
89
import lombok.extern.slf4j.Slf4j;
910

1011
import java.util.List;
@@ -83,6 +84,9 @@ private void joinLoadedGrays(Map<String, GrayService> grayServices) {
8384
if (grayServices.containsKey(instance.getServiceId())
8485
|| grayServices.get(instance.getServiceId())
8586
.getGrayInstance(instance.getInstanceId()) != null) {
87+
if (instance.getGrayStatus() == null) {
88+
instance.setGrayStatus(GrayStatus.OPEN);
89+
}
8690
updateGrayInstance(grayServices, instance);
8791
}
8892
});

spring-cloud-gray-client/src/main/java/cn/springcloud/gray/client/config/GrayClientAutoConfiguration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
import java.util.List;
2424

2525
@Configuration
26-
@EnableConfigurationProperties({GrayClientProperties.class, GrayRequestProperties.class})
26+
@EnableConfigurationProperties({GrayClientProperties.class, GrayRequestProperties.class, GrayLoadProperties.class})
2727
//@ConditionalOnBean(GrayClientMarkerConfiguration.GrayClientMarker.class)
2828
@ConditionalOnProperty(value = "gray.enabled")
2929
@Import({GrayDecisionFactoryConfiguration.class, GrayTrackConfiguration.class})

spring-cloud-gray-client/src/main/java/cn/springcloud/gray/client/config/GrayTrackConfiguration.java

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33

44
import cn.springcloud.gray.client.config.properties.GrayTrackProperties;
55
import cn.springcloud.gray.communication.InformationClient;
6-
import cn.springcloud.gray.request.GrayHttpTrackInfo;
76
import cn.springcloud.gray.request.GrayInfoTracker;
87
import cn.springcloud.gray.request.GrayTrackInfo;
98
import cn.springcloud.gray.request.RequestLocalStorage;
@@ -20,7 +19,6 @@
2019
import org.springframework.context.annotation.Bean;
2120
import org.springframework.context.annotation.Configuration;
2221

23-
import javax.servlet.http.HttpServletRequest;
2422
import java.util.List;
2523

2624
@Configuration
@@ -46,15 +44,10 @@ public static class GrayClientWebConfiguration {
4644
@Autowired
4745
private GrayTrackProperties grayTrackProperties;
4846

49-
@Autowired
50-
private List<GrayInfoTracker<GrayHttpTrackInfo, HttpServletRequest>> trackors;
51-
52-
@Autowired
53-
private RequestLocalStorage requestLocalStorage;
54-
5547
@Bean
5648
@ConditionalOnMissingBean
57-
public GrayTrackFilter grayTrackFilter(GrayTrackHolder grayTrackHolder) {
49+
public GrayTrackFilter grayTrackFilter(
50+
GrayTrackHolder grayTrackHolder, RequestLocalStorage requestLocalStorage) {
5851
return new GrayTrackFilter(grayTrackHolder, requestLocalStorage);
5952
}
6053

spring-cloud-gray-client/src/main/java/cn/springcloud/gray/event/DefaultGrayEventListener.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,11 @@
1515
import java.util.Optional;
1616
import java.util.function.Consumer;
1717

18+
/**
19+
* 灰度事件监听器,处理灰度管控端发来的事件消息。
20+
* 事件源分两种:灰度实例的,或灰度追踪的。
21+
* 事件类型分两种:更新、删除
22+
*/
1823
public class DefaultGrayEventListener implements GrayEventListener, InstanceLocalInfoAware {
1924

2025
private CommunicableGrayManager grayManager;
@@ -58,6 +63,10 @@ private DefaultGrayEventListener putHandler(SourceType sourceType, Consumer<Gray
5863

5964

6065
private void handleGrayInstance(GrayEventMsg msg) {
66+
if (StringUtils.equals(msg.getServiceId(), instanceLocalInfo.getServiceId())
67+
&& StringUtils.equals(msg.getInstanceId(), instanceLocalInfo.getInstanceId())) {
68+
return;
69+
}
6170
switch (msg.getEventType()) {
6271
case DOWN:
6372
grayManager.closeGray(msg.getServiceId(), msg.getInstanceId());

0 commit comments

Comments
 (0)