# Spring Cloud Polaris Gray Release Example
English | [简体中文](./README-zh.md)
## Project Explanation
This project shows how to use Spring Cloud Tencent route and transitive feature to do the full chain gray releasing.
## Architecture
![](https://qcloudimg.tencent-cloud.cn/raw/488182fd3001b3e77d9450e2c8798ff3.png)
Incoming requests dispatched from Gateway service to 3 environments:
- gray1(match uid=1), env=green(green environment)
- gray2(match uid=2), env=purple(purple environment)
- baseline(stable environment, match all other requests), env=blue(blue environment)
## How to access
### Start Gateway service
1. add environment variables
- polaris server address: polaris_address=grpc://127.0.0.1:8091
- pushgateway address: prometheus_address=127.0.0.1:9091
2. start router-grayrelease-gateway application
- Launch by IDE: Start the main class `GrayReleaseGatewayApplication`.
- Launch by Jar: Execute `mvn clean package` to compile with jar package, then use `java -jar router-grayrelease-gateway-${verion}.jar` to launch application.
3. add the route rule
Send http request to polaris server to add the route rule, make requests dispatched to 3 environments.
````
POST /naming/v1/routings
[{
"service": "gray-release-gateway",
"namespace": "default",
"outbounds": [
{
"sources": [
{
"service": "gray-release-gateway",
"namespace": "default",
"metadata": {
"${http.header.uid}": {
"type": "EXACT",
"value": "2"
}
}
}],
"destinations": [
{
"service": "*",
"namespace": "*",
"metadata": {
"env": {
"type": "EXACT",
"value": "purple"
}
},
"priority": 0,
"weight": 100,
"isolate": false
}]
},
{
"sources": [
{
"service": "gray-release-gateway",
"namespace": "default",
"metadata": {
"${http.header.uid}": {
"type": "EXACT",
"value": "1"
}
}
}],
"destinations": [
{
"service": "*",
"namespace": "*",
"metadata": {
"env": {
"type": "EXACT",
"value": "green"
}
},
"priority": 0,
"weight": 100,
"isolate": false
}]
},
{
"sources": [
{
"service": "gray-release-gateway",
"namespace": "default",
"metadata": {
"*": {
"type": "EXACT",
"value": "*"
}
}
}],
"destinations": [
{
"service": "*",
"namespace": "*",
"metadata": {
"env": {
"type": "EXACT",
"value": "blue"
}
},
"priority": 0,
"weight": 100,
"isolate": false
}]
}
]
}]
````
The route rule can be added by polaris console:
![](https://qcloudimg.tencent-cloud.cn/raw/28e3d734c4b73624869a5b9b7059b118.png)
### Start Front service
#### Start baseline environment (blue)
1. add environment variables
- polaris server address: polaris_address=grpc://127.0.0.1:8091
- pushgateway address: prometheus_address=127.0.0.1:9091
- env tag: SCT_METADATA_CONTENT_env=blue
- transitive tag: SCT_METADATA_CONTENT_TRANSITIVE=env
2. start router-grayrelease-frontend application
- Launch by IDE: Start the main class `GrayReleaseFrontApplication`.
- Launch by Jar: Execute `mvn clean package` to compile with jar package, then use `java -jar router-grayrelease-frontend-${verion}.jar` to launch application.
#### Start gray1 environment (green)
1. add environment variables
- polaris server address: polaris_address=grpc://127.0.0.1:8091
- pushgateway address: prometheus_address=127.0.0.1:9091
- env tag: SCT_METADATA_CONTENT_env=green
- transitive tag: SCT_METADATA_CONTENT_TRANSITIVE=env
2. start router-grayrelease-frontend application (same as previous instruction)
If port conflicted, you can specify another port by -Dserver.port
#### Start gray2 environment (purple)
1. add environment variables
- polaris server address: polaris_address=grpc://127.0.0.1:8091
- pushgateway address: prometheus_address=127.0.0.1:9091
- env tag: SCT_METADATA_CONTENT_env=purple
- transitive tag: SCT_METADATA_CONTENT_TRANSITIVE=env
2. start router-grayrelease-frontend application (same as previous instruction)
#### Start effective
You can find the instances with different tags in polaris console.
![](https://qcloudimg.tencent-cloud.cn/raw/96d2bdd2fb3495f737ab278e31a4a2e7.png)
### Start Middle service
#### Start baseline environment (blue)
1. add environment variables
- polaris server address: polaris_address=grpc://127.0.0.1:8091
- pushgateway address: prometheus_address=127.0.0.1:9091
- env tag: SCT_METADATA_CONTENT_env=blue
- transitive tag: SCT_METADATA_CONTENT_TRANSITIVE=env
2. start router-grayrelease-middle application
- Launch by IDE: Start the main class `GrayReleaseMiddleApplication`.
- Launch by Jar: Execute `mvn clean package` to compile with jar package, then use `java -jar router-grayrelease-middle-${verion}.jar` to launch application.
#### Start gray2 environment (purple)
1. add environment variables
- polaris server address: polaris_address=grpc://127.0.0.1:8091
- pushgateway address: prometheus_address=127.0.0.1:9091
- env tag: SCT_METADATA_CONTENT_env=purple
- transitive tag: SCT_METADATA_CONTENT_TRANSITIVE=env
2. start router-grayrelease-middle application (same as previous instruction)
### Start Back service
#### Start baseline environment (blue)
1. add environment variables
- polaris server address: polaris_address=grpc://127.0.0.1:8091
- pushgateway address: prometheus_address=127.0.0.1:9091
- env tag: SCT_METADATA_CONTENT_env=blue
- transitive tag: SCT_METADATA_CONTENT_TRANSITIVE=env
2. start router-grayrelease-backend application
- Launch by IDE: Start the main class `GrayReleaseBackendApplication`.
- Launch by Jar: Execute `mvn clean package` to compile with jar package, then use `java -jar router-grayrelease-backend-${verion}.jar` to launch application.
#### Start gray1 environment (green)
1. add environment variables
- polaris server address: polaris_address=grpc://127.0.0.1:8091
- pushgateway address: prometheus_address=127.0.0.1:9091
- env tag: SCT_METADATA_CONTENT_env=green
- transitive tag: SCT_METADATA_CONTENT_TRANSITIVE=env
2. start router-grayrelease-backend application (same as previous instruction)
### Test
#### Baseline routing
````
curl -H'uid:0' 127.0.0.1:59100/router/gray/route_rule
````
Got result
````
gray-release-gateway -> gray-release-front[blue] -> gray-release-middle[blue] -> gray-release-back[blue]
````
#### Green routing
````
curl -H'uid:1' 127.0.0.1:59100/router/gray/route_rule
````
Got result
````
gray-release-gateway -> gray-release-front[green] -> gray-release-middle[blue] -> gray-release-back[green]
````
#### Purple routing
````
curl -H'uid:2' 127.0.0.1:59100/router/gray/route_rule
````
Got result
````
gray-release-gateway -> gray-release-front[purple] -> gray-release-middle[purple] -> gray-release-back[blue]
````
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
包含核心的服务注册发现、配置中心、限流、路由、熔断等常用的服务治理能力。Spring Cloud Tencent 是基于 Spring Cloud SPI 实现的一站式微服务解决方案。通过集成 Spring Cloud 和腾讯中间件,让分布式服务和微服务的开发、测试、发布和运维变得更加简单
资源推荐
资源详情
资源评论
收起资源包目录
基于SpringCloudSPI实现的一站式微服务解决方案,含核心的服务注册发现、配置中心、限流、路由、熔断等常用的服务治理能力 (677个子文件)
mvnw.cmd 7KB
Dockerfile 565B
Dockerfile 564B
Dockerfile 564B
Dockerfile 563B
.editorconfig 372B
spring.factories 1KB
spring.factories 709B
spring.factories 579B
spring.factories 501B
spring.factories 490B
spring.factories 485B
spring.factories 482B
spring.factories 464B
spring.factories 308B
spring.factories 285B
spring.factories 135B
spring.factories 131B
spring.factories 128B
.gitignore 652B
reject-tips.html 77B
maven-wrapper.jar 57KB
PolarisRouterServiceInstanceListSupplierTest.java 17KB
PolarisConfigDataLoaderTest.java 16KB
StaticMetadataManager.java 16KB
PolarisCircuitBreakerRestTemplateIntegrationTest.java 15KB
PolarisReactiveLoadBalancerClientFilter.java 13KB
PolarisEnhancedPluginUtilsTest.java 12KB
PolarisConfigDataLocationResolver.java 12KB
PolarisEnhancedPluginUtils.java 12KB
StaticMetadataManagerTest.java 11KB
PolarisCircuitBreakerFilterFactory.java 11KB
QuotaCheckServletFilterTest.java 11KB
PolarisServiceRegistry.java 11KB
RpcEnhancementAutoConfiguration.java 11KB
PolarisConfigFileLocator.java 11KB
QuotaCheckReactiveFilterTest.java 11KB
PolarisCircuitBreakerFeignIntegrationTest.java 10KB
PolarisConfigListenerContext.java 10KB
PolarisCircuitBreakerGatewayIntegrationTest.java 10KB
PolarisConfigFilePuller.java 10KB
ExpressionLabelUtilsTest.java 10KB
PolarisConfigFileLocatorTest.java 10KB
SpringValueProcessorTest.java 9KB
SpringValueProcessor.java 9KB
PolarisReactiveLoadBalancerClientFilterTest.java 9KB
PolarisConfigFilePullerTest.java 9KB
PolarisRegistrationTest.java 9KB
PolarisRegistration.java 8KB
PolarisRouterServiceInstanceListSupplier.java 8KB
PolarisConfigRefreshOptimizationListener.java 8KB
PolarisSwaggerAutoConfiguration.java 8KB
RouterLabelRestTemplateInterceptorTest.java 7KB
EnhancedPluginContextTest.java 7KB
PolarisFeignCircuitBreakerInvocationHandler.java 7KB
RateLimitRuleArgumentReactiveResolverTest.java 7KB
MetadataContext.java 7KB
PolarisWeightedRandomLoadBalancerTest.java 7KB
PlaceholderHelper.java 7KB
RateLimitRuleArgumentServletResolverTest.java 7KB
PackageUtil.java 7KB
PolarisConfigRefreshOptimizationListenerTriggeredTest.java 7KB
EnhancedFeignClientTest.java 7KB
PolarisCircuitBreakerMockServerTest.java 7KB
RouterLabelRestTemplateInterceptor.java 7KB
PolarisLoadBalancerClientConfiguration.java 7KB
PolarisConfigRefreshOptimizationListenerNotTriggeredTest.java 7KB
RuleStainingExecutorTest.java 7KB
PolarisConfigDataLoader.java 6KB
TrafficStainingGatewayFilterTest.java 6KB
ConfigurationModifier.java 6KB
QuotaCheckReactiveFilter.java 6KB
PolarisContractReporter.java 6KB
ServiceRuleManagerTest.java 6KB
MetadataTransferAutoConfiguration.java 6KB
PolarisConfigPropertyAutoRefresher.java 6KB
CalleeControllerTests.java 6KB
RouterAutoConfiguration.java 6KB
PolarisSDKContextManager.java 6KB
QuotaCheckServletFilter.java 6KB
PolarisCircuitBreakerRestTemplateBeanPostProcessor.java 6KB
PolarisServiceRegistryTest.java 6KB
SpringWebExpressionLabelUtils.java 6KB
PolarisRingHashLoadBalancerTest.java 6KB
RouterLabelFeignInterceptorTest.java 6KB
QuickstartCalleeController.java 6KB
EnhancedGatewayGlobalFilterTest.java 6KB
MetadataContextHolder.java 6KB
NacosConfigModifier.java 5KB
SuccessCircuitBreakerReporterTest.java 5KB
PolarisDiscoveryProperties.java 5KB
FeignExpressionLabelUtilsTest.java 5KB
PolarisConfigAutoConfiguration.java 5KB
PolarisConfigChangeEventListener.java 5KB
PolarisRateLimitAutoConfiguration.java 5KB
QuickstartCallerController.java 5KB
EnhancedRestTemplateInterceptorTest.java 5KB
EnhancedWebClientExchangeFilterFunctionTest.java 5KB
WebMvcRequestHandler.java 5KB
ExceptionPolarisReporterTest.java 5KB
共 677 条
- 1
- 2
- 3
- 4
- 5
- 6
- 7
资源评论
Java程序员-张凯
- 粉丝: 1w+
- 资源: 6742
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功