91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

基于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

扬州市| 荣昌县| 西乌珠穆沁旗| 鹤山市| 东源县| 若尔盖县| 湖口县| 庐江县| 大同市| 玛沁县| 登封市| 洪洞县| 荆门市| 曲周县| 岳池县| 壶关县| 建水县| 海伦市| 河南省| 电白县| 泾川县| 深州市| 莒南县| 中江县| 清镇市| 安西县| 大庆市| 上虞市| 西乌珠穆沁旗| 永川市| 惠东县| 大洼县| 东丽区| 资讯| 中山市| 宁化县| 洛浦县| 望城县| 五台县| 万载县| 定日县|