最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于Nginx實(shí)現(xiàn)灰度發(fā)布的詳細(xì)流程

 更新時(shí)間:2024年05月31日 08:51:12   作者:云牧  
灰度發(fā)布系統(tǒng)的核心是將用戶流量分成不同部分,一部分用戶使用新版本,而另一部分用戶繼續(xù)使用舊版本,其灰度發(fā)布通常是通過 Nginx 實(shí)現(xiàn)的,所以本文給大家介紹了基于Nginx實(shí)現(xiàn)灰度發(fā)布的詳細(xì)流程,需要的朋友可以參考下

灰度發(fā)布概述

軟件開發(fā)過程中,通常不會(huì)直接推出最終版本,而是通過逐步迭代的方式進(jìn)行降低風(fēng)險(xiǎn)。
灰度發(fā)布系統(tǒng)的核心是將用戶流量分成不同部分,一部分用戶使用新版本,而另一部分用戶繼續(xù)使用舊版本。通過控制流量比例,例如最初只有 5% 的用戶使用新版本,如果沒有問題,比例可以逐步提高到 10%、50%,最終實(shí)現(xiàn) 100% 用戶使用新版本。這種方法可以最大程度地減少潛在問題對用戶的影響。
除了逐步推出新版本外,灰度發(fā)布系統(tǒng)還可用于產(chǎn)品的 A/B 測試。通過將流量分成兩部分,一部分用戶使用 A 版本,另一部分用戶使用 B 版本,可以測試哪個(gè)版本更有利于業(yè)務(wù)。

灰度發(fā)布的流程

  • 用戶首次請求時(shí),根據(jù)設(shè)定的比例隨機(jī)設(shè)置 cookie,實(shí)現(xiàn)流量染色。
  • 用戶再次訪問時(shí),根據(jù) cookie 轉(zhuǎn)發(fā)至不同版本的服務(wù)。
  • 后端根據(jù) cookie 請求不同的服務(wù),前端根據(jù) cookie 執(zhí)行不同邏輯。

實(shí)現(xiàn)灰度發(fā)布

其灰度發(fā)布通常是通過 Nginx 實(shí)現(xiàn)的。Nginx 是一個(gè)反向代理服務(wù),可以將用戶請求轉(zhuǎn)發(fā)給具體的應(yīng)用服務(wù)器,這一層也被稱為網(wǎng)關(guān)層。在網(wǎng)關(guān)層,可以控制流量分配,決定哪些流量使用 A 版本,哪些使用 B 版本。

創(chuàng)建 nest

創(chuàng)建個(gè) nest 項(xiàng)目開啟兩個(gè)端口,一個(gè) 3000,一個(gè) 3001:

npx nest new gray_test -p npm

分別訪問返回 Hello111 和 Hello 222:

現(xiàn)在我們就有了兩個(gè)版本的 nest 代碼。

使用 docker 運(yùn)行 nginx 服務(wù)

設(shè)置容器名為 gray1,端口映射宿主機(jī)的 82 到容器內(nèi)的 80:

現(xiàn)在訪問 http://localhost:82/ 就可以看到 nginx 頁面了:

繼續(xù)跑個(gè) nginx 容器:

容器名為 gray2,端口映射 83 到容器內(nèi)的 80。
掛載目錄不變。

修改 Nginx 配置文件,設(shè)置路由規(guī)則,將特定請求轉(zhuǎn)發(fā)給指定的服務(wù)

把配置文件復(fù)制出來:

docker cp gray1:/etc/nginx/conf.d/default.conf ~/nginx-config

編輯復(fù)制文件:

# 定義一個(gè)location塊,用于處理以/api開頭的請求
location ^~ /api {
    # 使用rewrite模塊來重寫請求的URI
    # 將請求中/api/(.*)的部分重寫為/$1,即去掉/api前綴
    # 'break'標(biāo)志表示停止后續(xù)的重寫操作
    rewrite ^/api/(.*)$/$1 break;

    # 將重寫后的請求代理到后端服務(wù)器
    # 請求將被轉(zhuǎn)發(fā)到192.168.0.100:3001這個(gè)地址
    proxy_pass http://192.168.0.100:3001;
}

然后我們訪問下 http://localhost:83/api/:

創(chuàng)建多組 upstream,分別代表不同版本的服務(wù)

之前負(fù)載均衡的時(shí)候,是這么配的:

現(xiàn)在我們需要配置多組 upstream:

# 定義上游服務(wù)器組,用于版本1.0的服務(wù)
upstream version1.0_server {
    server 192.168.0.100:3000; # 指定服務(wù)器IP地址和端口號
}

# 定義上游服務(wù)器組,用于版本2.0的服務(wù)
upstream version2.0_server {
    server 192.168.0.100:3001; # 指定服務(wù)器IP地址和端口號
}

# 定義默認(rèn)的上游服務(wù)器組,當(dāng)請求沒有指定版本時(shí)使用
upstream default {
    server 192.168.0.100:3000; # 指定默認(rèn)的服務(wù)器IP地址和端口號
}

根據(jù)請求中的 cookie 決定流量轉(zhuǎn)發(fā)的版本

set $group "default";
if ($http_cookie ~* "version=1.0"){
    set $group version1.0_server;
}

if ($http_cookie ~* "version=2.0"){
    set $group version2.0_server;
}

location ^~ /api {
    rewrite ^/api/(.*)$ /$1 break;
    proxy_pass http://$group;
}

測試驗(yàn)證

我們重新跑下容器:

訪問 http://localhost:83/api/ 走到的就是默認(rèn)的版本:

帶上 version=2.0 的 cookie,走到的就是另一個(gè)版本的代碼:

以上就是基于Nginx實(shí)現(xiàn)灰度發(fā)布的詳細(xì)流程的詳細(xì)內(nèi)容,更多關(guān)于Nginx灰度發(fā)布的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Nginx中部署Angular項(xiàng)目遇到的坑巨坑

    Nginx中部署Angular項(xiàng)目遇到的坑巨坑

    這篇文章主要介紹了Nginx中部署Angular項(xiàng)目遇到的坑巨坑,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • Nginx的流式響應(yīng)配置小結(jié)

    Nginx的流式響應(yīng)配置小結(jié)

    Nginx的流式響應(yīng)功能是一項(xiàng)非常實(shí)用的特性,它允許Nginx在接收后端服務(wù)器響應(yīng)的同時(shí),逐步將內(nèi)容發(fā)送給客戶端,本文主要介紹了Nginx的流式響應(yīng)配置,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-04-04
  • Nginx實(shí)現(xiàn)UDP四層轉(zhuǎn)發(fā)的過程

    Nginx實(shí)現(xiàn)UDP四層轉(zhuǎn)發(fā)的過程

    為了解決VPN連接速度慢的問題,可以通過Nginx實(shí)現(xiàn)UDP的四層轉(zhuǎn)發(fā),首先檢查Nginx是否安裝了with-stream模塊,然后修改nginx.conf配置文件進(jìn)行UDP端口的轉(zhuǎn)發(fā)設(shè)置,使用nginx-t檢查配置文件語法,無誤后重新加載Nginx,這樣通過國內(nèi)服務(wù)器中轉(zhuǎn),可以提升連接到國外服務(wù)器的速率
    2024-09-09
  • 詳解Linux環(huán)境下使Nginx服務(wù)器支持中文url的配置流程

    詳解Linux環(huán)境下使Nginx服務(wù)器支持中文url的配置流程

    這篇文章主要介紹了Linux環(huán)境下使Nginx服務(wù)器支持中文url的配置流程,文中還介紹了一個(gè)在Linux下將非UTF-8的文件名轉(zhuǎn)換為UTF-8編碼,的方法,需要的朋友可以參考下
    2016-04-04
  • nginx的location的優(yōu)先級和匹配方式

    nginx的location的優(yōu)先級和匹配方式

    location是Nginx中的塊級指令,本文主要介紹了nginx的location的優(yōu)先級和匹配方式,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-10-10
  • Nginx配置動(dòng)態(tài)代理后通過curl訪問報(bào)403問題

    Nginx配置動(dòng)態(tài)代理后通過curl訪問報(bào)403問題

    本文主要介紹了Nginx配置動(dòng)態(tài)代理后通過curl訪問報(bào)403問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • 詳解使用ChatGPT解決Nginx反向代理的問題

    詳解使用ChatGPT解決Nginx反向代理的問題

    這篇文章主要為大家介紹了使用ChatGPT解決Nginx反向代理的問題詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • 隱藏Nginx版本號的方法小結(jié)

    隱藏Nginx版本號的方法小結(jié)

    默認(rèn)情況下,Nginx 會(huì)在響應(yīng)頭里暴露版本號信息,這無疑給潛在的攻擊者提供了便利,畢竟,知道了版本號,就可以針對性地尋找漏洞進(jìn)行攻擊,為了讓自己的服務(wù)器更安全,本文給大家介紹了如何隱藏 Nginx 的版本號,需要的朋友可以參考下
    2025-02-02
  • nginx無法獲取帶下劃線的header值的問題解決

    nginx無法獲取帶下劃線的header值的問題解決

    Nginx默認(rèn)會(huì)將連字符轉(zhuǎn)換為下劃線,這可能會(huì)導(dǎo)致無法正確獲取到原始的請求頭值,本文主要介紹了nginx無法獲取帶下劃線的header值的問題解決,感興趣的可以了解一下
    2024-12-12
  • nginx中的健康檢查方案

    nginx中的健康檢查方案

    這篇文章主要介紹了nginx中的健康檢查方案,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01

最新評論

浏阳市| 花莲市| 讷河市| 班玛县| 青阳县| 横峰县| 神农架林区| 和平区| 和顺县| 营口市| 武夷山市| 新沂市| 思南县| 宣恩县| 乳源| 南川市| 鹤岗市| 莱州市| 安新县| 盐边县| 潜山县| 潼关县| 滨海县| 恩平市| 铜梁县| 河池市| 丹巴县| 荃湾区| 衡阳市| 泸州市| 丰都县| 内江市| 邢台县| 阿巴嘎旗| 板桥市| 花莲县| 康保县| 浦江县| 邻水| 鸡东县| 台东县|