一、平滑發布與灰度發布

目錄

一、平滑發布與灰度發布


一、平滑發布與灰度發布

什么叫平滑:在發布的過程中不影響用戶的使用,系統不會因發布而暫停對外服務,不會造成用戶短暫性無法訪問;

什么叫灰度:發布后讓部分用戶使用新版本,其它用戶使用舊版本,逐步擴大影響范圍,最終達到全部更新的發布方式 ;

灰度發布與平滑發布其實是關聯的。當服務器的數量只有一臺的時候,不存在灰度發布,一旦發布了就是所有用戶都更新了, 所以這個時候只有平滑發布。當服務器數量大于一臺的時候,只要每臺服務器都能達到平滑發布的方式,然后設定好需要 發布的服務器占比數量,就可以實現灰度發布了。

單臺服務器的平滑發布模式: 單機狀態下,應用的持續服務主要依靠Nginx的負載均衡及自動切換功能; 為了能夠切換應用,需要在服務器中創建兩個相同的獨立應用,分配兩個不同的端口, 例如:app1,端口801; app2,端口802; 在Nginx中,將app1,app2作為負載均衡加載:

? ?  upstream myapp{server 127.0.0.1:801; //app1server 127.0.0.1:802; //app2}?然后設置代理超時為1秒,以便在某個應用停止時及時切換到另一個應用:server {listen 80;server_name localhost;location /{proxy_pass http://myapp;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_connect_timeout ? ? ? 1;proxy_read_timeout ? ? ? ?  1;proxy_send_timeout ? ? ? ?  1;}}以上內容寫在單獨的配置文件中:/vhost/pub/pub_app.conf在nginx.conf里包含進去:include /vhost/*.conf;

現在系統會均衡地分配用戶訪問app1與app2。 ? 接下來我們進行平滑發布,我們先把app1停止,然后將新版本發布到app1中:

? ?  步驟1: 準備發布app1配置文件新做一個配置文件 pub_app1_down.conf,內容中把app1停止掉:upstream myapp{server 127.0.0.1:801 down; //app1server 127.0.0.1:802; //app2}將這個文件內容覆蓋掉在原有的pub_app.confcp -f /vhost/pub/pub_app1_down.conf /vhost/pub_app.conf??步驟2:停止app1應用平滑重新加載一下nginx: service nginx reload或者:/usr/local/nginx/sbin/nginx -s reload?此時所有的請求都轉到了app2了;?步驟3:更新app1現在可以通過各種方式來更新應用了,例如:壓縮包方式:wget http://version.my.com/appudate/myapp/myapp-v3.2.32.tarunzip -o -d /home/wwwroot/app1/ myapp-v3.2.32.tar其中:-o:不提示的情況下覆蓋文件;-d:指定解壓目錄步驟3.5 內部測試如果需要的話,可以在這一步對app1進行內部測試,以確保應用的正確性;?步驟4:準備發布app2配置文件;此時app1已經是最新版本的文件了,可以切換到app1來對外,?創建一個新的nginx配置文件:pub_app2_down.conf,設置為app1對外,app2停止即可:upstream myapp{server 127.0.0.1:801; //app1server 127.0.0.1:802 down; //app2}?將這個文件內容覆蓋掉在原有的pub_app.confcp -f /vhost/pub/pub_app2_down.conf /vhost/pub_app.conf?步驟5:切換到app1新版本應用 平滑重新一下nginx: service nginx reload或者:/usr/local/nginx/sbin/nginx -s reload?此時所有的請求都轉到了app1了,新版本開始運行;?步驟6:更新app2與第3步一樣,解壓就可以了,這里可以省去下載過程unzip -o -d /home/wwwroot/app2/ myapp-v3.2.32.tar?步驟7:恢復app1,app2同時對外:cp -f /vhost/pub/pub_app.conf /vhost/pub_app.conf平滑重新一下nginx: service nginx reload或者:/usr/local/nginx/sbin/nginx -s reload?至此,整個應用都已經更新。?將各步驟中的腳本匯總一下:?[pub.sh]#============ 平滑發布 v1.0 ===============#step 1cp -f /vhost/pub/pub_app1_down.conf /vhost/pub_app.conf#step 2service nginx reload#step 3wget http://version.my.com/appudate/myapp/myapp-v3.2.32.tarunzip -o -d /home/wwwroot/app1/ myapp-v3.2.32.tar#step 4cp -f /vhost/pub/pub_app2_down.conf /vhost/pub_app.conf#step 5service nginx reload#step 6unzip -o -d /home/wwwroot/app2/ myapp-v3.2.32.tar#step 7cp -f /vhost/pub/pub_app.conf /vhost/pub_app.confservice nginx reload#============ 平滑發布 v1.0  =============== ? ??備注:也可以充分利用nginx的宕機檢測,省去步驟1,2,4,5,7;簡化后的腳本如下:?[pub_mini.sh]#======== 簡化版腳本 =============wget http://version.my.com/appudate/myapp/myapp-v3.2.32.tarunzip -o -d /home/wwwroot/app1/ myapp-v3.2.32.tar?unzip -o -d /home/wwwroot/app2/ myapp-v3.2.32.tar#========= over ===========

多臺服務器平滑發布模式: 有了單臺平滑發布模式的基礎,多臺服務器就簡單了。 每臺服務器當作應用進行發布就可以了,由于nginx有宕機自動檢測功能, 只需要在每臺服務器上先停止發布,然后更新文件,再啟動就可以了; 如果選擇部分的服務器進行更新,那就是灰度了。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/697800.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/697800.shtml
英文地址,請注明出處:http://en.pswp.cn/news/697800.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Linux】普通用戶sudo失敗怎么辦

普通用戶,sudo失敗報錯怎么辦 問題分析如何解決成功 問題分析 新建的普通用戶sudo失敗 sudo提權,是以root的身份執行命令。 當我們用sudo提升權限的時候,這里有個問題,Linux會提示我們輸入當前普通用戶的密碼——這就有點不好。…

【Linux取經路】基礎I/O之重定向的實現原理

文章目錄 一、再來理解重定向1.1 輸出重定向效果演示1.2 重定向的原理1.3 dup21.4 輸入重定向效果演示1.5 輸入重定向代碼實現 二、再來理解標準輸出和標準錯誤2.1 同時對標準輸出和標準錯誤進行重定向2.2 將標準輸出和標準錯誤重定向到同一個文件 三、再看一切皆文件四、結語 …

Elasticsearch從入門到精通-01認識Elasticsearch

Elasticsearch從入門到精通-01認識Elasticsearch 👏作者簡介:大家好,我是程序員行走的魚 🍂博主從本篇正式開始ES學習,希望小伙伴可以一起探討 📖 本篇主要介紹和大家一塊簡單認識下ES并了解ES中的主要角色…

游戲身份證實名認證接口-C#語言代碼示例

為助力解決網絡游戲中的未成年人過度沉迷、不規范行為以及個人信息安全等問題,翔云API提供了高效、安全的游戲身份證實名認證接口。該接口的目標是通過核驗身份證三要素的方式實現用戶身份的準確驗證,確保玩家真實身份與游戲賬號對應,并有效執…

順序表增刪改查(c語言)

main函數&#xff1a; #include <stdio.h>#include "./seq.h"int main(int argc, const char *argv[]){SeqList* list create_seqList();insert_seqList(list,10);insert_seqList(list,100);insert_seqList(list,12);insert_seqList(list,23);show_seqList(l…

SpringBoot集成Mqtt發送消息

1. MQTT簡介 MQTT是一種物聯網消息協議&#xff0c;為Message Queuing Telemetry Transport的縮寫&#xff0c;即消息隊列傳輸探測&#xff0c;協議基于發布訂閱模式進行通信&#xff0c;有開銷低、帶寬小、輕量的特點&#xff0c;通常應用在物聯網數據采集、移動應用、智能硬…

H5獲取手機相機或相冊圖片兩種方式-Android通過webview傳遞多張照片給H5

需求目的&#xff1a; 手機機通過webView展示H5網頁&#xff0c;在特殊場景下&#xff0c;需要使用相機拍照或者從相冊獲取照片&#xff0c;上傳后臺。 完整流程效果&#xff1a; 如下圖 一、H5界面樣例代碼 使用html文件格式&#xff0c;文件直接打開就可以展示布局&#…

BGP-OSPF防環機制

一、BGP 防環機制 1、AS內部防環&#xff1a;通過IBGP水平分割&#xff0c;IBGP水平分割的基本思想是 不把從IBGP鄰居學到的路由信息發送給其他IBGP鄰居&#xff1b; 2、AS間的防環&#xff1a;通過屬性AS-PATH來實現&#xff0c; 基本思想是&#xff1a;記錄經過的路徑&…

【每日一題】2583. 二叉樹中的第 K 大層和-2024.2.23

題目: 2583. 二叉樹中的第 K 大層和 給你一棵二叉樹的根節點 root 和一個正整數 k 。 樹中的 層和 是指 同一層 上節點值的總和。 返回樹中第 k 大的層和(不一定不同)。如果樹少于 k 層,則返回 -1 。 注意,如果兩個節點與根節點的距離相同,則認為它們在同一層。 示…

canvas水波紋效果,jquery鼠標水波紋插件

canvas水波紋效果&#xff0c;jquery鼠標水波紋插件 效果展示 jQuery水波紋效果&#xff0c;canvas水波紋插件 HTML代碼片段 <div class"scroll04wrap"><h3>發展歷程</h3><div class"scroll04"><p>不要回頭&#xff0c;一…

前端工程Bem架構及其封裝

文章目錄 簡介語法在vue3項目中引用sass創建bem.scss文件修改vite.config.tsvue文件中使用結果 這是我學習記錄的筆記&#xff0c;如有不正&#xff0c;歡迎補充 簡介 首先認識一下什么是bem架構&#xff1f;BEM的意思就是塊&#xff08;block&#xff09;、元素&#xff08;e…

【DDD】學習筆記-發布者—訂閱者模式

在領域設計模型中引入了領域事件&#xff0c;并不意味著就采用了領域事件建模范式&#xff0c;此時的領域事件僅僅作為一種架構或設計模式而已&#xff0c;屬于領域設計模型的設計要素。在領域設計建模階段&#xff0c;如何選擇和設計領域事件&#xff0c;存在不同的模式&#…

nginx-ingress-controller組件中Nginx的版本升級

參考鏈接&#xff1a;https://blog.csdn.net/qq_22824481/article/details/133761302 https://blog.csdn.net/mengfanshaoxia/article/details/127155020 https://blog.csdn.net/weixin_39961559/article/details/87935873 概要 業務區k…

JAVAEE初階 JVM(一)

JVM的熱門話題 一. JVM中的內存區域劃分1.經典筆試題. 二. JVM的類加載機制 一. JVM中的內存區域劃分 1.經典筆試題. 二. JVM的類加載機制

wondows10用Electron打包threejs的項目記錄

背景 電腦是用的mac&#xff0c;安裝了parallels desktop ,想用electron 想同時打包出 蘋果版本和windows版本。因為是在虛擬機里安裝&#xff0c;它常被我重裝&#xff0c;所以記錄一下打包的整個過程。另外就是node生態太活躍&#xff0c;幾個依賴沒記錄具體版本&#xff0…

lora網關智慧工廠三色燈安燈狀態采集鋇錸技術S281

LoRa網關結合鋇錸技術S281模塊在智慧工廠三色燈安燈狀態采集方面具有廣泛的應用前景。智慧工廠的安全生產管理對于企業生產經營至關重要&#xff0c;而三色燈安燈是工廠安全生產管理的重要指示燈&#xff0c;通過LoRa無線通信技術和鋇錸技術S281模塊&#xff0c;可以實現對三色…

android 使用X264編碼視頻

android 使用X264編碼視頻 源碼剛上傳可能審核 源碼下載地址 X264對應部分API介紹 初始化x264_param_t _x264_param new x264_param_t;/*** preset是編碼速度* 可選項"ultrafast", "superfast", "veryfast", "faster", "fa…

使用 package.json 配置代理解決 React 項目中的跨域請求問題

使用 package.json 配置代理解決 React 項目中的跨域請求問題 當我們在開發前端應用時&#xff0c;經常會遇到跨域請求的問題。為了解決這個問題&#xff0c;我們可以通過配置代理來實現在開發環境中向后端服務器發送請求。 在 React 項目中&#xff0c;我們可以使用 package…

MES系統中的手動排產和自動排產-助力生產效率

企業在排產管理中面臨的問題&#xff1a; 大多數的企業在調度排產過程中&#xff0c;都會遇到以下問題。首先是插單非常的多&#xff0c;計劃調整困難&#xff0c;會經常性的發生原材料、零部件的備貨不足。計劃按MRP或庫存展示計算出需求后將產生大量工單&#xff0c;這些工單…

《劍指Offer》筆記題解思路技巧優化_Part_6

《劍指Offer》筆記&題解&思路&技巧&優化_Part_6 &#x1f60d;&#x1f60d;&#x1f60d; 相知&#x1f64c;&#x1f64c;&#x1f64c; 相識&#x1f622;&#x1f622;&#x1f622; 開始刷題&#x1f7e1;1.LCR 168. 丑數—— 丑數&#x1f7e2;2. LCR 16…