|
|
3 years ago | |
|---|---|---|
| .. | ||
| base | 3 years ago | |
| feature1 | 3 years ago | |
| feature2 | 3 years ago | |
| featureenv-gateway | 3 years ago | |
| imgs | 3 years ago | |
| README-zh.md | 3 years ago | |
| README.md | 3 years ago | |
| pom.xml | 3 years ago | |
README.md
A Multi-Feature Environment Example
English | 简体中文
I. Deployment Structure
As shown in the figure above, there are three environments.
baselineenvironment, includingFrontService,MiddleService,BackendServicefeature1environment, includingMiddleService,BackendServicefeature2environment, includingFrontService,BackendService
And at the entrance, deploy the gateway service.
Three request links.
baselineenvironment link,Gateway->FrontService(baseline) ->MiddleService(baseline) ->BackendService( baseline)feature1environment link,Gateway->FrontService(baseline) ->MiddleService(feature1) ->BackendService( feature1)feature2environment link,Gateway->FrontService(feature2) ->MiddleService(baseline) ->BackendService( feature2)
II. Running
Without any code changes, just start all the applications under base, feature1, feature2, featureenv-gateway
directly.
By default, the applications point to the official Polaris experience environment, and you can directly view the service registration data at the experience site after a successful launch.
- Console address: http://14.116.241.63:8080/
- Account:polaris
- Password: polaris
III. Testing
Mode 1: Client Request With featureenv Label
baseline environment link
curl http://127.0.0.1:9999/featureenv-front-example/router/rest
Response results (base indicates baseline environment)
featureenv-front-example[base] -> featureenv-middle-example[base] -> featureenv-backend-example[base]
feature1 environment link
Specify the feature environment via the X-Polaris-Metadata-Transitive-featureenv request header.
curl -H'X-Polaris-Metadata-Transitive-featureenv:feature1' http://127.0.0.1:9999/featureenv-front-example/router/rest
Response results
featureenv-front-example[base] -> featureenv-middle-example[feature1] -> featureenv-backend-example[feature1]
feature2 environment link
Specify the feature environment via the X-Polaris-Metadata-Transitive-featureenv request header.
curl -H'X-Polaris-Metadata-Transitive-featureenv:feature2' http://127.0.0.1:9999/featureenv-front-example/router/rest
Response results
featureenv-front-example[feature2] -> featureenv-middle-example[base] -> featureenv-backend-example[feature2]
Mode 2: Gateway traffic staining
Simulate a real-world scenario, assuming that the client request has a uid request parameter and expects:
uid=1000requests hit thefeature1environmentuid=2000requests hit thefeature2environment- requests with other uid hit the
baselineenvironment
Configure coloring rules
Polaris Configuration Address:http://14.116.241.63:8080/#/filegroup-detail?group=featureenv-gateway&namespace=default
Modify the rule/staining.json configuration file and fill in the following rule:
{
"rules": [
{
"conditions": [
{
"key": "${http.query.uid}",
"values": [
"1000"
],
"operation": "EQUALS"
}
],
"labels": [
{
"key": "featureenv",
"value": "feature1"
}
]
},
{
"conditions": [
{
"key": "${http.query.uid}",
"values": [
"2000"
],
"operation": "EQUALS"
}
],
"labels": [
{
"key": "featureenv",
"value": "feature2"
}
]
}
]
}
Just fill out and publish the configuration.
baseline Environment Link
curl http://127.0.0.1:9999/featureenv-front-example/router/rest?uid=3000
Response results (base indicates baseline environment)
featureenv-front-example[base] -> featureenv-middle-example[base] -> featureenv-backend-example[base]
feature1 Environment Link
Specify the feature environment via the X-Polaris-Metadata-Transitive-featureenv request header.
curl http://127.0.0.1:9999/featureenv-front-example/router/rest?uid=1000
Response results
featureenv-front-example[base] -> featureenv-middle-example[feature1] -> featureenv-backend-example[feature1]
feature2 Environment Link
Specify the feature environment via the X-Polaris-Metadata-Transitive-featureenv request header.
curl http://127.0.0.1:9999/featureenv-front-example/router/rest?uid=2000
Response results
featureenv-front-example[feature2] -> featureenv-middle-example[base] -> featureenv-backend-example[feature2]