關於不停機部署方案的選擇

2022-02-25 23:43:08 字數 2016 閱讀 8318

座標:浙江省杭州市

概述:鄙人才疏學淺,了解到不停機部署方案有熱載入、熱部署、集群分批部署三種方式,這裡只針對這三種方式進行討論。

一、熱載入

原理:熱載入的實現原理主要依賴jvm的類載入機制,在執行時對被修改過的類進行重新載入。

實現方式:在容器啟動的時候起一條後台執行緒,定時的檢測類檔案的時間戳變化,如果類的時間戳變掉了,則將類重新載入。

適用場景:熱載入會直接修改jvm中的位元組碼,這種方式對既有**行為的影響難以控制,風險較大,幾乎不會在生產環境使用該方案。

二、熱部署

實現方式:weblogic、tomcat都可以通過配置支援熱部署,但主要用於開發測試環境,較少應用於生產環境。

適用場景:熱部署大大簡化了發布操作,在開發和測試環境使用很普遍;但由於開通熱部署後會增大系統開銷,因此較少在生產環境使用。

三、集群分批部署

原理:利用nginx、apache等**伺服器自動對後端伺服器的有效性進行判斷,**請求到有效的伺服器上。在此基礎上對後端伺服器先後逐個更新,達到不停機部署的目的。

實現方式:在集群的前端**伺服器上配置有效性檢測和自動剔除失效的後端伺服器。

適用場景:適用於多台後端伺服器的集群環境,該方案普遍應用於生產環境。

方案對比:

方案名稱

優點缺點

適用的環境

熱載入1.  直接修改jvm中的位元組碼,風險較高。

2.  需要開發監控和載入服務。

一般用於重啟速度較慢的測試環境,基本不會應用於生產環境。

熱部署中介軟體支援,風險相對較低。

記憶體釋放重建,更加乾淨徹底。

增大了中介軟體的系統開銷。

一般用於開發和測試環境,較少應用於生產環境。

集群分批部署

服務不中斷,使用者無感知。

無法支援乙個後端伺服器的情況。

手動操作,相對繁瑣

普遍應用於生產環境

方案選擇:

基於安全方面的考慮,我們建議選擇「集群分批部署」的方案。

集群分批部署的原型

架構圖如下:

nginx上配置上游伺服器,示例如下:

原型驗證

目的:驗證併發訪問時,剔除或停止某個應用伺服器,請求會不會丟失。

過程:a)         編寫應用程式,應用的服務端即時列印接收到的請求,並返回給前端jsp頁面,前端jsp頁面收到後也列印出請求資訊。

b)         關鍵**:

e)         部署該應用到兩個tomcat:192.168.8.112:1880 和 192.168.8.112:28080。

f)          模擬3個使用者分別不間斷地傳送1萬個請求給伺服器。

h)         在請求傳送的過程中,對其中乙個tomcat進行關閉,1分鐘後重啟。

i)          統計服務端的接收到的請求總數,統計值為30000。

j)          統計前端jsp頁面接收到請求總數,統計值為30000。

3.結論:在集群執行過程中,主動剔除,或直接停止某個應用節點做發布,請求不會丟失。

關於rm rf 問題與不停機清空檔案內容方法

使用rm rf 刪除一直程序正在占用的檔案,雖然檔案再資料夾中不再顯示,但是檢視物理磁碟,發現磁碟容量未增加 使用rm rf 刪除乙個程序一直占用的檔案,雖然檔案不再顯示,但是刪除的僅僅是當前檔案的鏈結,檔案實際還未刪除 將占用檔案的程序 kill掉,檔案便真正刪除掉了 有些程序是無法停止的,但是會...

不停機公升級ORACLE資料庫的方法簡介

如果你需要安裝的資料庫伺服器比較多,使用圖形化方式安裝資料庫軟體的速度還是很慢,而且也比較麻煩。oracle 11g 提供了clone安裝的方法。clone安裝的方法就是複製已經安裝好的乙個oracle到另乙個服務上。步驟如下 使用正常方法在伺服器a上安裝好oracle。將a機器上的 oracle ...

43 如何把系統不停機遷移到分庫分表的?

1 面試題 現在有乙個未分庫分表的系統,未來要分庫分表,如何設計才可以讓系統從未分庫分表動態切換到分庫分表上?2 面試官心裡分析 你看看,你現在已經明白為啥要分庫分表了,你也知道常用的分庫分表中介軟體了,你也設計好你們如何分庫分表的方案了 水平拆分 垂直拆分 分表 那問題來了,你接下來該怎麼把你那個...