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

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

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

灰度發(fā)布概述

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

灰度發(fā)布的流程

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

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

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

創(chuàng)建 nest

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

npx nest new gray_test -p npm

分別訪問返回 Hello111 和 Hello 222:

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

使用 docker 運行 nginx 服務

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

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

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

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

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

把配置文件復制出來:

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

編輯復制文件:

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

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

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

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

之前負載均衡的時候,是這么配的:

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

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

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

# 定義默認的上游服務器組,當請求沒有指定版本時使用
upstream default {
    server 192.168.0.100:3000; # 指定默認的服務器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;
}

測試驗證

我們重新跑下容器:

訪問 http://localhost:83/api/ 走到的就是默認的版本:

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

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

相關(guān)文章

  • Nginx中部署Angular項目遇到的坑巨坑

    Nginx中部署Angular項目遇到的坑巨坑

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    nginx中的健康檢查方案

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

最新評論

盱眙县| 剑阁县| 莱州市| 榆中县| 常宁市| 安远县| 科尔| 确山县| 巴彦县| 翼城县| 全椒县| 大连市| 秦安县| 乌拉特中旗| 南乐县| 烟台市| 南木林县| 灌云县| 祁门县| 博野县| 象山县| 通山县| 黑龙江省| 玛沁县| 腾冲县| 新昌县| 夏邑县| 肇源县| 陇南市| 安新县| 牡丹江市| 扬州市| 陵川县| 诏安县| 图木舒克市| 平山县| 河间市| 乌恰县| 阿拉善右旗| 广宁县| 浦县|