為啥總在凌晨上線,如何無損發布

2021-09-22 17:59:30 字數 2001 閱讀 2586

為什麼很多公司公升級系統,選擇在晚上上線?

:美名其曰,晚上上線,對使用者影響最小。

為什麼會對使用者產生影響?

:系統公升級往往需要重啟,重啟的過程中,正在訪問的使用者會訪問失敗。

如果公升級的是web-server:

如上圖,重啟ip1上的tomcat時,tomcat上或許有1000個http請求正在處理,這些請求就會失敗。

如果公升級的是service:

如上圖,重啟ip1的service時,service上或許有2000個請求正在處理,這些請求就會失敗。

web-server公升級能否不影響正在處理的請求?

:可以,需要nginx和web-server配合。

(1)給nginx發指令,將ip1上的流量切走

(2)nginx不會將新流量放給ip1,舊流量會很快處理完成

(3)舊流量完成後,公升級web-server

此時,ip1上的web-server處於沒有流量的狀況,可以隨便玩:

(4)給nginx發指令,將流量切回ip1

(5)流量切回ip1,單節點上線成功

乙個節點公升級完成之後,其他節點可以依次逐台公升級。

service公升級能否不影響正在處理的請求?

:可以,需要rpc-client和rpc-server配合。

(1)向準備公升級的service節點ip1傳送切流量指令

這裡和web-service不同:

(2)rpc-server通過tcp長連線將切流量的指令通知rpc-client

執行切流量指令的元件最終是rpc-client上的tcp連線池。

(3)rpc-client不再將新流量放給ip1,舊流量逐步處理完成

為啥不能像web-server一樣,直接給上游nginx發指令呢,因為service有太多的上游。

(4)舊流量逐步遷移完成,rpc-client會間歇性重連

此時,ip1上的service處於沒有流量的狀況,可以隨便玩:

這個過程中,rpc-client會間歇性嘗試重連(例如每分鐘重試一次),直至ip1節點恢復

(5)流量切回ip1,單節點上線成功

乙個節點公升級完成之後,其他節點可以依次逐台公升級

是否還有其他注意事項?

docker在windows上為啥需要虛擬化。

docker在linux上執行不需要虛擬化,但是,如果在windows上安裝執行就需要虛擬化,找到答案了。docker 底層的核心技術包括 linux 上的名字空間 namespaces 控制組 control groups union 文 件系統 union file systems 和容器格式 ...

為啥VS2017安裝不上

誰知道怎麼處理阿,煩啊 我就是官網下的.不知道,看看有沒有win7的補丁。反正我之前win7安裝的是vs2012.之後都是win10安裝的2019 win7的話 看你系統是否是閹割版。然後管理員執行安裝。官網沒有離線安裝包,用19吧,幾個小時應該就可以了,看起來像是不在系統支援列表裡面,這是官方的系...

小票上為啥指甲能劃出印 如何簡單安全去痘印?

年少用錯化妝品,導致起了半臉的痘痘,留下了不少痘印!不過經過我精心的調養,之前的痘印基本已經不見了!今天我就來結合我的經驗給你最簡單有效的去痘印方法!目錄1.痘印的種類及成因 2.去痘印之前先祛痘 3.如何去痘印?痘印,顧名思義就是痘痘損破後留下的疤痕。分為紅色痘印 黑色痘印以及痘坑。痘印本身具有新...