Commit 7a06fe7c by Nepxion

增加网关层灰度发布的示例

parent 147b49d5
...@@ -49,6 +49,11 @@ ...@@ -49,6 +49,11 @@
<groupId>org.springframework.cloud</groupId> <groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId> <artifactId>spring-cloud-starter-feign</artifactId>
</dependency> </dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zuul</artifactId>
</dependency>
</dependencies> </dependencies>
<build> <build>
......
package com.nepxion.discovery.plugin.example;
/**
* <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 org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.feign.EnableFeignClients;
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class DiscoveryApplicationA2 {
public static void main(String[] args) {
System.setProperty("spring.profiles.active", "a2");
new SpringApplicationBuilder(DiscoveryApplicationA2.class).run(args);
}
}
\ No newline at end of file
...@@ -13,9 +13,6 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; ...@@ -13,9 +13,6 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.feign.EnableFeignClients; import org.springframework.cloud.netflix.feign.EnableFeignClients;
import org.springframework.context.annotation.Bean;
import com.nepxion.discovery.plugin.example.adapter.DiscoveryConfigAdapter;
@SpringBootApplication @SpringBootApplication
@EnableDiscoveryClient @EnableDiscoveryClient
...@@ -26,9 +23,4 @@ public class DiscoveryApplicationB1 { ...@@ -26,9 +23,4 @@ public class DiscoveryApplicationB1 {
new SpringApplicationBuilder(DiscoveryApplicationB1.class).run(args); new SpringApplicationBuilder(DiscoveryApplicationB1.class).run(args);
} }
@Bean
public DiscoveryConfigAdapter discoveryConfigAdapter() {
return new DiscoveryConfigAdapter();
}
} }
\ No newline at end of file
...@@ -13,9 +13,6 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; ...@@ -13,9 +13,6 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.feign.EnableFeignClients; import org.springframework.cloud.netflix.feign.EnableFeignClients;
import org.springframework.context.annotation.Bean;
import com.nepxion.discovery.plugin.example.adapter.DiscoveryConfigAdapter;
@SpringBootApplication @SpringBootApplication
@EnableDiscoveryClient @EnableDiscoveryClient
...@@ -26,9 +23,4 @@ public class DiscoveryApplicationB2 { ...@@ -26,9 +23,4 @@ public class DiscoveryApplicationB2 {
new SpringApplicationBuilder(DiscoveryApplicationB2.class).run(args); new SpringApplicationBuilder(DiscoveryApplicationB2.class).run(args);
} }
@Bean
public DiscoveryConfigAdapter discoveryConfigAdapter() {
return new DiscoveryConfigAdapter();
}
} }
\ No newline at end of file
...@@ -13,9 +13,6 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; ...@@ -13,9 +13,6 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.feign.EnableFeignClients; import org.springframework.cloud.netflix.feign.EnableFeignClients;
import org.springframework.context.annotation.Bean;
import com.nepxion.discovery.plugin.example.adapter.DiscoveryConfigAdapter;
@SpringBootApplication @SpringBootApplication
@EnableDiscoveryClient @EnableDiscoveryClient
...@@ -26,9 +23,4 @@ public class DiscoveryApplicationC1 { ...@@ -26,9 +23,4 @@ public class DiscoveryApplicationC1 {
new SpringApplicationBuilder(DiscoveryApplicationC1.class).run(args); new SpringApplicationBuilder(DiscoveryApplicationC1.class).run(args);
} }
@Bean
public DiscoveryConfigAdapter discoveryConfigAdapter() {
return new DiscoveryConfigAdapter();
}
} }
\ No newline at end of file
...@@ -13,9 +13,6 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; ...@@ -13,9 +13,6 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.feign.EnableFeignClients; import org.springframework.cloud.netflix.feign.EnableFeignClients;
import org.springframework.context.annotation.Bean;
import com.nepxion.discovery.plugin.example.adapter.DiscoveryConfigAdapter;
@SpringBootApplication @SpringBootApplication
@EnableDiscoveryClient @EnableDiscoveryClient
...@@ -26,9 +23,4 @@ public class DiscoveryApplicationC2 { ...@@ -26,9 +23,4 @@ public class DiscoveryApplicationC2 {
new SpringApplicationBuilder(DiscoveryApplicationC2.class).run(args); new SpringApplicationBuilder(DiscoveryApplicationC2.class).run(args);
} }
@Bean
public DiscoveryConfigAdapter discoveryConfigAdapter() {
return new DiscoveryConfigAdapter();
}
} }
\ No newline at end of file
...@@ -13,9 +13,6 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; ...@@ -13,9 +13,6 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.feign.EnableFeignClients; import org.springframework.cloud.netflix.feign.EnableFeignClients;
import org.springframework.context.annotation.Bean;
import com.nepxion.discovery.plugin.example.adapter.DiscoveryConfigAdapter;
@SpringBootApplication @SpringBootApplication
@EnableDiscoveryClient @EnableDiscoveryClient
...@@ -26,9 +23,4 @@ public class DiscoveryApplicationC3 { ...@@ -26,9 +23,4 @@ public class DiscoveryApplicationC3 {
new SpringApplicationBuilder(DiscoveryApplicationC3.class).run(args); new SpringApplicationBuilder(DiscoveryApplicationC3.class).run(args);
} }
@Bean
public DiscoveryConfigAdapter discoveryConfigAdapter() {
return new DiscoveryConfigAdapter();
}
} }
\ No newline at end of file
package com.nepxion.discovery.plugin.example;
/**
* <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 org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
@SpringBootApplication
@EnableDiscoveryClient
@EnableZuulProxy
public class DiscoveryApplicationZuul {
public static void main(String[] args) {
System.setProperty("spring.profiles.active", "zuul");
new SpringApplicationBuilder(DiscoveryApplicationZuul.class).run(args);
}
}
\ No newline at end of file
...@@ -10,11 +10,12 @@ package com.nepxion.discovery.plugin.example.feign; ...@@ -10,11 +10,12 @@ package com.nepxion.discovery.plugin.example.feign;
*/ */
import org.springframework.cloud.netflix.feign.FeignClient; import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestMethod;
@FeignClient(value = "discovery-springcloud-example-a") @FeignClient(value = "discovery-springcloud-example-a")
public interface AFeign { public interface AFeign {
@RequestMapping(path = "/invoke", method = RequestMethod.GET) @RequestMapping(path = "/invoke", method = RequestMethod.POST)
String invoke(); String invoke(@RequestBody String value);
} }
\ No newline at end of file
...@@ -9,10 +9,9 @@ package com.nepxion.discovery.plugin.example.feign; ...@@ -9,10 +9,9 @@ package com.nepxion.discovery.plugin.example.feign;
* @version 1.0 * @version 1.0
*/ */
import java.util.UUID;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import com.nepxion.discovery.plugin.framework.constant.PluginConstant; import com.nepxion.discovery.plugin.framework.constant.PluginConstant;
...@@ -24,8 +23,7 @@ public class AFeignImpl extends AbstractFeignImpl implements AFeign { ...@@ -24,8 +23,7 @@ public class AFeignImpl extends AbstractFeignImpl implements AFeign {
private BFeign bFeign; private BFeign bFeign;
@Override @Override
public String invoke() { public String invoke(@RequestBody String value) {
String value = "start[" + UUID.randomUUID().toString() + "]";
value = doInvoke(value); value = doInvoke(value);
value = bFeign.invoke(value); value = bFeign.invoke(value);
......
# Spring cloud config
spring.application.name=discovery-springcloud-example-a
server.port=1101
# Eureka config
eureka.instance.metadataMap.version=1.1
# Consul config
spring.cloud.consul.discovery.tags=version=1.1
# Zookeeper config
spring.cloud.zookeeper.discovery.metadata.version=1.1
# Admin config
management.port=5101
\ No newline at end of file
# Spring cloud config
spring.application.name=discovery-springcloud-example-zuul
server.port=1400
# Eureka config
eureka.instance.metadataMap.version=1.0
# Consul config
spring.cloud.consul.discovery.tags=version=1.0
# Zookeeper config
spring.cloud.zookeeper.discovery.metadata.version=1.0
# Admin config
management.port=5400
# Zool config
zuul.routes.discovery-springcloud-example-a.path=/discovery-springcloud-example-a/**
zuul.routes.discovery-springcloud-example-a.serviceId=discovery-springcloud-example-a
\ No newline at end of file
...@@ -53,6 +53,10 @@ ...@@ -53,6 +53,10 @@
<!-- 1. 消费端的application.properties未定义版本号,则该消费端可以访问提供端任何版本 --> <!-- 1. 消费端的application.properties未定义版本号,则该消费端可以访问提供端任何版本 -->
<!-- 2. 提供端的application.properties未定义版本号,当消费端在xml里不做任何版本配置,才可以访问该提供端 --> <!-- 2. 提供端的application.properties未定义版本号,当消费端在xml里不做任何版本配置,才可以访问该提供端 -->
<version> <version>
<!-- 表示网关z的1.0,允许访问提供端服务a的1.0版本 -->
<service consumer-service-name="discovery-springcloud-example-zuul" provider-service-name="discovery-springcloud-example-a" consumer-version-value="1.0" provider-version-value="1.0"/>
<!-- 表示网关z的1.1,允许访问提供端服务a的1.1版本 -->
<service consumer-service-name="discovery-springcloud-example-zuul" provider-service-name="discovery-springcloud-example-a" consumer-version-value="1.1" provider-version-value="1.1"/>
<!-- 表示消费端服务a的1.0,允许访问提供端服务b的1.0版本 --> <!-- 表示消费端服务a的1.0,允许访问提供端服务b的1.0版本 -->
<service consumer-service-name="discovery-springcloud-example-a" provider-service-name="discovery-springcloud-example-b" consumer-version-value="1.0" provider-version-value="1.0"/> <service consumer-service-name="discovery-springcloud-example-a" provider-service-name="discovery-springcloud-example-b" consumer-version-value="1.0" provider-version-value="1.0"/>
<!-- 表示消费端服务a的1.1,允许访问提供端服务b的1.1版本 --> <!-- 表示消费端服务a的1.1,允许访问提供端服务b的1.1版本 -->
......
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