專利名稱:更新服務器程序的配置數(shù)據(jù)的方法及設備的制作方法
技術領域:
本發(fā)明涉及計算機技術領域,尤其涉及一種更新服務器程序的配置數(shù)據(jù)的方法及設備。
背景技術:
在服務器程序正常運行前很多預置的配置數(shù)據(jù)項將會被讀取到內存中,以供服務器程序正常運行時共享使用。一般情況下,配置數(shù)據(jù)有效期為一次啟動服務器程序后,一直要使用到下次更改并重啟服務器程序前。為了不需要重啟服務器程序就能實現(xiàn)數(shù)據(jù)的動態(tài)更新,后臺可以提供修改配置界面,服務器程序設計定時檢測數(shù)據(jù)配置的更新機制。而在多用戶線程模式下,工作的服務器程序或為多客戶端提供服務的服務器程序如果要動態(tài)更新某一配置數(shù)據(jù),必須將該內存進行“鎖操作”才能更新內存值。否則會導致數(shù)據(jù)的不完整甚至于邏輯錯誤。而鎖定配置數(shù)據(jù)緩沖區(qū)后用戶線程暫時不能再讀取到該配置數(shù)據(jù),用戶處于等待狀態(tài)。對于實時性很高,用戶量很大的服務器程序,如果某項配置數(shù)據(jù)內存項正在被很多用戶使用,很難加鎖。即使加鎖了,如果配置項的數(shù)據(jù)量大,鎖死內存數(shù)據(jù)進行更新的這一過程需要花費一定的時間,這一過程會讓用戶感覺到服務器程序停止,沒反應,用戶體驗非常糟糕。由于無法解決上述“鎖操作”帶來的用戶使用延時的問題,現(xiàn)行采用的方式是,每次有數(shù)據(jù)更新,都要花費幾分鐘甚至幾十分鐘(對于大型分布式服務啟動就更慢)來啟動服務器程序后,配置數(shù)據(jù)才生效。這種方式將直接影響生產(chǎn)效率,導致用戶體驗很差。
發(fā)明內容
本發(fā)明的主要目的在于公開一種更新服務器程序的配置數(shù)據(jù)的方法及設備,使之在不影響用戶在線使用的狀態(tài)下實現(xiàn)數(shù)據(jù)的動態(tài)更新。為達上述目的,本發(fā)明公開的更新服務器程序的配置數(shù)據(jù)的方法包括服務器程序啟動,在內存中劃分出第一全局緩沖區(qū)和第二全局緩沖區(qū);所述服務器程序將配置數(shù)據(jù)寫入第一全局緩沖區(qū),完成寫入之后,將該第一全局緩沖區(qū)的狀態(tài)變量設置為活動狀態(tài),并將該第二全局緩沖區(qū)的狀態(tài)變量設置為睡眠狀態(tài);所述服務器程序根據(jù)活動緩沖區(qū)的配置數(shù)據(jù)正常運行,該活動緩沖區(qū)即狀態(tài)變量為活動狀態(tài)的全局緩沖區(qū),與之相對的睡眠緩沖區(qū)即狀態(tài)變量為睡眠狀態(tài)的另一全局緩沖區(qū);在后臺對該服務器程序的配置數(shù)據(jù)進行一次更新的過程中,由當前的活動緩沖區(qū)提供上次更新后的配置數(shù)據(jù)以維系該服務器程序正常運行;在后臺更新完本次的配置數(shù)據(jù)之后,向清空的睡眠緩沖區(qū)寫入本次更新后的所有配置數(shù)據(jù),完成寫入之后,將該睡眠緩沖區(qū)的狀態(tài)變量修改為活動狀態(tài),同時將先前活動緩沖區(qū)的狀態(tài)變量修改為睡眠狀態(tài);其中在服務器程序正常運行時,當所述第一全局緩沖區(qū)的狀態(tài)變量為活動狀態(tài)時,所述第二全局緩沖區(qū)的狀態(tài)變量為睡眠狀態(tài);當所述第一全局緩沖區(qū)的狀態(tài)變量為睡眠狀態(tài)時,所述第二全局緩沖區(qū)的狀態(tài)變量為活動狀態(tài)。為達上述目的,本發(fā)明還公開一種更新配置數(shù)據(jù)的設備,包括服務器程序和內存, 且還包括內存管理模塊,用于將服務器程序加載到內存以啟動該服務器程序,并在內存中劃分出第一全局緩沖區(qū)和第二全局緩沖區(qū),以供該服務器程序執(zhí)行下述操作將配置數(shù)據(jù)寫入第一全局緩沖區(qū),完成寫入之后,將該第一全局緩沖區(qū)的狀態(tài)變量設置為活動狀態(tài),并將該第二全局緩沖區(qū)的狀態(tài)變量設置為睡眠狀態(tài);根據(jù)活動緩沖區(qū)的配置數(shù)據(jù)正常運行,該活動緩沖區(qū)即狀態(tài)變量為活動狀態(tài)的全局緩沖區(qū),與之相對的睡眠緩沖區(qū)即狀態(tài)變量為睡眠狀態(tài)的另一全局緩沖區(qū);在后臺對該服務器程序的配置數(shù)據(jù)進行一次更新的過程中,由當前的活動緩沖區(qū)提供上次更新后的配置數(shù)據(jù)以維系該服務器程序正常運行;在后臺更新完本次的配置數(shù)據(jù)之后,向清空的睡眠緩沖區(qū)寫入本次更新后的所有配置數(shù)據(jù),完成寫入之后,將該睡眠緩沖區(qū)的狀態(tài)變量修改為活動狀態(tài),同時將先前活動緩沖區(qū)的狀態(tài)變量修改為睡眠狀態(tài);其中在服務器程序正常運行時,當所述第一全局緩沖區(qū)的狀態(tài)變量為活動狀態(tài)時,所述第二全局緩沖區(qū)的狀態(tài)變量為睡眠狀態(tài);當所述第一全局緩沖區(qū)的狀態(tài)變量為睡眠狀態(tài)時,所述第二全局緩沖區(qū)的狀態(tài)變量為活動狀態(tài)。與現(xiàn)有技術相比,本發(fā)明至少具有以下優(yōu)點采用雙緩沖交替機制,兩個緩沖區(qū)數(shù)據(jù)互不干擾,相互獨立,從而實現(xiàn)了前臺的數(shù)據(jù)共享和后臺的數(shù)據(jù)更新的同時進行,充分利用了資源,而且通過在線動態(tài)更新的方式,不影響用戶正常使用,極大的提高了服務器程序及其設備運行穩(wěn)定性和維護的便利性。
圖1是本發(fā)明實施例公開的更新配置數(shù)據(jù)的方法流程圖;圖2為本發(fā)明實施例公開的更新配置數(shù)據(jù)的設備結構框圖。
具體實施例方式下面結合說明書附圖對本發(fā)明的具體實現(xiàn)方式做一詳細描述。實施例一本實施例公開一種更新配置數(shù)據(jù)的方法,如圖1所示,包括步驟Si、服務器程序啟動,在內存中劃分出第一全局緩沖區(qū)和第二全局緩沖區(qū)。本實施例所述的服務器程序是指運行在服務器上的應用程序,尤其是為多用戶線程所共享的應用程序;例如騰訊QQ服務器的服務程序,游戲服務器的服務程序,新浪show服務器的服務程序等等。上述內存緩沖區(qū)是存放數(shù)據(jù)的地方,而內存地址是內存緩沖區(qū)的編號,每個內存緩沖區(qū)都會有一個與之對應的內存地址。本實施例中,可以根據(jù)內存地址在內存中劃分出該服務器程序的兩個全局緩沖區(qū)。所謂全局緩沖區(qū),以Oracle數(shù)據(jù)庫為例,當啟動Oracle 數(shù)據(jù)庫時,系統(tǒng)會先在內存內規(guī)劃一個固定區(qū)域,用來儲存用戶需要的數(shù)據(jù)(尤其是多線程用戶所共享的數(shù)據(jù))以及Oracle運行時必備的系統(tǒng)信息,本發(fā)明實施例將此類數(shù)據(jù)和/ 或信息的統(tǒng)稱為配置數(shù)據(jù),并將該數(shù)據(jù)存儲區(qū)稱為全局緩沖區(qū)。舉例說明,本實施例中的配置數(shù)據(jù)可以是多線程用戶所共享的游戲服務器的游戲場景數(shù)據(jù),也可以是多人聊天室的基本數(shù)據(jù),還可以是服務器程序版本升級所需的配置數(shù)據(jù)等等。其中,本實施例在執(zhí)行上述步驟Sl時,需要在內存中規(guī)劃出第一和第二至少兩個全局緩沖區(qū),其中一個為活動緩沖區(qū),一個為睡眠緩沖區(qū)。所謂活動緩沖區(qū)即狀態(tài)變量為活動狀態(tài)的全局緩沖區(qū),與之相對的睡眠緩沖區(qū)即狀態(tài)變量為睡眠狀態(tài)的另一全局緩沖區(qū)。在現(xiàn)有應用中,內存通??杀环殖?個區(qū),他們分別是堆、棧、自由存儲區(qū)、全局/ 靜態(tài)存儲區(qū)和常量存儲區(qū)。至于上述步驟Sl所述的內存的分區(qū),可參照內存緩沖區(qū)現(xiàn)有的管理方法等技術,本發(fā)明不作贅述;較佳的,分區(qū)時,第一全局緩沖區(qū)和第二全局緩沖區(qū)的大小均等。步驟S2、服務器程序將配置數(shù)據(jù)寫入第一全局緩沖區(qū),完成寫入之后,將該第一全局緩沖區(qū)的狀態(tài)變量設置為活動狀態(tài),并將該第二全局緩沖區(qū)的狀態(tài)變量設置為睡眠狀態(tài)。步驟S3、該服務器程序根據(jù)活動緩沖區(qū)的配置數(shù)據(jù)正常運行。步驟S4、在后臺對該服務器程序的配置數(shù)據(jù)進行一次更新的過程中,由當前的活動緩沖區(qū)提供上次更新后的配置數(shù)據(jù)以維系該服務器程序正常運行;在后臺更新完本次的配置數(shù)據(jù)之后,向清空的睡眠緩沖區(qū)寫入本次更新后的所有配置數(shù)據(jù),完成寫入之后,將該睡眠緩沖區(qū)的狀態(tài)變量修改為活動狀態(tài),同時將先前活動緩沖區(qū)的狀態(tài)變量修改為睡眠狀態(tài)。在該步驟中,清空睡眠緩沖區(qū)的動作可以是在后臺對該服務器程序的配置數(shù)據(jù)進行更新的過程中,也可以是在后臺更新完本次的配置數(shù)據(jù)之后執(zhí)行。本實施例中,上述步驟S4所述的活動緩沖區(qū)和睡眠緩沖區(qū)的重置有多種實現(xiàn)方式,本發(fā)明的保護范圍包括但不限于下述兩種實現(xiàn)方式方式一、活動緩沖區(qū)與睡眠緩沖區(qū)按固定的重置時長進行重置,所謂重置時長即服務器程序默認的配置數(shù)據(jù)前后兩次更新之間的時間間隔,可由定時器設定。在每次的重置過程中,首先由服務器程序判斷重置時長是否結束,如果是,清空該睡眠緩沖區(qū)并向該睡眠緩沖區(qū)寫入本次更新后的所有配置數(shù)據(jù)。在該方式中,其優(yōu)點在于容易實現(xiàn);其缺點則在于上述重置時長是個估計值,在該重置時長內,后臺的配置數(shù)據(jù)有可能發(fā)生了更新,也有可能沒有發(fā)生更新,而按固定的重置時長進行重置會導致第一和第二兩個全局緩沖區(qū)周期地在活動和睡眠兩種狀態(tài)中頻繁切換,從而也就包括了一些沒有必要的切換,有待于進一步改進。方式二、活動緩沖區(qū)與睡眠緩沖區(qū)隨配置數(shù)據(jù)的更新進行重置,即只有在服務器程序檢測到后臺的一個或一個以上的配置數(shù)據(jù)發(fā)生了更新之后再進行重置。該方式解決了方式一所存在的不足,其要解決的問題是怎樣檢測后臺的配置數(shù)據(jù)進行了更新,該檢測的方式包括但不限于下述類別檢測類別一、定期將后臺的配置數(shù)據(jù)與內存中的配置數(shù)據(jù)的數(shù)值進行比對,比對的結果如果是兩者相同,則判斷為后臺還未作更新,如果比對的結果顯示兩者不同,則判斷后臺發(fā)生了更新。檢測類別二、修改后臺數(shù)據(jù)庫的配置表的屬性,將其配置表的表結構修改為由參數(shù)名稱、參數(shù)值和更新時間三個字段組成,檢測時,先獲取當前活動緩沖區(qū)所有配置中更新時間的最大值,然后檢測數(shù)據(jù)庫的配置表中是否有比當前記錄的最大值更大的更新時間, 如果有,則判斷后臺的配置數(shù)據(jù)發(fā)生了更新。該檢測方法可參照本案申請人于2011年6月 28日所提交的第201110178045. 4號,名稱為“獲取數(shù)據(jù)庫更新數(shù)據(jù)的方法、裝置及系統(tǒng)”的發(fā)明專利。檢測類別三、根據(jù)后臺傳送的操作指令判斷后臺是否發(fā)生了更新。上述方式二確保了活動緩沖區(qū)與睡眠緩沖區(qū)按需進行重置,有效避免了無謂的切換。依此,該方式為本發(fā)明實施例的優(yōu)選方式。本實施例中,在服務器程序正常運行時,當?shù)谝蝗志彌_區(qū)的狀態(tài)變量為活動狀態(tài)時,第二全局緩沖區(qū)的狀態(tài)變量為睡眠狀態(tài);當?shù)谝蝗志彌_區(qū)的狀態(tài)變量為睡眠狀態(tài)時,第二全局緩沖區(qū)的狀態(tài)變量為活動狀態(tài);在具體的實現(xiàn)過程中,其狀態(tài)變量可以以“0” 和“1”來分別表示睡眠狀態(tài)和活動狀態(tài);較佳的,該服務器程序還可以只設置一個狀態(tài)變量,并通過設置該狀態(tài)變量取值“0”或“ 1,,所對應的兩個全局緩沖區(qū)在兩種狀態(tài)下作逆向同步切換的一個線程來實現(xiàn)配置數(shù)據(jù)的在線動態(tài)更新,所謂逆向同步切換即指當?shù)谝蝗志彌_區(qū)從睡眠狀態(tài)切換到活動狀態(tài)時,第二全局緩沖區(qū)從活動狀態(tài)切換到睡眠狀態(tài),同理,當?shù)谝蝗志彌_區(qū)從活動狀態(tài)切換到睡眠狀態(tài)時,第二全局緩沖區(qū)從睡眠狀態(tài)切換到活動狀態(tài)。藉此,本發(fā)明實施例一所采用的雙緩沖交替機制,兩個緩沖區(qū)數(shù)據(jù)互不干擾,相互獨立,從而實現(xiàn)了前臺的數(shù)據(jù)共享和后臺的數(shù)據(jù)更新的同時進行,充分利用了資源,而且通過在線動態(tài)更新的方式,不影響用戶正常使用,極大的提高了服務器程序及其設備運行穩(wěn)定性和維護的便利性。實施例二與上述實施例一所對應的,本實施例公開一種更新配置數(shù)據(jù)的設備,即一種服務器。如圖2所示,該設備包括服務器程序1和內存2,其中該設備還包括內存管理模塊3,用于將服務器程序加載到內存以啟動該服務器程序,并在內存中劃分出第一全局緩沖區(qū)21和第二全局緩沖區(qū)22,以供該服務器程序執(zhí)行上述實施例一所述的操作,該操作至少包括將配置數(shù)據(jù)寫入第一全局緩沖區(qū),完成寫入之后,將該第一全局緩沖區(qū)的狀態(tài)變量設置為活動狀態(tài),并將該第二全局緩沖區(qū)的狀態(tài)變量設置為睡眠狀態(tài);根據(jù)活動緩沖區(qū)的配置數(shù)據(jù)正常運行,該活動緩沖區(qū)即狀態(tài)變量為活動狀態(tài)的全局緩沖區(qū),與之相對的睡眠緩沖區(qū)即狀態(tài)變量為睡眠狀態(tài)的另一全局緩沖區(qū);在后臺對該服務器程序的配置數(shù)據(jù)進行一次更新的過程中,由當前的活動緩沖區(qū)提供上次更新后的配置數(shù)據(jù)以維系該服務器程序正常運行;在后臺更新完本次的配置數(shù)據(jù)之后,向清空的睡眠緩沖區(qū)寫入本次更新后的所有配置數(shù)據(jù),完成寫入之后,將該睡眠緩沖區(qū)的狀態(tài)變量修改為活動狀態(tài),同時將先前活動緩沖區(qū)的狀態(tài)變量修改為睡眠狀態(tài)。本實施例中,較佳的,基于木桶效應原理,所劃分的第一全局緩沖區(qū)和第二全局緩沖區(qū)的大小均等,以充分利用資源并提高任一全局緩沖區(qū)的防溢出門限。如圖2所示的設備,其服務器程序在正常運行時,當?shù)谝蝗志彌_區(qū)的狀態(tài)變量為活動狀態(tài)時,第二全局緩沖區(qū)的狀態(tài)變量為睡眠狀態(tài);當?shù)谝蝗志彌_區(qū)的狀態(tài)變量為睡眠狀態(tài)時,第二全局緩沖區(qū)的狀態(tài)變量為活動狀態(tài)。本實施例中,可選的,上述服務器程序可以按固定時長重置活動緩沖區(qū)和睡眠緩沖區(qū),其執(zhí)行方式可參照上述方法實施例的方式一。其中,該服務器程序也可以隨配置數(shù)據(jù)的更新重置上述活動緩沖區(qū)與睡眠緩沖區(qū),其執(zhí)行的方式可參照上述方法實施例的方式二;即該服務器程序的配置服務線程可以以下述步驟檢測后臺數(shù)據(jù)庫的配置數(shù)據(jù)發(fā)生更新從后臺數(shù)據(jù)庫獲取配置表,配置表的表結構至少由參數(shù)名稱、參數(shù)值和更新時間三個字段組成;獲取活動緩沖區(qū)所有配置中更新時間的最大值;檢測數(shù)據(jù)庫的配置表中是否有比當前記錄的最大值更大的更新時間,如果有,判斷后臺的配置數(shù)據(jù)發(fā)生了更新。以及在檢測到更新后,再向清空的睡眠緩沖區(qū)寫入本次更新后的所有配置數(shù)據(jù),完成寫入之后,再執(zhí)行活動緩沖區(qū)與睡眠緩沖區(qū)的重置處理。本實施例所述的服務器程序不包括圖2所示設備自啟動的操作系統(tǒng)的管理程序, 而是指運行在該設備上的應用程序,尤其是為多線程用戶所共享的應用程序;例如騰訊 QQ服務器的服務程序,游戲服務器的服務程序,新浪show服務器的服務程序等等。其中該應用程序的運行依附于該設備的操作系統(tǒng)(例如Windows操作系統(tǒng),Iinux操作系統(tǒng))初始化之后,且該操作系統(tǒng)可用于執(zhí)行上述內存管理模塊所對應的功能。綜上,本發(fā)明實施例二所公開的設備,通過采用雙緩沖交替機制,兩個緩沖區(qū)數(shù)據(jù)互不干擾,相互獨立,從而實現(xiàn)了前臺的數(shù)據(jù)共享和后臺的數(shù)據(jù)更新的同時進行,充分利用了資源,而且通過在線動態(tài)更新的方式,不影響用戶正常使用,極大的提高了服務器程序及其設備運行穩(wěn)定性和維護的便利性。以上公開的僅為本發(fā)明的幾個具體實施例,但是,本發(fā)明并非局限于此,任何本領域的技術人員能思之的變化都應落入本發(fā)明的保護范圍。
權利要求
1.一種更新服務器程序的配置數(shù)據(jù)的方法,其特征在于,包括 服務器程序啟動,在內存中劃分出第一全局緩沖區(qū)和第二全局緩沖區(qū);所述服務器程序將配置數(shù)據(jù)寫入第一全局緩沖區(qū),完成寫入之后,將該第一全局緩沖區(qū)的狀態(tài)變量設置為活動狀態(tài),并將該第二全局緩沖區(qū)的狀態(tài)變量設置為睡眠狀態(tài);所述服務器程序根據(jù)活動緩沖區(qū)的配置數(shù)據(jù)正常運行,該活動緩沖區(qū)即狀態(tài)變量為活動狀態(tài)的全局緩沖區(qū),與之相對的睡眠緩沖區(qū)即狀態(tài)變量為睡眠狀態(tài)的另一全局緩沖區(qū);在后臺對該服務器程序的配置數(shù)據(jù)進行一次更新的過程中,由當前的活動緩沖區(qū)提供上次更新后的配置數(shù)據(jù)以維系該服務器程序正常運行;在后臺更新完本次的配置數(shù)據(jù)之后,向清空的睡眠緩沖區(qū)寫入本次更新后的所有配置數(shù)據(jù),完成寫入之后,將該睡眠緩沖區(qū)的狀態(tài)變量修改為活動狀態(tài),同時將先前活動緩沖區(qū)的狀態(tài)變量修改為睡眠狀態(tài);其中在服務器程序正常運行時,當所述第一全局緩沖區(qū)的狀態(tài)變量為活動狀態(tài)時,所述第二全局緩沖區(qū)的狀態(tài)變量為睡眠狀態(tài);當所述第一全局緩沖區(qū)的狀態(tài)變量為睡眠狀態(tài)時,所述第二全局緩沖區(qū)的狀態(tài)變量為活動狀態(tài)。
2.根據(jù)權利要求1所述的更新服務器程序的配置數(shù)據(jù)的方法,其特征在于,上述活動緩沖區(qū)與睡眠緩沖區(qū)按固定的重置時長進行重置,且在每次的重置過程中,所述向清空的睡眠緩沖區(qū)寫入本次更新后的所有配置數(shù)據(jù)具體為服務器程序判斷重置時長是否結束,如果是,清空該睡眠緩沖區(qū)并向該睡眠緩沖區(qū)寫入本次更新后的所有配置數(shù)據(jù)。
3.根據(jù)權利要求1所述的更新服務器程序的配置數(shù)據(jù)的方法,其特征在于,上述活動緩沖區(qū)與睡眠緩沖區(qū)隨配置數(shù)據(jù)的更新進行重置,且在每次的重置過程中,所述向清空的睡眠緩沖區(qū)寫入本次更新后的所有配置數(shù)據(jù)之前還包括服務器程序檢測到后臺的一個或一個以上的配置數(shù)據(jù)發(fā)生更新。
4.根據(jù)權利要求3所述的更新服務器程序的配置數(shù)據(jù)的方法,其特征在于,所述服務器程序以下述步驟檢測后臺數(shù)據(jù)庫的配置數(shù)據(jù)發(fā)生更新從后臺數(shù)據(jù)庫獲取配置表,所述配置表的表結構至少由參數(shù)名稱、參數(shù)值和更新時間三個字段組成;獲取當前活動緩沖區(qū)所有配置中更新時間的最大值;檢測所述數(shù)據(jù)庫的配置表中是否有比當前記錄的最大值更大的更新時間,如果有,判斷后臺的配置數(shù)據(jù)發(fā)生了更新。
5.根據(jù)權利要求1至4任一所述的更新服務器程序的配置數(shù)據(jù)的方法,其特征在于,所述第一全局緩沖區(qū)和第二全局緩沖區(qū)共用同一狀態(tài)變量。
6.一種更新服務器程序的配置數(shù)據(jù)的設備,包括服務器程序和內存,其特征在于,所述設備還包括內存管理模塊,用于將服務器程序加載到內存以啟動該服務器程序,并在內存中劃分出第一全局緩沖區(qū)和第二全局緩沖區(qū),以供該服務器程序執(zhí)行下述操作將配置數(shù)據(jù)寫入第一全局緩沖區(qū),完成寫入之后,將該第一全局緩沖區(qū)的狀態(tài)變量設置為活動狀態(tài),并將該第二全局緩沖區(qū)的狀態(tài)變量設置為睡眠狀態(tài);根據(jù)活動緩沖區(qū)的配置數(shù)據(jù)正常運行,該活動緩沖區(qū)即狀態(tài)變量為活動狀態(tài)的全局緩沖區(qū),與之相對的睡眠緩沖區(qū)即狀態(tài)變量為睡眠狀態(tài)的另一全局緩沖區(qū);在后臺對該服務器程序的配置數(shù)據(jù)進行一次更新的過程中,由當前的活動緩沖區(qū)提供上次更新后的配置數(shù)據(jù)以維系該服務器程序正常運行;在后臺更新完本次的配置數(shù)據(jù)之后,向清空的睡眠緩沖區(qū)寫入本次更新后的所有配置數(shù)據(jù),完成寫入之后,將該睡眠緩沖區(qū)的狀態(tài)變量修改為活動狀態(tài),同時將先前活動緩沖區(qū)的狀態(tài)變量修改為睡眠狀態(tài);其中在服務器程序正常運行時,當所述第一全局緩沖區(qū)的狀態(tài)變量為活動狀態(tài)時,所述第二全局緩沖區(qū)的狀態(tài)變量為睡眠狀態(tài);當所述第一全局緩沖區(qū)的狀態(tài)變量為睡眠狀態(tài)時,所述第二全局緩沖區(qū)的狀態(tài)變量為活動狀態(tài)。
7.根據(jù)權利要求6所述的更新服務器程序的配置數(shù)據(jù)的設備,其特征在于,所述服務器程序按固定時長重置活動緩沖區(qū)和睡眠緩沖區(qū)。
8.根據(jù)權利要求6所述的更新服務器程序的配置數(shù)據(jù)的設備,其特征在于,所述第服務器程序隨配置數(shù)據(jù)的更新重置上述活動緩沖區(qū)與睡眠緩沖區(qū)。
9.根據(jù)權利要求8所述的更新服務器程序的配置數(shù)據(jù)的設備,其特征在于,所述服務器程序以下述步驟檢測后臺數(shù)據(jù)庫的配置數(shù)據(jù)發(fā)生更新從后臺數(shù)據(jù)庫獲取配置表,所述配置表的表結構至少由參數(shù)名稱、參數(shù)值和更新時間三個字段組成;獲取當前活動緩沖區(qū)所有配置中更新時間的最大值;檢測所述數(shù)據(jù)庫的配置表中是否有比當前記錄的最大值更大的更新時間,如果有,判斷后臺的配置數(shù)據(jù)發(fā)生了更新。
10.根據(jù)權利要求6至9任一所述的更新服務器程序的配置數(shù)據(jù)的設備,其特征在于, 所述第一全局緩沖區(qū)和第二全局緩沖區(qū)的大小均等。
全文摘要
本發(fā)明公開一種更新服務器程序的配置數(shù)據(jù)的方法及設備,使之在不影響用戶在線使用的狀態(tài)下實現(xiàn)數(shù)據(jù)的動態(tài)更新。該方法包括服務器程序啟動后,在內存中劃分出兩個全局緩沖區(qū),其中一個為活動緩沖區(qū),一個為睡眠緩沖區(qū);在后臺對服務器程序的配置數(shù)據(jù)進行一次更新的過程中,由當前的活動緩沖區(qū)提供上次更新后的配置數(shù)據(jù)以維系該服務器程序正常運行;在后臺更新完本次的配置數(shù)據(jù)之后,向清空的睡眠緩沖區(qū)寫入本次更新后的所有配置數(shù)據(jù),完成寫入之后,將該睡眠緩沖區(qū)的狀態(tài)變量修改為活動狀態(tài),同時將先前活動緩沖區(qū)的狀態(tài)變量修改為睡眠狀態(tài)。
文檔編號G06F9/445GK102314368SQ20111028761
公開日2012年1月11日 申請日期2011年9月26日 優(yōu)先權日2011年9月26日
發(fā)明者付清文, 向萬里, 周平, 晏利平, 曾精石, 李曉鵬, 李銳, 楊曉東, 潘年華, 王偉, 王海, 胡海, 黃國宏 申請人:貴陽朗瑪信息技術股份有限公司