中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

基于cookie在nginx實現業務灰度發布

發布時間:2020-06-16 03:36:24 來源:網絡 閱讀:12798 作者:雙魚座小龍 欄目:建站服務器

基于cookie在nginx實現業務灰度發布




背景



灰度發布是指在黑與白之間,能夠平滑過渡的一種發布方式。

灰度發布可以保證整體系統的穩定,

在初始灰度的時候就可以發現、調整問題,以保證其影響度。


業務存在灰度發布的需求,

可以通過nginx+lua形式實現業務的灰度發布,

目前這一形式已在廣平互動廣告相關業務已經實現。




流程




用戶使用帳號登錄后,判斷用戶帳號是否在灰度發布的名單中,如果再則給用戶的cookie中增加灰度發布標識,然后刷新頁面。


當用戶訪問頁面時,業務接入層的nginx方向代理會根據用戶cookie是否帶著灰度標識而對用戶的請求進行選擇,是轉發到所有后端機器還是指定的灰度發布機器。





方案



業務維護一個用戶帳號的灰度名單,在程序里面實現灰度帳號登錄時cookie里面種相應的標識。

用戶請求發起時,nginx反向代理接入層通過獲取請求中帶的cookie的相關變量來判斷當前請求是發往全量的服務器,還是發往灰度的服務器。



灰度處理邏輯



基于cookie在nginx實現業務灰度發布



nginx接入層



基于cookie在nginx實現業務灰度發布




配置實例




nginx配置靜態頁面的灰度規則


server 

{

listen 80; 

server_name test.qunyingliu.qq.com; 

access_log logs/test.qunyingliu.qq.com.access.log access;


設置默認為全量發布

set $group "Full"; 


判斷cookie中是否有灰度標識號

if ($http_cookie ~* "FC_GREY=1"){ 

set $group Grey;

}


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配置PHP頁面的灰度規則



location @grey {

proxy_next_upstream http_500 http_502 http_503 http_504 error timeout invalid_header;

add_header ENV 'grey';

proxy_pass http://Grey;

}


location @full {

proxy_next_upstream http_500 http_502 http_503 http_504 error timeout invalid_header;

add_header ENV 'full';

proxy_pass http://FULL;

}



location ~ \.(php)?$ {

content_by_lua_file "conf/lua/test.qunyingliu.qq.com.lua";

}




test.qunyingliu.qq.com.lua:


local ck = require "resty.cookie"

local grey_cookie_key = "FC_GREY"

local cookie, err = ck:new()

if not cookie then

ngx.exec("@full")

else

local field, err = cookie:get(grey_cookie_key)

if not field then

ngx.exec("@full")

else

ngx.exec("@grey")

end

end



灰度驗證




1.瀏覽器控制臺設置灰度cookie

console---> setCookie('FC_GREY',1)


基于cookie在nginx實現業務灰度發布

基于cookie在nginx實現業務灰度發布





2.chrome擴展:EditThisCookie--->"+"---->添加新cookie


基于cookie在nginx實現業務灰度發布


3.業務里面給用戶設置cookie




總結


需要業務端配合才能實現自動的灰度發布,

主要規則是在nginx上使用lua腳本進行處理,

請求的速度和穩定性可能會收到lua腳本處理的影響,

界面普遍認為nginx+lua是非常好的搭配,

相關開源方案OpenResty也是比較熱門的,

實際效果還需要在業務上線后進行驗證。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

淳化县| 马公市| 枣庄市| 曲周县| 蒲江县| 财经| 鱼台县| 保亭| 马龙县| 台东市| 浦北县| 含山县| 财经| 六枝特区| 温泉县| 西青区| 周宁县| 托里县| 互助| 乌拉特中旗| 巴楚县| 怀仁县| 寿光市| 两当县| 太保市| 荥阳市| 怀集县| 新丰县| 张北县| 苏尼特右旗| 五华县| 兴山县| 普陀区| 龙岩市| 河南省| 临桂县| 祁门县| 娄烦县| 山丹县| 江都市| 临潭县|