當(dāng)前位置:首頁 > 公眾號精選 > 架構(gòu)師社區(qū)
[導(dǎo)讀]平滑發(fā)布的介紹?背景?單位的云辦公相關(guān)系統(tǒng)沒有成熟的平滑發(fā)布方案,導(dǎo)致每一次發(fā)布都是直接發(fā)布,dll文件或配置文件的變更會引起站點的重啟。?云辦公系統(tǒng)的常駐用戶有10000,即使短短半分多鐘,也會收到一堆投訴。基于此,我們梳理了一套平滑發(fā)布的方案。實施方案1、跟nginx代理服務(wù)器約定了一個健康檢查的接口2、通過接口返回的http狀態(tài)碼來讓ngx是否分流用戶請求(這個我們單位的技術(shù)部那邊有標(biāo)準(zhǔn)的做法)3、根據(jù)提供的這個服務(wù)健康檢查的接口:nginx判斷只要某個實例的接口返回5xx的狀態(tài)碼,即把該實例下線(nginx不會把流量轉(zhuǎn)發(fā)到該實例)???發(fā)布流程目的主要是為了發(fā)布的時候能夠平滑發(fā)布,所以...


平滑發(fā)布的介紹

背景

單位的云辦公相關(guān)系統(tǒng)沒有成熟的平滑發(fā)布方案,導(dǎo)致每一次發(fā)布都是直接發(fā)布,dll文件或配置文件的變更會引起站點的重啟。


云辦公系統(tǒng)的常駐用戶有10000 ,即使短短半分多鐘,也會收到一堆投訴。基于此,我們梳理了一套平滑發(fā)布的方案。


實施方案

1、跟nginx代理服務(wù)器約定了一個健康檢查的接口


2、通過接口返回的http狀態(tài)碼來讓ngx是否分流用戶請求(這個我們單位的技術(shù)部那邊有標(biāo)準(zhǔn)的做法)


3、根據(jù)提供的這個服務(wù)健康檢查的接口:nginx判斷只要某個實例的接口返回5xx的狀態(tài)碼,即把該實例下線(nginx不會把流量轉(zhuǎn)發(fā)到該實例)



系統(tǒng)架構(gòu)設(shè)計:平滑發(fā)布和ABTesting




發(fā)布流程

目的主要是為了發(fā)布的時候能夠平滑發(fā)布,所以QA與開發(fā)人員在發(fā)布得時候按照如下步驟操作:


1、打開系統(tǒng)的nginx列表管理頁面:[/publish/ngxconfig]


2、下架某一個實例(假設(shè)系統(tǒng)集群有A、B、C個實例),比如A實例


系統(tǒng)架構(gòu)設(shè)計:平滑發(fā)布和ABTesting


3、查看是否下架成功:這個就是我們跟nginx約定的健康檢查接口,正常在線狀態(tài)下是200的statu,切離線后,這個接口返回的是401的statu。


在線情況:


系統(tǒng)架構(gòu)設(shè)計:平滑發(fā)布和ABTesting



離線情況:


系統(tǒng)架構(gòu)設(shè)計:平滑發(fā)布和ABTesting


4、觀察監(jiān)控站點,直至該實例下的Req、Connnectiuon流量都消失


系統(tǒng)架構(gòu)設(shè)計:平滑發(fā)布和ABTesting


5、在該實例下進行版本發(fā)布


6、打開Fidller,host到待發(fā)布的實例,然后判斷是否發(fā)布成功(發(fā)布dll、配置文件時,IIS站點會短暫重啟)


7、QA同學(xué)走查灰度的A實例服務(wù)器,保證它正常運行,如此循環(huán),直到所有服務(wù)器都發(fā)布。



進一步ABTesting的優(yōu)化

背景

平滑發(fā)布做完之后,確實給我?guī)砗艽蟮谋憷?,不用每次發(fā)布都發(fā)公告,不重要的或者非功能性的內(nèi)容發(fā)布了就是了。


但是用久了,客戶量上去之后,又遇到一個問題,那就是每一次業(yè)務(wù)大變更,大型發(fā)布都是直接發(fā)布到生產(chǎn),這樣可能存在風(fēng)險。設(shè)計師設(shè)計的功能,用戶不一定完全接受,一旦上線新版本,


收到一大堆的吐槽,都是用戶呀,如果能在小范圍人群內(nèi)進行灰度試用,完成平穩(wěn)的過度和使用反饋之后,優(yōu)化后再上到生產(chǎn)會更好一點。


所以這邊需要思考和設(shè)計一套統(tǒng)一的技術(shù)方案,未來無論云辦公還是其他的業(yè)務(wù)系統(tǒng),都能通過灰度發(fā)布在可指定的小范圍內(nèi)先進行體驗和功能驗證。


基于上面的平滑,我們在Nginx反向代理服務(wù)器上動心思,讓nginx來幫我們做ABTesting的方案。以下是我們嘗試的幾種方案:


1、Nginx反向代理:來路IP策略

流程

系統(tǒng)架構(gòu)設(shè)計:平滑發(fā)布和ABTesting


步驟

1、進入云辦公系統(tǒng),進入Nginx反代服務(wù)器


2、Nginx讀取來路IP的AB名單


3、根據(jù)IP AB名單進行流量轉(zhuǎn)發(fā)(名單A走特定實例,名單B走云辦公原有集群實例)



server {listen 80;server_name officecloud.com;access_log officecloud.com/logs main;ip_list 192.168.254.4,192.168.254.170
set $group default;if ($remote_addr in iplist) {set $group ACluster;}
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;}}



優(yōu)缺點

1、配置簡單,原資源平臺的灰度升級就是根據(jù)IP名單來劃分設(shè)計升級的


2、外部計算機很多都是非固定IP,這個適合在公司內(nèi)網(wǎng)實現(xiàn),比如只是配置公司內(nèi)網(wǎng)的IP。



2、Nginx反向代理:$.Cookies策略

流程

系統(tǒng)架構(gòu)設(shè)計:平滑發(fā)布和ABTesting


步驟

1、進入云辦公系統(tǒng),進入Nginx反代服務(wù)器


2、Nginx讀取Http請求的Cokie的version信息(也可以是別的key)


3、根據(jù)Key的版本來進行流量轉(zhuǎn)發(fā)(比如Version1.1走特定集群,Version1.0走通用集群實例)



server {listen 80;server_name officecloud.com;access_log officecloud.com/logs main;ip_list 192.168.254.4,192.168.254.170
set $group default;if ($http_cookie ~* "version=V1.0"){set default;}if ($http_cookie ~* "version=V1.1"){set $group ACluster;}
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;}}



優(yōu)缺點

1、配置簡單,根據(jù)Nginx的 $COOKIE_version 屬性來判斷


2、相對穩(wěn)定,對需要開放名單的用戶,在Cookie頭部加入特定的版本即可,應(yīng)用只要少許的開發(fā)量


3、首次訪問靜態(tài)頁面可能不會產(chǎn)生cookie


備注:這是團隊內(nèi)認為最好的Nginx代理方案,同理,User-Agent和Header都可以做此種類型的判斷,但是Header需要侵入底層HttpRequest去業(yè)務(wù)添加,不建議。


3、AB集群 業(yè)務(wù)代理方式

流程

系統(tǒng)架構(gòu)設(shè)計:平滑發(fā)布和ABTesting


步驟


1、進入云辦公系統(tǒng),兩種方式進入系統(tǒng),一種是登錄頁登錄:~/login ,一種是default頁面帶uckey登錄:~/default?usertoken=#usertoken#


2、登錄的時候和usertoken傳入的時候進去 路由代理模塊,進行用戶信息校驗,根據(jù)不同的人員和部門(人員和部門配置歸屬AB名單)分流到兩個不同的AB集群


3、根據(jù)轉(zhuǎn)發(fā)跳到具體的實例集群域名下(可以配置AB集群擁有不同域名,更容易區(qū)分)


優(yōu)缺點

1、與Nginx剝離,不用依賴公司的通用平臺和技術(shù)部的實現(xiàn)


2、需要申請AB集群,AB集群擁有不同的域名。


3、如果是前后端分離情況下,需要保證靜態(tài)站點和服務(wù)站點均申請AB集群


4、所有入口需要統(tǒng)一做代理,有一定的開發(fā)量


應(yīng)用

目前手上2個系統(tǒng)已經(jīng)根據(jù)該方案實現(xiàn)了




本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉