Nginx 灰度發佈(基於cookies)

背景介紹

灰度發佈,主要任務是從產品用戶羣中按照必定策略選取部分用戶,讓他們先行體驗新功能或版本。html

灰度做用

及早得到用戶的意見反饋,完善產品功能,提高產品質量
讓用戶參與產品測試,增強與用戶互動
下降產品升級所影響的用戶範圍前端

灰度策略

其實就是什麼的請求應該路由到咱們的灰度版本(灰度機器)上來。這個每每是業務強相關的。好比對於API來講,通常有以下幾個需求:nginx

基於用戶標識
基於用戶IP bash

……服務器

灰度實現方式

灰度發佈通常有三種方式 nginx+lua,nginx根據cookie分流,nginx 根據權重來分配
nginx+lua根據來訪者ip地址區分,因爲公司出口是一個ip地址,會出現訪問網站要麼都是老版,要麼都是新版,採用這種方式並不適合
nginx 根據權重來分配,實現很簡單,也能夠嘗試
nginx根據cookie分流,灰度發佈基於用戶才更合理cookie

灰度實施

nginx基於用戶標識的灰度發佈才更合理

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

相關文章
相關標籤/搜索