Commit 7a06fe7c by Nepxion

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

parent 147b49d5
......@@ -49,6 +49,11 @@
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zuul</artifactId>
</dependency>
</dependencies>
<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;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.feign.EnableFeignClients;
import org.springframework.context.annotation.Bean;
import com.nepxion.discovery.plugin.example.adapter.DiscoveryConfigAdapter;
@SpringBootApplication
@EnableDiscoveryClient
......@@ -26,9 +23,4 @@ public class DiscoveryApplicationB1 {
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;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.feign.EnableFeignClients;
import org.springframework.context.annotation.Bean;
import com.nepxion.discovery.plugin.example.adapter.DiscoveryConfigAdapter;
@SpringBootApplication
@EnableDiscoveryClient
......@@ -26,9 +23,4 @@ public class DiscoveryApplicationB2 {
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;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.feign.EnableFeignClients;
import org.springframework.context.annotation.Bean;
import com.nepxion.discovery.plugin.example.adapter.DiscoveryConfigAdapter;
@SpringBootApplication
@EnableDiscoveryClient
......@@ -26,9 +23,4 @@ public class DiscoveryApplicationC1 {
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;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.feign.EnableFeignClients;
import org.springframework.context.annotation.Bean;
import com.nepxion.discovery.plugin.example.adapter.DiscoveryConfigAdapter;
@SpringBootApplication
@EnableDiscoveryClient
......@@ -26,9 +23,4 @@ public class DiscoveryApplicationC2 {
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;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.feign.EnableFeignClients;
import org.springframework.context.annotation.Bean;
import com.nepxion.discovery.plugin.example.adapter.DiscoveryConfigAdapter;
@SpringBootApplication
@EnableDiscoveryClient
......@@ -26,9 +23,4 @@ public class DiscoveryApplicationC3 {
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;
*/
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.RequestMethod;
@FeignClient(value = "discovery-springcloud-example-a")
public interface AFeign {
@RequestMapping(path = "/invoke", method = RequestMethod.GET)
String invoke();
@RequestMapping(path = "/invoke", method = RequestMethod.POST)
String invoke(@RequestBody String value);
}
\ No newline at end of file
......@@ -9,10 +9,9 @@ package com.nepxion.discovery.plugin.example.feign;
* @version 1.0
*/
import java.util.UUID;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import com.nepxion.discovery.plugin.framework.constant.PluginConstant;
......@@ -24,8 +23,7 @@ public class AFeignImpl extends AbstractFeignImpl implements AFeign {
private BFeign bFeign;
@Override
public String invoke() {
String value = "start[" + UUID.randomUUID().toString() + "]";
public String invoke(@RequestBody String value) {
value = doInvoke(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 @@
<!-- 1. 消费端的application.properties未定义版本号,则该消费端可以访问提供端任何版本 -->
<!-- 2. 提供端的application.properties未定义版本号,当消费端在xml里不做任何版本配置,才可以访问该提供端 -->
<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版本 -->
<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版本 -->
......
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