新四季網

一種對消息處理系統進行熱更新的系統及其方法

2023-06-14 21:19:31 1

專利名稱:一種對消息處理系統進行熱更新的系統及其方法
技術領域:
本發明涉及電信系統中基於消息處理的在線系統熱更新技術,尤其是適用實時性 很強、停工代價很大的在線計費系統ocs的熱更新系統及其方法,具體地說是一種對消息
處理系統進行熱更新的系統及其方法。
背景技術:
傳統的軟體更新步驟包括停止需要更新的系統,執行更新程序,然後再重新啟動 程序。然而,很多的應用要求連續運行,例如銀行和通訊軟體的停工代價就很大,每年僅有 幾分鐘的停工時間。系統熱更新是指軟體程序在更新其部分的時候不需要停止運行服務, 且被更新部分對於其他部分而言是透明的,它可以使得程序的維護成本下降,提高系統的 可用性。 允許系統軟體對環境變化做出積極反應的傳統做法是使用適應性代碼,但它有三 個主要缺點需要預知各種運行環境、較高代碼複雜度和較高性能開銷。

發明內容
本發明的目的是針對現有技術中,允許系統軟體對環境變化做出積極反應的傳統 做法即使用適應性代碼所存在的需要預知各種運行環境、較高代碼複雜度和較高性能開銷 的問題,提出一種對消息處理系統進行熱更新的系統及其方法,提供不中斷業務的版本升 級功能,從而提升軟體系統的可擴展性,降低運營成本。
本發明的技術方案是 —種對消息處理系統進行熱更新的系統,在網絡通信模塊和業務邏輯處理模塊之 間增加一個熱更新控制模塊,網絡訊模塊作為消息處理系統的消息收發端與其它網元設備 進行通信,網絡通訊模塊與熱更新控制模塊連接,熱更新控制模塊與業務邏輯處理模塊連 接,所述的熱更新控制模塊包含初始化組件、業務進程控制組件、轉發控制組件、進程狀態 表和控制命令處理組件,初始化組件負責熱更新模塊和業務邏輯處理模塊的啟動和相關的 準備工作;業務進程控制組件與轉發控制組件通過內部消息進行通信,完成業務進程的控 制和消息的轉發工作;進程狀態表為一個共享數據區,業務進程控制組件和轉發控制組件 都會訪問這塊數據區中的數據;控制命令處理模塊用戶接受和相應手工或者自動的控制命 令。 —種基於權利要求1所述系統的對消息處理系統進行熱更新的方法,它包括以下 步驟 (a).將待更新的新版本業務功能處理進程部署到指定的主機目錄下,通過控制命 令處理組件的更新控制界面,發出版本更新消息給業務進程控制組件,業務進程控制組件 收到版本更新消息後,根據消息裡面攜帶的版本號信息,確定目標版本號並將新版本的目 標版本號寫入進程狀態表的目標版本號欄位; (b).取進程狀態表中的一條記錄,將老版本的業務進程標識記錄在局部變量中,根據進程狀態表中目標版本信息,在指定目錄下尋找對應的可執行文件是否存在,如果不
存在,則提示錯誤信息,終止更新操作,更新指令失敗;如果存在則繼續; (c).啟動新版本的該可執行文件對應的業務功能處理進程,此時進程狀態表中的
記錄仍然是老版本進程的記錄,轉發控制組件依然參考進程狀態表中的記錄正常運行; (d).當業務進程控制組件收到新版本業務功能處理進程的註冊消息後,立即通過
原子操作更新進程狀態表中的記錄,將記錄中的業務進程處理標識等內容更新為新版本進
程的信息,根據步驟b中記錄下在局部變量中的老版本的業務處理進程標識,發送進程退
出消息給老版本業務功能處理進程;老版本業務功能處理進程在處理完消息隊列中的業務
請求消息後,開始處理退出消息,進行相關的退出準備,釋放相應的內存後,老版本業務進
程退出; (e).重複b到d步驟,直到整個進程狀態表中的記錄遍歷處理完成,將進程狀態表
中的目標版本欄位的數值賦值給當前版本欄位,更新操作完成。 本發明的有益效果 本發明提供不中斷業務的版本升級能力,有效降低運營維護成本;框架進程和業 務進程分離、程序耦合度低,界限明確清晰;方案成熟穩定,可靠性好。


圖1是本發明對消息處理系統進行熱更新的系統的原理框圖。 圖2是本發明對消息處理系統進行熱更新的系統的啟動流程圖。 圖3是本發明對消息處理系統進行熱更新的系統正常運行狀態流程圖。 圖4是本發明對消息處理系統進行熱更新的系統的版本更新狀態流程圖。
具體實施例方式
下面結合附圖和實施例對本方法作進一步的說明。
本發明的熱更新技術的特徵是 框架進程和業務進程分離,通過消息隊列、共享內存來進行進程間通信;系統框架 提供消息隊列創建、管理,消息轉發、調度功能;業務功能處理採用多進程並發的處理模式; 業務處理進程能夠接收系統框架的控制消息完成相應的動作;系統框架能夠進行啟動、識 別業務進程版本;系統框架提供控制消息接口,可以接收和處理版本升級指令;業務處理 進程通過文件名加版本號後綴的方式來區分版本;系統框架在轉發業務處理消息過程中通 過識別進程版本和狀態信息獲取合適進程轉發消息;通過原子操作,來提供高效率的並發 訪問控制。 具體實施時 —、如圖1所示,熱更新方法的特徵是提供一個消息轉發的模塊,消息轉發模塊包 含如下組件 網絡通訊組件負責TCP/IP鏈路的維護、斷鏈檢測、斷鏈重連,作為整個消息處理 系統對外的接口; 系統初始化組件負責創建共享內存、消息隊列、啟動框架的各個組件進程。並提 供進程啟動、停止等API給其它組件使用。
共享內存消息緩衝區為了提高消息處理的消息,減少不必要的內存數據複製,所
有消息數據都存放在共享內存中。消息傳遞時通過作業系統消息隊列發送消息體在共享內
存中的地址偏移量給目標進程,目標進程自行去共享內存中獲取消息體數據。
業務進程控制組件識別和存儲業務進程的版本、工作狀態,啟動、終止業務進程。
轉發策略組件根據版本控制組件、進程控制組件提供的信息,按照策略將業務消
息轉發給特定的業務功能處理進程。 消息調度組件完成具體的共享內存緩存區存取、消息發送、消息調度功能,並提
供相應的業務進程消息隊列負載、定時器消息等API給其它組件使用。
控制命令處理模塊主要負責接收控制臺的消息,提供系統維護接口。 二、主要數據結構 1、框架維護的進程狀態表 進程狀態表,保持了進程的工作狀態、版本號、消息隊列積壓情況等進程相關信 息,由進程狀態版本控制組件,定時和按消息觸發的方式進行更新和維護,其數據結構有C 語言表示如下 各個業務處理進程的信息存儲結構PN0Info
typedef struct
{unsigned long long PN0:14 ;〃框架內唯一標識一個進程
unsigned long long State: 4 ;〃進程狀態
unsigned long long QueueN咖14 ;〃消息隊列負載
unsigned long long PID:32 ;〃0S分配的作業系統進程號
}PN0Info; 各個業務類型的業務進程的存儲結構SvrGroup
typedef struct
{UINT16 ServiceType ;〃接收到的業務類型
UINT8 CountPN0 ;〃能處理該業務類型的業務進程的數量
PN0Info theProc [MAXPN0NUM] ;〃PN0Info信息數組
}SvrGroup ; 整個進程狀態表的存儲結構ProcStateMap
typedef struct
{UINT32 CurrVersionID ;〃業務進程當前版本號UINT32 DestVersionID ;〃業務進程目標版本號SvrGroup DisSvrPNO[恵SVRTYPE];〃每個業務進程組的狀態表 )ProcStateM即ProcInfo ; 2、業務程序文件名和版本號的標示方式既數據結構 框架的業務進程控制組件,通過文件名命名後綴的版本號信息來區分業務功能處 理進程的版本。
業務進程版本號的命名規則
〈業務程序名X_Xa. b. c. d>
示例0CS_1. 0. 0. 106 其中a、b、c、d分別表示業務應用程式的版本號的四個組成部分,每個部分用點號 (.)。從整個文件名最後向前遇到的第一個下劃線(_)作為業務程序名和版本號的分割符。
a、 b、 c、 d的取值範圍為0 255 (8位),按照從高到低的順序組成32位數據,保 存在32位的數據欄位中,對應的數據結構用C語言表示如下;
業務進程版本的存儲結構ProgVersion
typedef struct
{ UINT8 ProgMame[128];〃業務進程文件名
UINT32 VersionID ;〃業務進程目標版本號
}ProgVersion ; 三、高效率的進程狀態表的多進程並發訪問的控制 進程狀態表中,保存的進程狀態信息是進行消息轉發處理過程中重要的參考數 據,涉及多個進程或並發訪問,在保證數據安全的情況下,我們使用了原子操作保證處理效率。 PN0Info記錄是一個64位的數據結構,各種主流的UNIX平臺,都提供了 64位數據 原子操作的API接口,PN0Info的數據結構特性可以實現通過原子操作進程訪問控制。
四、系統啟動時的處理流程 如圖2所示,系統在啟動的時候進行如下步驟
1、啟動系統初始化組件進程; 2、系統初始化組件,創建共享內存緩衝區、消息隊列準備相應的數結構,然後啟動 框架中的其它進程; 3、當其他框架進程啟動完畢後,初始化組件發生初始化消息給所有框架進程;
4、業務進程控制組件收到初始化消息,開始分析配置文件; 5、掃描配置文件中指定的業務進程的目錄和進程名,根據文件名後綴的業務進程 版本號信息獲取業務進程可用的版本信息; 6、獲取版本最完整的、最大的版本的業務進程版本號為當前業務進程版本號;
7、業務進程控制組件通過初始化組件提供的API啟動步驟6確定的版本號的業務 功能處理進程; 8、業務進程控制組件啟動定時器,定時收集和分析業務進程的運行狀態; 9、業務功能進程啟動後,初始化組件會發生初始化消息給業務功能處理進程,業
務功能處理進行初始化操作; 10、業務功能處理進程初始化完成後,發生註冊消息給框架的業務進程控制組 件; 11、業務進程控制組件收到業務進程的註冊消息後,更新進程狀態表中的數據,增 加一條標識次業務功能處理進程的記錄; 12、在第4部進行的同時,框架的轉發控制組件同樣收到初始化消息,進行初始化動作; 13、當多個業務功能處理進程按上述7 11步驟完成初始化和註冊後,系統啟動
完畢,可以對外提供全能力的消息處理服務。 五、系統業務消息處理流程 如圖3所示,系統在處理業務消息的時候進行如下步驟 1、框架網絡通訊組件接收網絡傳來的業務處理請求消息,將消息體存入共享內存 緩衝區中; 2、通過消息隊列發生業務請求消息在共享內存中的偏移量地址給轉發控制組 件; 3、轉發控制組件收到消息後,在共享內存緩衝區獲取該消息,分析出該消息的對 應的業務類型(ServiceKey); 4、轉發控制組件,根據Hash算法,在進程狀態表中獲取可以處理這種業務類型消 息的業務功能處理進程的記錄; 5、根據進程狀態表中的進程狀態欄位判斷此進程是否處於正常狀態; 6、如果是正常狀態則將消息轉發給對應的業務功能處理進程,否則轉第9步; 7、業務功能處理進程受到業務處理請求消息後進行相應的處理,生成業務應答消
息; 8、通過網絡通信組件,業務應答消息返回給遠方主機; 9、如果對應的業務功能處理進程狀態異常,那麼將遍歷進程狀態表,查找可以處 理業務類型消息的其他進程; 10、如果找到可用的正常狀態的業務功能處理進程,則將業務請求消息轉發給業 務處理進程,然後轉入步驟7; 11、如果找不到可用的業務功能處理進程,則進入過載處理流程,過載處理流程不 屬於此文範疇; 12、在如上1 11步驟反覆執行的過程中,業務進程控制組件通過定時器和消息 觸發兩種機制,不斷的收集整個業務功能處理進程的狀態來判斷業務處理進程的運行情 況,更新業務進程狀態表中的內容,供轉發控制組件使用。
六、系統熱更新流程圖 如圖4所示,系統在進行熱更新時候進行如下步驟 1、通過安裝程序新版本的業務功能處理程序複製到指定的主機目錄下; 2、通過控制命令處理組件或者更新控制界面,發生版本更新消息給業務進程控制
組件; 3、業務進程控制組件收到版本更新消息後,分析根據消息中攜帶的版本號信息, 確定目標版本號; 4、將目標版本號寫入進程狀態表的目標版本號欄位; 5、遍歷進程狀態表,重複6 12步驟,逐條處理其中的記錄; 6、取進程狀態表中的一條記錄,記入變量中; 7、根據目標版本信息,在指定目錄下尋找對應的可執行文件是否存在,如果不存 在進入異常處理流程,則更新指令失敗;如果存在則繼續;
8、啟動一個新版本的業務功能處理進程,此時進程狀態表中的記錄仍然是老版本
進程的記錄,轉發控制組件依然可以參考進程狀態表中的記錄正常運行; 9、當業務進程控制組件收到新版本的業務進程的註冊消息後,立即通過原子操作
更新進程狀態表中的記錄,將記錄中的內容更新為新版本進程的信息。這樣當轉發控制組
件就會將後續的業務處理請求消息轉發給新版本的進程,老版本的進程不會再收到任何新
來的業務請求消息; 10、業務進程控制組件,根據步驟6中記錄下在變量中的老版本的進程信息,發送進程退出消息給老版本業務處理進程,此消息必定為老版本的業務功能處理進程的消息隊列中的最後一個消息; 11、老版本的業務處理進程,在處理完消息隊列中的業務請求消息後,開始處理最後一個退出消息,進行相關的退出準備,釋放相應的內存後,老版本業務進程退出。
12、轉到第6步驟,直到整個進程狀態表中的記錄全部處理完成;
13、將進程狀態表中的目標版本欄位的數值賦值給當前版本欄位;
14、更新操作完成。 15、如果發現新版本的業務功能處理程序有問題,可以重複上述步驟,知道老版本的版本號,即可迅速回退到版本的業務功能處理程序。 本方法未涉及部分均與現有技術相同或可採用現有技術加以實現。
權利要求
一種對消息處理系統進行熱更新的系統,其特徵是在網絡通信模塊和業務邏輯處理模塊之間增加一個熱更新控制模塊,網絡訊模塊作為消息處理系統的消息收發端與其它網元設備進行通信,網絡通訊模塊與熱更新控制模塊連接,熱更新控制模塊與業務邏輯處理模塊連接,所述的熱更新控制模塊包含初始化組件、業務進程控制組件、轉發控制組件、進程狀態表和控制命令處理組件,業務進程控制組件與轉發控制組件通過內部消息進行通信完成業務進程的控制和消息的轉發。
2. —種基於權利要求1所述系統的對消息處理系統進行熱更新的方法,其特徵是它包 括以下步驟(a) .將待更新的新版本業務功能處理進程部署到指定的主機目錄下,通過控制命令處 理組件的更新控制界面,發出版本更新消息給業務進程控制組件,業務進程控制組件收到 版本更新消息後,根據消息裡面攜帶的版本號信息,確定目標版本號並將新版本的目標版 本號寫入進程狀態表的目標版本號欄位;(b) .取進程狀態表中的一條記錄,將老版本的業務進程標識記錄在局部變量中,根據 進程狀態表中目標版本信息,在指定目錄下尋找對應的可執行文件是否存在,如果不存在, 則提示錯誤信息,終止更新操作,更新指令失敗;如果存在則繼續;(C).啟動新版本的該可執行文件對應的業務功能處理進程,此時進程狀態表中的記錄 仍然是老版本進程的記錄,轉發控制組件依然參考進程狀態表中的記錄正常運行;(d) .當業務進程控制組件收到新版本業務功能處理進程的註冊消息後,立即通過原子 操作更新進程狀態表中的記錄,將記錄中的業務進程處理標識等內容更新為新版本進程的 信息,根據步驟b中記錄下的在局部變量中的老版本的業務處理進程標識,發送進程退出 消息給老版本業務功能處理進程;老版本業務功能處理進程在處理完消息隊列中的業務請 求消息後,開始處理退出消息,進行相關的退出準備,釋放相應的內存後,老版本業務進程 退出;(e) .重複b到d步驟,直到整個進程狀態表中的記錄遍歷處理完成,將進程狀態表中的 目標版本欄位的數值賦值給當前版本欄位,更新操作完成。
全文摘要
一種對消息處理系統進行熱更新的系統及其方法,本發明在分析影響熱動態更新的關鍵問題的基礎上,利用消息轉發、多進程合作、業務與框架分離等技術實現了基於消息轉發的動態更新,本發明提供一種不中斷業務版本升級能力,實現在業務功能的平滑升級,降低系統的運營和維護成不,提高需求的響應速度。本技術使用了框架進程和業務進程分離方式,具有代碼耦合度低和界限明確清晰的優點。
文檔編號H04L12/58GK101702692SQ200910233480
公開日2010年5月5日 申請日期2009年10月30日 優先權日2009年10月30日
發明者張宇 申請人:南京中興軟創科技股份有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀