Skip to content

A #17

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 12 commits into from
Jun 2, 2019
Merged
59 changes: 30 additions & 29 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
<groupId>cn.springcloud.gray</groupId>
<artifactId>spring-cloud-gray</artifactId>
<packaging>pom</packaging>
<version>A.1.0.1</version>
<version>A.1.0.3</version>
<url>https://github.com/SpringCloud/spring-cloud-gray</url>
<organization>
<name>Spring Cloud中国社区</name>
Expand Down Expand Up @@ -225,6 +225,35 @@
<build>
<defaultGoal>spring-boot:run</defaultGoal>
<plugins>
<!-- Source -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- Javadoc -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- Compile -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
Expand Down Expand Up @@ -252,34 +281,6 @@
<id>sonatype-oss-release</id>
<build>
<plugins>
<!-- Source -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- Javadoc -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- GPG -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
Expand Down
2 changes: 1 addition & 1 deletion spring-cloud-gray-client-netflix/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<parent>
<artifactId>spring-cloud-gray</artifactId>
<groupId>cn.springcloud.gray</groupId>
<version>A.1.0.1</version>
<version>A.1.0.3</version>
</parent>
<modelVersion>4.0.0</modelVersion>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,15 @@
import feign.hystrix.HystrixFeign;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;

@Configuration
@ConditionalOnBean(GrayManager.class)
@ConditionalOnClass({HystrixCommand.class, HystrixFeign.class})
@ConditionalOnProperty(value = "gray.hystrix.enabled")
@Import(HystrixGrayTrackWebConfiguration.class)
public class HystrixGrayAutoConfiguration {

Expand All @@ -32,7 +34,7 @@ public RequestLocalStorage requestLocalStorage() {
* @return DefaultHystrixRibbonConnectionPoint
*/
@Bean
public RibbonConnectionPoint hystrixRibbonConnectionPoint(
public RibbonConnectionPoint ribbonConnectionPoint(
GrayManager grayManager, RequestLocalStorage requestLocalStorage) {
return new DefaultHystrixRibbonConnectionPoint(grayManager, requestLocalStorage);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
@Configuration
@ConditionalOnBean(GrayManager.class)
@RibbonClients(defaultConfiguration = GrayRibbonClientsConfiguration.class)
public class NetflixGrayAutoConfiguration {
public class NetflixRibbonGrayAutoConfiguration {


@Bean
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package cn.springcloud.gray.client.netflix.feign.configuration;

import cn.springcloud.gray.GrayManager;
import cn.springcloud.gray.client.netflix.configuration.HystrixGrayAutoConfiguration;
import cn.springcloud.gray.client.netflix.feign.GrayTrackFeignRequestInterceptor;
import cn.springcloud.gray.request.RequestLocalStorage;
import com.netflix.loadbalancer.ILoadBalancer;
Expand Down Expand Up @@ -41,10 +40,4 @@ public GrayTrackFeignRequestInterceptor grayTrackFeignRequestInterceptor(Request
}


@Configuration
@ConditionalOnProperty(value = "feign.hystrix.enabled")
public static class HystrixConfiguration extends HystrixGrayAutoConfiguration {

}

}
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,10 @@ public class GrayFeignClientsConfiguration {
@Autowired
private Client feignClient;
@Autowired
private RibbonConnectionPoint ribbonConnectionPoint;
@Autowired
private GrayRequestProperties grayRequestProperties;

@Bean
public Client getFeignClient() {
public Client getFeignClient(RibbonConnectionPoint ribbonConnectionPoint) {
return new GrayFeignClient(feignClient, ribbonConnectionPoint, grayRequestProperties);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package cn.springcloud.gray.client.netflix.ribbon;

import cn.springcloud.gray.GrayClientHolder;
import cn.springcloud.gray.GrayManager;
import cn.springcloud.gray.client.netflix.GrayClientHolder;
import cn.springcloud.gray.model.GrayService;
import cn.springcloud.gray.request.GrayRequest;
import cn.springcloud.gray.request.RequestLocalStorage;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,40 +1,28 @@
package cn.springcloud.gray.client.netflix.ribbon.configuration;

import cn.springcloud.gray.GrayManager;
import cn.springcloud.gray.client.netflix.GrayClientHolder;
import cn.springcloud.gray.client.netflix.ribbon.GrayLoadBalanceRule;
import cn.springcloud.gray.servernode.ServerExplainer;
import cn.springcloud.gray.request.RequestLocalStorage;
import cn.springcloud.gray.servernode.ServerExplainer;
import com.netflix.client.config.IClientConfig;
import com.netflix.loadbalancer.IRule;
import com.netflix.loadbalancer.Server;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class GrayRibbonClientsConfiguration implements InitializingBean {

@Autowired
private GrayManager grayManager;
@Autowired
private RequestLocalStorage requestLocalStorage;
@Autowired
private ServerExplainer<Server> serverExplainer;
public class GrayRibbonClientsConfiguration {

@Bean
public IRule ribbonRule(@Autowired(required = false) IClientConfig config) {
public IRule ribbonRule(
@Autowired(required = false) IClientConfig config,
GrayManager grayManager,
RequestLocalStorage requestLocalStorage,
ServerExplainer<Server> serverExplainer) {
GrayLoadBalanceRule rule = new GrayLoadBalanceRule(grayManager, requestLocalStorage, serverExplainer);
rule.initWithNiwsConfig(config);
return rule;
}


@Override
public void afterPropertiesSet() throws Exception {
GrayClientHolder.setGrayManager(grayManager);
GrayClientHolder.setRequestLocalStorage(requestLocalStorage);
GrayClientHolder.setServerExplainer(serverExplainer);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import cn.springcloud.gray.GrayManager;
import cn.springcloud.gray.client.config.properties.GrayRequestProperties;
import cn.springcloud.gray.client.netflix.configuration.HystrixGrayAutoConfiguration;
import cn.springcloud.gray.client.netflix.connectionpoint.RibbonConnectionPoint;
import cn.springcloud.gray.client.netflix.zuul.GrayPostZuulFilter;
import cn.springcloud.gray.client.netflix.zuul.GrayPreZuulFilter;
Expand Down Expand Up @@ -48,11 +47,4 @@ public ZuulRequestInterceptor zuulRequestInterceptor() {

}


@Configuration
@ConditionalOnProperty(value = "zuul.ribbonIsolationStrategy", havingValue = "THREAD")
public static class HystrixConfiguration extends HystrixGrayAutoConfiguration {

}

}
2 changes: 1 addition & 1 deletion spring-cloud-gray-client/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<parent>
<artifactId>spring-cloud-gray</artifactId>
<groupId>cn.springcloud.gray</groupId>
<version>A.1.0.1</version>
<version>A.1.0.3</version>
</parent>
<modelVersion>4.0.0</modelVersion>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,16 @@
import cn.springcloud.gray.communication.InformationClient;
import cn.springcloud.gray.decision.GrayDecisionFactoryKeeper;

import java.util.List;

public abstract class AbstractCommunicableGrayManager extends SimpleGrayManager implements CommunicableGrayManager {

private GrayClientConfig grayClientConfig;
private InformationClient informationClient;

public AbstractCommunicableGrayManager(
GrayClientConfig grayClientConfig, GrayDecisionFactoryKeeper grayDecisionFactoryKeeper,
List<RequestInterceptor> requestInterceptors, InformationClient informationClient) {
super(grayDecisionFactoryKeeper, requestInterceptors);
GrayClientConfig grayClientConfig,
GrayDecisionFactoryKeeper grayDecisionFactoryKeeper,
InformationClient informationClient) {
super(grayDecisionFactoryKeeper);
this.grayClientConfig = grayClientConfig;
this.informationClient = informationClient;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
package cn.springcloud.gray;

import cn.springcloud.gray.decision.GrayDecision;
import cn.springcloud.gray.decision.MultiGrayDecision;
import cn.springcloud.gray.decision.factory.GrayDecisionFactory;
import cn.springcloud.gray.decision.GrayDecisionFactoryKeeper;
import cn.springcloud.gray.decision.MultiGrayDecision;
import cn.springcloud.gray.model.DecisionDefinition;
import cn.springcloud.gray.model.GrayInstance;
import cn.springcloud.gray.model.PolicyDefinition;
Expand All @@ -26,11 +25,11 @@ public abstract class AbstractGrayManager implements GrayManager {

private GrayDecisionFactoryKeeper grayDecisionFactoryKeeper;
private Map<String, List<RequestInterceptor>> requestInterceptors = new HashMap<>();
private List<RequestInterceptor> communalRequestInterceptors = ListUtils.EMPTY_LIST;


public AbstractGrayManager(
GrayDecisionFactoryKeeper grayDecisionFactoryKeeper, List<RequestInterceptor> requestInterceptors) {
initRequestInterceptors(requestInterceptors);
GrayDecisionFactoryKeeper grayDecisionFactoryKeeper) {
this.grayDecisionFactoryKeeper = grayDecisionFactoryKeeper;
}

Expand All @@ -39,7 +38,7 @@ public AbstractGrayManager(
public List<RequestInterceptor> getRequeestInterceptors(String interceptroType) {
List<RequestInterceptor> list = requestInterceptors.get(interceptroType);
if (list == null) {
return ListUtils.EMPTY_LIST;
return communalRequestInterceptors;
}
return list;
}
Expand Down Expand Up @@ -78,31 +77,35 @@ private GrayDecision createGrayDecision(PolicyDefinition policyDefinition) {
}


private void initRequestInterceptors(List<RequestInterceptor> requestInterceptors) {
if (requestInterceptors == null || requestInterceptors.isEmpty()) {
return;
}
public void setRequestInterceptors(Collection<RequestInterceptor> requestInterceptors) {
Map<String, List<RequestInterceptor>> requestInterceptorMap = new HashMap<>();
List<RequestInterceptor> all = new ArrayList<>();
for (RequestInterceptor interceptor : requestInterceptors) {
if (StringUtils.equals(interceptor.interceptroType(), "all")) {
all.add(interceptor);
} else {
List<RequestInterceptor> interceptors = this.requestInterceptors.get(interceptor.interceptroType());
if (interceptors == null) {
interceptors = new ArrayList<>();
this.requestInterceptors.put(interceptor.interceptroType(), interceptors);
if (CollectionUtils.isNotEmpty(requestInterceptors)) {
for (RequestInterceptor interceptor : requestInterceptors) {
if (StringUtils.equals(interceptor.interceptroType(), "all")) {
all.add(interceptor);
} else {
List<RequestInterceptor> interceptors = requestInterceptorMap.get(interceptor.interceptroType());
if (interceptors == null) {
interceptors = new ArrayList<>();
requestInterceptorMap.put(interceptor.interceptroType(), interceptors);
}
interceptors.add(interceptor);
}
interceptors.add(interceptor);
}
putTypeAllTo(requestInterceptorMap, all);
this.communalRequestInterceptors = all;
}
putTypeAllTo(all);
this.communalRequestInterceptors = all;
this.requestInterceptors = requestInterceptorMap;

}

private void putTypeAllTo(List<RequestInterceptor> all) {
private void putTypeAllTo(Map<String, List<RequestInterceptor>> requestInterceptorMap, List<RequestInterceptor> all) {
if (all.isEmpty()) {
return;
}
requestInterceptors.values().forEach(list -> {
requestInterceptorMap.values().forEach(list -> {
list.addAll(all);
OrderComparator.sort(list);
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,24 @@ public DefaultGrayManager(
GrayClientConfig grayClientConfig,
GrayLoadProperties grayLoadProperties,
GrayDecisionFactoryKeeper grayDecisionFactoryKeeper,
List<RequestInterceptor> requestInterceptors,
InformationClient informationClient) {
super(grayClientConfig, grayDecisionFactoryKeeper, requestInterceptors, informationClient);
super(grayClientConfig, grayDecisionFactoryKeeper, informationClient);
this.grayLoadProperties = grayLoadProperties;
// openForWork();
}

@Override
public void setup() {
super.setup();
openForWork();
}

@Override
public void shutdown() {
super.shutdown();
updateTimer.cancel();
}

public void openForWork() {
log.info("拉取灰度列表");
if (getGrayInformationClient() != null) {
Expand Down
Loading