灰度發佈,主要任務是從產品用戶羣中按照必定策略選取部分用戶,讓他們先行體驗新功能或版本。html
及早得到用戶的意見反饋,完善產品功能,提高產品質量
讓用戶參與產品測試,增強與用戶互動
下降產品升級所影響的用戶範圍前端
其實就是什麼的請求應該路由到咱們的灰度版本(灰度機器)上來。這個每每是業務強相關的。好比對於API來講,通常有以下幾個需求:nginx
基於用戶標識
基於用戶IP bash
……服務器
灰度發佈通常有三種方式 nginx+lua,nginx根據cookie分流,nginx 根據權重來分配
nginx+lua根據來訪者ip地址區分,因爲公司出口是一個ip地址,會出現訪問網站要麼都是老版,要麼都是新版,採用這種方式並不適合
nginx 根據權重來分配,實現很簡單,也能夠嘗試
nginx根據cookie分流,灰度發佈基於用戶才更合理cookie
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
upstream A {
server 127.0.0.1:8360;
}
upstream B {
server 127.0.0.1:8361;
}
server {
listen 80;
server_name localhost;
set
$group A;
if
($http_cookie ~*
"version_id=new"
){
set
$group B;
}
location / {
proxy_pass http:
//
$group;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
index index.html index.htm;
}
}
|
前端nginx服務器監聽端口80,須要根據cookie轉發,查詢的cookie的鍵(key)爲"version_id(該鍵由開發負責增長),若是該cookie值(value)爲new則轉發到B,其餘則轉發到A。
ide