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