一種集群系統(tǒng)中的時序庫主備機(jī)內(nèi)存同步方法
【專利摘要】本發(fā)明公開一種集群系統(tǒng)中的時序庫主備機(jī)內(nèi)存同步方法,包括模型數(shù)據(jù)同步和實(shí)時數(shù)據(jù)同步,主機(jī)接收客戶端模型數(shù)據(jù)報文,并通過向備機(jī)轉(zhuǎn)發(fā)進(jìn)行模型數(shù)據(jù)同步;主備機(jī)同時接收實(shí)時數(shù)據(jù)報文,生成實(shí)時數(shù)據(jù)塊,并賦予相同的實(shí)時數(shù)據(jù)塊同樣的key,主機(jī)向備機(jī)發(fā)送key進(jìn)行實(shí)時數(shù)據(jù)同步。此種同步方法適用于在集群系統(tǒng)中主備機(jī)之間的內(nèi)存同步,解決了當(dāng)發(fā)生失敗切換時主機(jī)內(nèi)存數(shù)據(jù)丟失的問題。
【專利說明】一種集群系統(tǒng)中的時序庫主備機(jī)內(nèi)存同步方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種集群系統(tǒng)中的時序庫主備機(jī)內(nèi)存同步方法。
【背景技術(shù)】
[0002]時序數(shù)據(jù)庫是廣域測量系統(tǒng)(WAMS)的基礎(chǔ),同時還可用于變電站監(jiān)控、調(diào)度、直流、穩(wěn)控等多個系統(tǒng)中,滿足其存儲海量、高頻數(shù)據(jù)的需求。在實(shí)際應(yīng)用中,為滿足服務(wù)的高可用性,時序數(shù)據(jù)庫服務(wù)往往采取主備機(jī)集群的方式運(yùn)行。當(dāng)主機(jī)發(fā)生故障時(突然掉電、內(nèi)存故障、服務(wù)進(jìn)程異常退出),可通過集群系統(tǒng)發(fā)現(xiàn)故障并進(jìn)行失敗轉(zhuǎn)移,將服務(wù)切換到備機(jī)運(yùn)行,主備機(jī)切換的過程存在較高的數(shù)據(jù)丟失風(fēng)險,影響了整個系統(tǒng)的高可用性。所述的數(shù)據(jù)丟失風(fēng)險可分為可控風(fēng)險和不可控風(fēng)險:
[0003]可控風(fēng)險:在發(fā)生切換(人工或自動)的這段時間內(nèi),服務(wù)不可用,此時客戶端實(shí)時數(shù)據(jù)無法提交,需要暫時緩存在客戶端,防止數(shù)據(jù)丟失。
[0004]不可控風(fēng)險:由于機(jī)器掉電、進(jìn)程異常退出等造成的數(shù)據(jù)丟失風(fēng)險,這種情況下,即便集群將服務(wù)切換到備機(jī)運(yùn)行,也可能丟失主機(jī)內(nèi)存中尚未寫入磁盤的文件。
[0005]對于可控風(fēng)險,目前的主流時序庫產(chǎn)品都能通過客戶端緩存機(jī)制將實(shí)時數(shù)據(jù)緩存在本地,當(dāng)服務(wù)再次可用時再發(fā)送到服務(wù)端;而對于不可控風(fēng)險,目前大多數(shù)時序數(shù)據(jù)庫產(chǎn)品都不能很好地處理,在主機(jī)掉電或時序庫服務(wù)被意外異常終止時,不可避免地會導(dǎo)致部分?jǐn)?shù)據(jù)的丟失,即使集群能在較短時間內(nèi)進(jìn)行失敗切換,但此時主機(jī)內(nèi)存中的數(shù)據(jù)已經(jīng)無法恢復(fù)。
[0006]為解決上述問題,本發(fā)明致力于在備機(jī)維護(hù)與主機(jī)同樣的內(nèi)存鏡像,使得當(dāng)發(fā)生失敗切換時,備機(jī)能夠完全接管主機(jī)的服務(wù)和內(nèi)存數(shù)據(jù),使整個系統(tǒng)真正做到“高可用”。
【發(fā)明內(nèi)容】
[0007]本發(fā)明的目的,在于提供一種集群系統(tǒng)中的時序庫主備機(jī)內(nèi)存同步方法,其適用于在集群系統(tǒng)中主備機(jī)之間的內(nèi)存同步,解決了當(dāng)發(fā)生失敗切換時主機(jī)內(nèi)存數(shù)據(jù)丟失的問題。
[0008]為了達(dá)成上述目的,本發(fā)明的解決方案是:
[0009]一種集群系統(tǒng)中的時序庫主備機(jī)內(nèi)存同步方法,包含如下步驟:
[0010](I)客戶端向主機(jī)發(fā)送TCP報文建立測點(diǎn)模型,主機(jī)執(zhí)行成功后向備機(jī)轉(zhuǎn)發(fā)模型數(shù)據(jù)報文;測點(diǎn)模型建立完成后,客戶端同時向主、備機(jī)發(fā)送實(shí)時數(shù)據(jù);
[0011](2)主機(jī)收到實(shí)時數(shù)據(jù)后,依次進(jìn)行緩沖、壓縮及寫入文件操作,以實(shí)時數(shù)據(jù)塊為操作單位,每個實(shí)時數(shù)據(jù)塊具有唯一標(biāo)示的key ;主機(jī)將壓縮后的實(shí)時數(shù)據(jù)塊批量寫入紅黑樹存儲結(jié)構(gòu),并對寫入的實(shí)時數(shù)據(jù)塊個數(shù)進(jìn)行計(jì)數(shù),滿足給定的寫入次數(shù)則強(qiáng)制同步到磁盤;對于已經(jīng)成功寫入磁盤的實(shí)時數(shù)據(jù)塊,主機(jī)以TCP報文形式將該實(shí)時數(shù)據(jù)塊的key發(fā)送至備機(jī),備機(jī)同步進(jìn)程收到報文后將具有相同key的實(shí)時數(shù)據(jù)塊從內(nèi)存中清除;
[0012](3)當(dāng)主機(jī)故障發(fā)生集群失敗切換時,備機(jī)同步進(jìn)程將內(nèi)存中實(shí)時數(shù)據(jù)塊回寫到磁盤后退出,并啟動服務(wù)進(jìn)程,服務(wù)進(jìn)程將磁盤中實(shí)時數(shù)據(jù)塊加載到內(nèi)存并繼續(xù)處理;發(fā)生故障的主機(jī)恢復(fù)后,啟動同步進(jìn)程,作為備機(jī)與主機(jī)進(jìn)行實(shí)時數(shù)據(jù)塊內(nèi)存同步。
[0013]上述步驟(I)還包括如下內(nèi)容:客戶端向主機(jī)發(fā)送模型數(shù)據(jù)增刪改報文,主機(jī)執(zhí)行相應(yīng)的操作,執(zhí)行成功后向備機(jī)轉(zhuǎn)發(fā)該報文,備機(jī)收到報文后執(zhí)行相應(yīng)的操作,并向主機(jī)返回操作結(jié)果;客戶端同時向主備機(jī)發(fā)送實(shí)時數(shù)據(jù),保證主備機(jī)接收到同樣的實(shí)時數(shù)據(jù),實(shí)時數(shù)據(jù)塊在主備機(jī)內(nèi)存中的處理流程一致,key 一致,保證在任意時刻,備機(jī)具有與主機(jī)相同的實(shí)時數(shù)據(jù)內(nèi)存鏡像。
[0014]上述步驟(2)還包括如下內(nèi)容:當(dāng)實(shí)時數(shù)據(jù)緩沖區(qū)滿時,形成一個實(shí)時數(shù)據(jù)塊,對該實(shí)時數(shù)據(jù)塊進(jìn)行壓縮,壓縮完成后寫入相應(yīng)的紅黑樹結(jié)構(gòu),一個已壓縮的實(shí)時數(shù)據(jù)塊即一個紅黑樹結(jié)點(diǎn),該紅黑樹的少量結(jié)點(diǎn)緩存在內(nèi)存中,大部分結(jié)點(diǎn)存儲在磁盤上;當(dāng)滿足給定的寫入次數(shù)時,主機(jī)執(zhí)行同步操作,首先將內(nèi)存中的結(jié)點(diǎn)寫入到磁盤,再將已寫入磁盤的實(shí)時數(shù)據(jù)塊key發(fā)送給備機(jī)同步進(jìn)程,同步進(jìn)程遍歷待同步實(shí)時數(shù)據(jù)塊隊(duì)列,刪除已經(jīng)被主機(jī)寫入磁盤的實(shí)時數(shù)據(jù)塊。
[0015]上述步驟(3)還包括如下內(nèi)容:備機(jī)同步進(jìn)程收到退出信號,將待同步實(shí)時數(shù)據(jù)隊(duì)列中的實(shí)時數(shù)據(jù)塊寫入臨時文件后退出;服務(wù)進(jìn)程啟動,首先從臨時文件讀取并處理尚未成功寫入磁盤的實(shí)時數(shù)據(jù)塊,處理完后即對客戶端提供實(shí)時數(shù)據(jù)塊存儲服務(wù),備機(jī)升為主機(jī);原主機(jī)故障恢復(fù)后,啟動同步進(jìn)程,作為備機(jī)與主機(jī)進(jìn)行模型數(shù)據(jù)、實(shí)時數(shù)據(jù)塊內(nèi)存同步。
[0016]采用上述方案后,本發(fā)明具有以下特點(diǎn):
[0017](I)當(dāng)發(fā)生掉電、服務(wù)異常終止等不可預(yù)料的情況時,保證整個系統(tǒng)內(nèi)存數(shù)據(jù)不會丟失;
[0018](2)不僅僅對于時序庫,對于其他任何需要進(jìn)行數(shù)據(jù)處理和存儲的應(yīng)用或系統(tǒng)軟件,均可采用該方法的思路保證系統(tǒng)數(shù)據(jù)一致性、完整性;
[0019](3)模型數(shù)據(jù)立即同步,將對實(shí)時數(shù)據(jù)同步的影響降到最低;
[0020](4)內(nèi)存數(shù)據(jù)同步過程在兩臺服務(wù)器間進(jìn)行,對應(yīng)用透明,不增加應(yīng)用復(fù)雜性。
【專利附圖】
【附圖說明】
[0021]圖1是本發(fā)明所應(yīng)用的集群系統(tǒng)架構(gòu)圖;
[0022]圖2是本發(fā)明中主機(jī)數(shù)據(jù)處理的流程圖;
[0023]圖3是本發(fā)明中備機(jī)數(shù)據(jù)處理的流程圖;
[0024]圖4是本發(fā)明中主、備機(jī)的切換邏輯圖。
【具體實(shí)施方式】
[0025]本發(fā)明提供一種集群系統(tǒng)中的時序庫主備機(jī)內(nèi)存同步方法,包括模型數(shù)據(jù)同步和實(shí)時數(shù)據(jù)同步,具體包括如下步驟:
[0026](I)客戶端向主機(jī)發(fā)生TCP報文建立測點(diǎn)模型,主機(jī)執(zhí)行成功后向備機(jī)轉(zhuǎn)發(fā)模型數(shù)據(jù)報文;所述測點(diǎn)模型建立完成后,客戶端同時向主、備機(jī)發(fā)送實(shí)時數(shù)據(jù);
[0027]具體來說,客戶端向主機(jī)發(fā)送模型數(shù)據(jù)增刪改報文,主機(jī)執(zhí)行相應(yīng)的操作,執(zhí)行成功后向備機(jī)轉(zhuǎn)發(fā)該報文,備機(jī)收到報文后執(zhí)行相應(yīng)的操作,并向主機(jī)返回操作結(jié)果;客戶端同時向主備機(jī)發(fā)送實(shí)時數(shù)據(jù),保證主備機(jī)接收到同樣的實(shí)時數(shù)據(jù),這是進(jìn)行實(shí)時數(shù)據(jù)同步的前提,實(shí)時數(shù)據(jù)在主備機(jī)內(nèi)存中的處理流程一致,實(shí)時數(shù)據(jù)緩沖區(qū)滿時,形成的實(shí)時數(shù)據(jù)塊,該實(shí)時數(shù)據(jù)塊的key —致,保證在任意時刻,備機(jī)具有與主機(jī)相同的實(shí)時數(shù)據(jù)內(nèi)存鏡像,這是進(jìn)行實(shí)時數(shù)據(jù)同步的基礎(chǔ)。
[0028](2)主機(jī)收到前述實(shí)時數(shù)據(jù)后,依次進(jìn)行緩沖、壓縮及寫入文件操作,以實(shí)時數(shù)據(jù)塊為操作單位,每個實(shí)時數(shù)據(jù)塊具有唯一標(biāo)示的key ;主機(jī)將壓縮后的實(shí)時數(shù)據(jù)塊批量寫入紅黑樹存儲結(jié)構(gòu),并對寫入的實(shí)時數(shù)據(jù)塊個數(shù)進(jìn)行計(jì)數(shù),滿足給定的寫入次數(shù)則強(qiáng)制sync (同步)到磁盤。對于已經(jīng)成功寫入磁盤的實(shí)時數(shù)據(jù)塊,主機(jī)以TCP報文形式將該實(shí)時數(shù)據(jù)塊的key發(fā)送至備機(jī),備機(jī)同步進(jìn)程收到報文后更新其實(shí)時數(shù)據(jù)塊內(nèi)存,將具有相同key的實(shí)時數(shù)據(jù)塊從內(nèi)存中清除;
[0029]當(dāng)實(shí)時數(shù)據(jù)緩沖區(qū)滿時,形成一個實(shí)時數(shù)據(jù)塊,對該實(shí)時數(shù)據(jù)塊進(jìn)行壓縮,壓縮完成后寫入相應(yīng)的紅黑樹結(jié)構(gòu),一個已壓縮的實(shí)時數(shù)據(jù)塊即一個紅黑樹結(jié)點(diǎn),該紅黑樹的少量結(jié)點(diǎn)緩存在內(nèi)存中,大部分結(jié)點(diǎn)存儲在磁盤上;當(dāng)滿足給定的寫入次數(shù)時,主機(jī)執(zhí)行同步操作,首先將內(nèi)存中的結(jié)點(diǎn)寫入到磁盤,保證數(shù)據(jù)的持久存儲;再將已寫入磁盤的實(shí)時數(shù)據(jù)塊key發(fā)送給備機(jī)同步進(jìn)程,同步進(jìn)程遍歷待同步實(shí)時數(shù)據(jù)塊隊(duì)列,刪除已經(jīng)被主機(jī)寫入磁盤的實(shí)時數(shù)據(jù)塊。
[0030](3)當(dāng)主機(jī)故障發(fā)生集群失敗切換時,備機(jī)同步進(jìn)程將內(nèi)存中的實(shí)時數(shù)據(jù)塊回寫到磁盤后退出,并啟動服務(wù)進(jìn)程,服務(wù)進(jìn)程將磁盤中的實(shí)時數(shù)據(jù)塊加載到內(nèi)存并繼續(xù)處理;發(fā)生故障的主機(jī)恢復(fù)后,啟動同步進(jìn)程,作為備機(jī)與主機(jī)進(jìn)行實(shí)時數(shù)據(jù)塊內(nèi)存同步,防止了這部分實(shí)時數(shù)據(jù)塊由于主機(jī)故障導(dǎo)致的丟失。
[0031]備機(jī)同步進(jìn)程收到退出信號,將待同步實(shí)時數(shù)據(jù)隊(duì)列中的實(shí)時數(shù)據(jù)塊寫入臨時文件后退出;服務(wù)進(jìn)程啟動,首先從臨時文件讀取并處理尚未成功寫入磁盤的實(shí)時數(shù)據(jù)塊,其處理過程如步驟(2)所述,處理完后即對客戶端提供實(shí)時數(shù)據(jù)塊存儲服務(wù),備機(jī)升為主機(jī);原主機(jī)故障恢復(fù)后,啟動同步進(jìn)程,作為備機(jī)與主機(jī)進(jìn)行模型數(shù)據(jù)、實(shí)時數(shù)據(jù)塊內(nèi)存同步。
[0032]以下將以時序數(shù)據(jù)庫存儲毫秒級WAMS數(shù)據(jù)為例,結(jié)合附圖對本發(fā)明的技術(shù)方案進(jìn)行詳細(xì)說明。
[0033]數(shù)據(jù)提交客戶端首先向主機(jī)建立測點(diǎn)模型,模型建立完成后,同時向主、備機(jī)發(fā)送實(shí)時數(shù)據(jù),具體步驟如下:
[0034](I)如圖1所示,系統(tǒng)包括主機(jī)rtdbl、備機(jī)rtdb2以及客戶端client。主機(jī)rtdbl運(yùn)行時序數(shù)據(jù)庫服務(wù)進(jìn)程rtdb_server,備機(jī)rtdb2運(yùn)行同步進(jìn)程rtdb_sync。開始時,Client向rtdbl發(fā)送建點(diǎn)報文(建立后還可以發(fā)送修改、刪除報文),rtdbl的服務(wù)進(jìn)程rtdb_server接收到建點(diǎn)報文之后執(zhí)行建點(diǎn)操作,成功后立即向備機(jī)發(fā)送測點(diǎn)同步報文;建點(diǎn)完成后,client向rtdbl和rtdb2同時發(fā)送實(shí)時數(shù)據(jù),實(shí)時數(shù)據(jù)由若干記錄組成,一條記錄也稱一條事件,由測點(diǎn)id、時間戳(time)、值(value)和質(zhì)量碼(flag)四個屬性構(gòu)成,同一個測點(diǎn)的事件按時間戳遞增的順序發(fā)送。
[0035](2)如圖2和圖3所示,rtdbl的rtdb_server進(jìn)程包括實(shí)時數(shù)據(jù)處理線程和模型數(shù)據(jù)處理線程;rtdb2的rtdb_sync進(jìn)程包括主線程和同步線程。rtdb_server模型數(shù)據(jù)處理線程接收到測點(diǎn)信息的增刪改報文,執(zhí)行相應(yīng)操作,執(zhí)行成功后立即向rtdb_sync同步線程發(fā)送報文進(jìn)行同步;rtdb_server實(shí)時數(shù)據(jù)處理線程接收到實(shí)時數(shù)據(jù)后,將其中的事件存入對應(yīng)測點(diǎn)的緩沖區(qū)(每個測點(diǎn)id對應(yīng)一個緩沖區(qū)),當(dāng)緩沖區(qū)滿時,將其中所有事件作為一個數(shù)據(jù)塊存入待壓縮存儲隊(duì)列,該數(shù)據(jù)塊以其測點(diǎn)id、第一條事件和最后一條事件的時間戳作為key,由后臺壓縮存儲模塊進(jìn)行壓縮,并寫入最終存儲結(jié)構(gòu)一紅黑樹,當(dāng)滿足給定寫入次數(shù)時,強(qiáng)制將紅黑樹內(nèi)存中的部分sync到磁盤,并將成功sync到磁盤的數(shù)據(jù)塊key發(fā)送到rtdb_sync同步線程;rtdb_sync主線程接收客戶端發(fā)送的實(shí)時數(shù)據(jù),將其中的事件存入對應(yīng)測點(diǎn)的緩沖區(qū),當(dāng)緩沖區(qū)滿時,將其中所有事件作為一個數(shù)據(jù)塊存入待同步實(shí)時數(shù)據(jù)塊隊(duì)列,該數(shù)據(jù)塊以其測點(diǎn)id、第一條事件和最后一條事件的時間戳作為key (相同數(shù)據(jù)塊具有與主機(jī)中相同的key)。rtdb_sync同步線程收到rtdb_server的同步報文后,判斷報文類型,如果是模型數(shù)據(jù)同步報文,則進(jìn)行模型數(shù)據(jù)同步,如果是實(shí)時數(shù)據(jù)同步報文,則遍歷待同步實(shí)時數(shù)據(jù)塊隊(duì)列,將已寫入磁盤的數(shù)據(jù)塊從內(nèi)存刪除。
[0036](3)如圖4所示,當(dāng)rtdbl發(fā)生故障時,集群將執(zhí)行失敗切換,首先向rtdb2的rtdb_sync進(jìn)程發(fā)送退出信號,rtdb_sync在收到信號后將待同步實(shí)時數(shù)據(jù)塊隊(duì)列中的數(shù)據(jù)塊寫入磁盤,然后退出;此時rtdb_server進(jìn)程啟動,將rtdb_sync寫入磁盤中的數(shù)據(jù)加載到內(nèi)存并進(jìn)行壓縮存儲,處理完成后繼續(xù)對客戶端提供服務(wù),整個過程對客戶端透明,客戶端并不知道服務(wù)端發(fā)生了失敗切換,由于在rtdbl發(fā)生故障時所丟失的內(nèi)存數(shù)據(jù)在rtdb2上有備份,整個切換過程也不會導(dǎo)致數(shù)據(jù)丟失。當(dāng)rtdbl故障恢復(fù)后,作為備機(jī)運(yùn)行rtdb_sync進(jìn)程,與rtdb2的rtdb_server進(jìn)程進(jìn)行同步。
[0037]以上實(shí)施例僅為說明本發(fā)明的技術(shù)思想,不能以此限定本發(fā)明的保護(hù)范圍,凡是按照本發(fā)明提出的技術(shù)思想,在技術(shù)方案基礎(chǔ)上所做的任何改動,均落入本發(fā)明保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種集群系統(tǒng)中的時序庫主備機(jī)內(nèi)存同步方法,其特征在于包含如下步驟: (1)客戶端向主機(jī)發(fā)送TCP報文建立測點(diǎn)模型,主機(jī)執(zhí)行成功后向備機(jī)轉(zhuǎn)發(fā)模型數(shù)據(jù)報文;測點(diǎn)模型建立完成后,客戶端同時向主、備機(jī)發(fā)送實(shí)時數(shù)據(jù); (2)主機(jī)收到實(shí)時數(shù)據(jù)后,依次進(jìn)行緩沖、壓縮及寫入文件操作,以實(shí)時數(shù)據(jù)塊為操作單位,每個實(shí)時數(shù)據(jù)塊具有唯一標(biāo)示的key ;主機(jī)將壓縮后的實(shí)時數(shù)據(jù)塊批量寫入紅黑樹存儲結(jié)構(gòu),并對寫入的實(shí)時數(shù)據(jù)塊個數(shù)進(jìn)行計(jì)數(shù),滿足給定的寫入次數(shù)則強(qiáng)制同步到磁盤;對于已經(jīng)成功寫入磁盤的實(shí)時數(shù)據(jù)塊,主機(jī)以TCP報文形式將該實(shí)時數(shù)據(jù)塊的key發(fā)送至備機(jī),備機(jī)同步進(jìn)程收到報文后將具有相同key的實(shí)時數(shù)據(jù)塊從內(nèi)存中清除; (3)當(dāng)主機(jī)故障發(fā)生集群失敗切換時,備機(jī)同步進(jìn)程將內(nèi)存中實(shí)時數(shù)據(jù)塊回寫到磁盤后退出,并啟動服務(wù)進(jìn)程,服務(wù)進(jìn)程將磁盤中實(shí)時數(shù)據(jù)塊加載到內(nèi)存并繼續(xù)處理;發(fā)生故障的主機(jī)恢復(fù)后,啟動同步進(jìn)程,作為備機(jī)與主機(jī)進(jìn)行實(shí)時數(shù)據(jù)塊內(nèi)存同步。
2.如權(quán)利要求1所述的一種集群系統(tǒng)中的時序庫主備機(jī)內(nèi)存同步方法,其特征在于所述步驟(I)還包括如下內(nèi)容:客戶端向主機(jī)發(fā)送模型數(shù)據(jù)增刪改報文,主機(jī)執(zhí)行相應(yīng)的操作,執(zhí)行成功后向備機(jī)轉(zhuǎn)發(fā)該報文,備機(jī)收到報文后執(zhí)行相應(yīng)的操作,并向主機(jī)返回操作結(jié)果;客戶端同時向主備機(jī)發(fā)送實(shí)時數(shù)據(jù),保證主備機(jī)接收到同樣的實(shí)時數(shù)據(jù),實(shí)時數(shù)據(jù)塊在主備機(jī)內(nèi)存中的處理流程一致,key 一致,保證在任意時刻,備機(jī)具有與主機(jī)相同的實(shí)時數(shù)據(jù)內(nèi)存鏡像。
3.如權(quán)利要求1所述的一種集群系統(tǒng)中的時序庫主備機(jī)內(nèi)存同步方法,其特征在于所述步驟(2)還包括如下內(nèi)容:當(dāng)實(shí)時數(shù)據(jù)緩沖區(qū)滿時,形成一個實(shí)時數(shù)據(jù)塊,對該實(shí)時數(shù)據(jù)塊進(jìn)行壓縮,壓縮完成后寫入相應(yīng)的紅黑樹結(jié)構(gòu),一個已壓縮的實(shí)時數(shù)據(jù)塊即一個紅黑樹結(jié)點(diǎn),該紅黑樹有32Mb結(jié)點(diǎn)緩存在內(nèi)存中,其余結(jié)點(diǎn)存儲在磁盤上;當(dāng)滿足給定的寫入次數(shù)時,主機(jī)執(zhí)行同步操作,首先將內(nèi)存中的結(jié)點(diǎn)寫入到磁盤,再將已寫入磁盤的實(shí)時數(shù)據(jù)塊key發(fā)送給備機(jī)同步進(jìn)程,同步進(jìn)程遍歷待同步實(shí)時數(shù)據(jù)塊隊(duì)列,刪除已經(jīng)被主機(jī)寫入磁盤的實(shí)時數(shù)據(jù)塊。
4.如權(quán)利要求1所述的一種集群系統(tǒng)中的時序庫主備機(jī)內(nèi)存同步方法,其特征在于所述步驟(3)還包括如下內(nèi)容:備機(jī)同步進(jìn)程收到退出信號,將待同步實(shí)時數(shù)據(jù)隊(duì)列中的實(shí)時數(shù)據(jù)塊寫入臨時文件后退出;服務(wù)進(jìn)程啟動,首先從臨時文件讀取并處理尚未成功寫入磁盤的實(shí)時數(shù)據(jù)塊,處理完后即對客戶端提供實(shí)時數(shù)據(jù)塊存儲服務(wù),備機(jī)升為主機(jī);原主機(jī)故障恢復(fù)后,啟動同步進(jìn)程,作為備機(jī)與主機(jī)進(jìn)行模型數(shù)據(jù)、實(shí)時數(shù)據(jù)塊內(nèi)存同步。
【文檔編號】H04L29/08GK104243554SQ201410413346
【公開日】2014年12月24日 申請日期:2014年8月20日 優(yōu)先權(quán)日:2014年8月20日
【發(fā)明者】張俊, 王瑋 申請人:南京南瑞繼保工程技術(shù)有限公司