欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

灰度發(fā)布概述

軟件開發(fā)過程中,通常不會直接推出最終版本,而是通過逐步迭代的方式進(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 版本,可以測試哪個版本更有利于業(yè)務(wù)。

灰度發(fā)布的流程

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

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

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

創(chuàng)建 nest

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

npx nest new gray_test -p npm

分別訪問返回 Hello111 和 Hello 222:

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

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

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

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

繼續(xù)跑個 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ù)制文件:

# 定義一個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這個地址
    proxy_pass http://192.168.0.100:3001;
}

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

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

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

現(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)請求沒有指定版本時使用
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,走到的就是另一個版本的代碼:

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

相關(guān)文章

  • 使用nginx做負(fù)載均衡的模塊解讀

    使用nginx做負(fù)載均衡的模塊解讀

    這篇文章主要介紹了使用nginx做負(fù)載均衡的兩種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Nginx實(shí)現(xiàn)瀏覽器可實(shí)時查看訪問日志的步驟詳解

    Nginx實(shí)現(xiàn)瀏覽器可實(shí)時查看訪問日志的步驟詳解

    我們經(jīng)常需要在頁面上實(shí)時查看nginx的日志輸出,并且能在頁面上顯示,那么下面小編就給大家說下怎么在瀏覽器上實(shí)時動態(tài)的查看nginx的訪問日志,有需要的朋友們可以參考借鑒。
    2016-09-09
  • Nginx出現(xiàn)請求重復(fù)提交的處理方法

    Nginx出現(xiàn)請求重復(fù)提交的處理方法

    在網(wǎng)絡(luò)世界的大舞臺上,Nginx 就像是一位兢兢業(yè)業(yè)的交通警察,指揮著網(wǎng)絡(luò)請求的有序流動,然而,有時候也會出現(xiàn)一些讓人頭疼的狀況,比如請求的重復(fù)提交,該如何應(yīng)對呢?本文介紹了Nginx出現(xiàn)請求重復(fù)提交的處理方法,需要的朋友可以參考下
    2024-07-07
  • Django+Nginx+uwsgi服務(wù)器部署

    Django+Nginx+uwsgi服務(wù)器部署

    這篇文章介紹了Django+Nginx+uwsgi服務(wù)器部署的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Nginx正反向代理及負(fù)載均衡等功能實(shí)現(xiàn)配置代碼實(shí)例

    Nginx正反向代理及負(fù)載均衡等功能實(shí)現(xiàn)配置代碼實(shí)例

    這篇文章主要介紹了Nginx正反向代理及負(fù)載均衡等功能實(shí)現(xiàn)配置代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Nginx配置Tcp負(fù)載均衡的方法

    Nginx配置Tcp負(fù)載均衡的方法

    這篇文章主要為大家詳細(xì)介紹了Nginx配置Tcp負(fù)載均衡的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • Nginx反向代理的主被動健康檢查方式

    Nginx反向代理的主被動健康檢查方式

    這篇文章主要介紹了Nginx反向代理的主被動健康檢查方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • CentOS系統(tǒng)rpm安裝Nginx和配置

    CentOS系統(tǒng)rpm安裝Nginx和配置

    大家好,本篇文章主要講的是CentOS系統(tǒng)rpm安裝Nginx和配置,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • Nginx部署項(xiàng)目上傳文件報(bào)錯413的解決方法

    Nginx部署項(xiàng)目上傳文件報(bào)錯413的解決方法

    本文主要介紹了Nginx部署項(xiàng)目上傳文件報(bào)錯413的解決方法,報(bào)錯413是因?yàn)镹ginx對上傳大小做了限制,所以我們需要配置文件,下面就來解決這個問題,感興趣的可以了解一下
    2024-03-03
  • 詳解nginx 配置文件解讀

    詳解nginx 配置文件解讀

    這篇文章主要介紹了詳解nginx 配置文件解讀,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07

最新評論