本發(fā)明涉及計算機技術(shù)領(lǐng)域,特別涉及一種更新元數(shù)據(jù)的方法、裝置和系統(tǒng)。
背景技術(shù):
元數(shù)據(jù),又稱中介數(shù)據(jù)、中繼數(shù)據(jù),是一種描述數(shù)據(jù)的數(shù)據(jù),主要是描述數(shù)據(jù)屬性的信息,用來支持如指示存儲位置、歷史數(shù)據(jù)、資源查找、文件記錄等功能。
在大部分應(yīng)用中,比如在使用社交購物網(wǎng)站、廣電、網(wǎng)絡(luò)視頻等會產(chǎn)生文本、圖片、音樂等大量的小內(nèi)存文件,在對每一個小內(nèi)存文件進(jìn)行寫入時,均要將每一個小內(nèi)存文件對應(yīng)的元數(shù)據(jù)更新至元數(shù)據(jù)服務(wù)器。
但是,小內(nèi)存文件流動快,操作頻繁,造成元數(shù)據(jù)服務(wù)器頻繁更新,使系統(tǒng)效能較低。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例提供了一種更新元數(shù)據(jù)的方法、裝置和系統(tǒng),能提高系統(tǒng)效能。
第一方面,本發(fā)明實施例提供了一種更新元數(shù)據(jù)的方法,該方法包括:
確定緩存數(shù)據(jù)以及所述緩存數(shù)據(jù)對應(yīng)的元數(shù)據(jù);
對所述元數(shù)據(jù)進(jìn)行緩存;
當(dāng)緩存的所述元數(shù)據(jù)達(dá)到更新條件時,利用緩存的所述元數(shù)據(jù)生成報文;
將所述報文發(fā)送給外部的元數(shù)據(jù)服務(wù)器,以通過所述報文更新所述外部的元數(shù)據(jù)服務(wù)器存儲的元數(shù)據(jù)。
優(yōu)選地,所述利用緩存的所述元數(shù)據(jù)生成報文,包括:
將緩存的所述元數(shù)據(jù)聚合成聚合文件;
針對所述聚合文件,循環(huán)執(zhí)行下述N1和N2,直到所述聚合文件中的所有元數(shù)據(jù)全部被抽取出:
N1:根據(jù)預(yù)先設(shè)定的數(shù)量標(biāo)準(zhǔn),從所述聚合文件中抽取與所述數(shù)量標(biāo)準(zhǔn)相應(yīng)數(shù)量的被抽取元數(shù)據(jù);
N2:將抽取的所述被抽取元數(shù)據(jù)組合,生成報文。
優(yōu)選地,在所述將所述報文發(fā)送給所述元數(shù)據(jù)服務(wù)器之后,進(jìn)一步包括:
接收所述外部的元數(shù)據(jù)服務(wù)器發(fā)送的更新結(jié)果,解析所述更新結(jié)果中每一個所述元數(shù)據(jù)對應(yīng)的反饋信息;
針對每一個所述元數(shù)據(jù)對應(yīng)的反饋信息,執(zhí)行:
S1:若所述反饋信息為更新成功,則執(zhí)行S2,若所述反饋信息為重新發(fā)送,則執(zhí)行S3;
S2:將所述反饋信息對應(yīng)的元數(shù)據(jù)在本地進(jìn)行同步更新,并結(jié)束當(dāng)前流程;
S3:將所述反饋信息對應(yīng)的元數(shù)據(jù)放入重發(fā)包,當(dāng)所述重發(fā)包達(dá)到更新閾值時,發(fā)送所述重發(fā)包給所述元數(shù)據(jù)服務(wù)器。
優(yōu)選地,所述當(dāng)所述重發(fā)包達(dá)到更新閾值時,發(fā)送所述重發(fā)包給所述元數(shù)據(jù)服務(wù)器,包括:以預(yù)先設(shè)置的時間間隔為周期,周期性地發(fā)送所述重發(fā)包給所述元數(shù)據(jù)服務(wù)器。
優(yōu)選地,所述當(dāng)所述重發(fā)包達(dá)到更新閾值時,發(fā)送所述重發(fā)包給所述元數(shù)據(jù)服務(wù)器,包括:當(dāng)所述重發(fā)包中的元數(shù)據(jù)的數(shù)量達(dá)到所述數(shù)量標(biāo)準(zhǔn)時,發(fā)送所述重發(fā)包給所述元數(shù)據(jù)服務(wù)器。
優(yōu)選地,在所述確定緩存數(shù)據(jù)之后,進(jìn)一步包括:
將所述緩存數(shù)據(jù)緩存至緩存數(shù)據(jù)包,當(dāng)所述緩存數(shù)據(jù)包的大小達(dá)到預(yù)先設(shè)定的內(nèi)存時,將所述緩存數(shù)據(jù)包寫入外部數(shù)據(jù)庫。
優(yōu)選地,在所述確定緩存數(shù)據(jù)之前,進(jìn)一步包括:
將所述緩存數(shù)據(jù)緩存至緩存數(shù)據(jù)包,當(dāng)所述緩存數(shù)據(jù)包的緩存時長達(dá)到預(yù)先設(shè)定的時長時,將所述緩存數(shù)據(jù)包寫入所述外部數(shù)據(jù)庫。
優(yōu)選地,所述當(dāng)緩存的所述元數(shù)據(jù)達(dá)到更新條件時,利用緩存的所述元數(shù)據(jù)生成報文,包括:
當(dāng)接收到所述外部數(shù)據(jù)庫發(fā)送的寫入反饋信息時,根據(jù)所述寫入反饋信息,確定發(fā)送成功的目標(biāo)緩存數(shù)據(jù)包,將緩存到所述目標(biāo)緩存數(shù)據(jù)包中的緩存數(shù)據(jù)對應(yīng)的元數(shù)據(jù)組合成報文。
第二方面,本發(fā)明實施例提供了一種更新元數(shù)據(jù)的裝置,該更新元數(shù)據(jù)的裝置包括:元數(shù)據(jù)緩存單元、報文生成單元和更新單元,其中,
所述元數(shù)據(jù)緩存單元,用于確定緩存數(shù)據(jù)以及所述緩存數(shù)據(jù)對應(yīng)的元數(shù)據(jù),并對所述元數(shù)據(jù)進(jìn)行緩存;
所述報文生成單元,用于當(dāng)所述元數(shù)據(jù)緩存單元緩存的所述元數(shù)據(jù)達(dá)到更新條件時,利用所述元數(shù)據(jù)緩存單元緩存的所述元數(shù)據(jù)生成報文;
所述更新單元,用于將所述報文生成單元生成的報文發(fā)送給外部的元數(shù)據(jù)服務(wù)器,以通過所述報文更新所述外部的元數(shù)據(jù)服務(wù)器存儲的元數(shù)據(jù)。
優(yōu)選地,所述報文生成單元,包括:聚合子單元和生成子單元,其中,
所述聚合子單元,用于將所述元數(shù)據(jù)緩存單元緩存的所述元數(shù)據(jù)聚合成聚合文件;
所述生成子單元,用于針對所述聚合子單元聚合成的聚合文件,循環(huán)執(zhí)行下述N1和N2,直到所述聚合文件中的所有元數(shù)據(jù)全部被抽取出:
N1:根據(jù)預(yù)先設(shè)定的數(shù)量標(biāo)準(zhǔn),從所述聚合文件中抽取與所述數(shù)量標(biāo)準(zhǔn)相應(yīng)數(shù)量的被抽取元數(shù)據(jù);
N2:將抽取的所述被抽取元數(shù)據(jù)組合,生成報文。
優(yōu)選地,該更新元數(shù)據(jù)的裝置進(jìn)一步包括:接收單元和處理單元,其中,
所述接收單元,用于接收所述外部的元數(shù)據(jù)服務(wù)器發(fā)送的更新結(jié)果,解析所述更新結(jié)果中每一個所述元數(shù)據(jù)對應(yīng)的反饋信息;
所述處理單元,用于針對每一個所述元數(shù)據(jù)對應(yīng)的反饋信息,執(zhí)行:
S1:若所述反饋信息為更新成功,則執(zhí)行S2,若所述反饋信息為重新發(fā)送,則執(zhí)行S3;
S2:將所述反饋信息對應(yīng)的元數(shù)據(jù)在本地進(jìn)行同步更新,并結(jié)束當(dāng)前流程;
S3:將所述反饋信息對應(yīng)的元數(shù)據(jù)放入重發(fā)包,當(dāng)所述重發(fā)包達(dá)到更新閾值時,發(fā)送所述重發(fā)包給所述元數(shù)據(jù)服務(wù)器。
優(yōu)選地,所述處理單元,用于以預(yù)先設(shè)置的時間間隔為周期,周期性地發(fā)送所述重發(fā)包給所述元數(shù)據(jù)服務(wù)器。
優(yōu)選地,所述處理單元,用于當(dāng)所述重發(fā)包中的元數(shù)據(jù)的數(shù)量達(dá)到所述數(shù)量標(biāo)準(zhǔn)時,發(fā)送所述重發(fā)包給所述元數(shù)據(jù)服務(wù)器。
優(yōu)選地,該更新元數(shù)據(jù)的裝置進(jìn)一步包括:寫入單元,用于將所述元數(shù)據(jù)緩存單元確定出的緩存數(shù)據(jù)緩存至緩存數(shù)據(jù)包,當(dāng)所述緩存數(shù)據(jù)包的大小達(dá)到預(yù)先設(shè)定的內(nèi)存時,將所述緩存數(shù)據(jù)包寫入外部數(shù)據(jù)庫。
優(yōu)選地,該更新元數(shù)據(jù)的裝置進(jìn)一步包括:寫入單元,用于將所述元數(shù)據(jù)緩存單元確定出的緩存數(shù)據(jù)緩存至緩存數(shù)據(jù)包,當(dāng)所述緩存數(shù)據(jù)包的緩存時長達(dá)到預(yù)先設(shè)定的時長時,將所述緩存數(shù)據(jù)包寫入所述外部數(shù)據(jù)庫。
第三方面,本發(fā)明實施例提供了一種更新元數(shù)據(jù)的系統(tǒng),該更新元數(shù)據(jù)的系統(tǒng)包括:元數(shù)據(jù)服務(wù)器和上述任一所述的更新元數(shù)據(jù)的裝置,其中,
所述元數(shù)據(jù)服務(wù)器,用于通過所述更新元數(shù)據(jù)的裝置發(fā)送的報文更新元數(shù)據(jù)。
本發(fā)明實施例提供了一種更新元數(shù)據(jù)的方法、裝置和系統(tǒng),通過確定緩存數(shù)據(jù)以及緩存數(shù)據(jù)對應(yīng)的元數(shù)據(jù),對確定的元數(shù)據(jù)進(jìn)行緩存,當(dāng)緩存的元數(shù)據(jù)達(dá)到更新條件時,利用緩存的元數(shù)據(jù)生成報文,將報文發(fā)送給外部的元數(shù)據(jù)服務(wù)器,以通過報文更新外部的元數(shù)據(jù)服務(wù)器存儲的元數(shù)據(jù)。由于該方法先對元數(shù)據(jù)進(jìn)行緩存,并利用緩存的元數(shù)據(jù)生成報文,使元數(shù)據(jù)服務(wù)器頻繁更新的過程,變?yōu)橐淮胃拢行У慕档土嗽獢?shù)據(jù)服務(wù)器更新頻率,從而能提高系統(tǒng)效能。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明一個實施例提供的一種更新元數(shù)據(jù)的方法的流程圖;
圖2是本發(fā)明一個實施例提供的另一種更新元數(shù)據(jù)的方法的流程圖;
圖3是本發(fā)明一個實施例提供的一種更新元數(shù)據(jù)的裝置的結(jié)構(gòu)示意圖;
圖4是本發(fā)明一個實施例提供的另一種更新元數(shù)據(jù)的裝置的結(jié)構(gòu)示意圖;
圖5是本發(fā)明一個實施例提供的又一種更新元數(shù)據(jù)的裝置的結(jié)構(gòu)示意圖;
圖6是本發(fā)明一個實施例提供的一種更新元數(shù)據(jù)的系統(tǒng)的結(jié)構(gòu)示意圖。
具體實施方式
為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例,基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動的前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
如圖1所示,本發(fā)明實施例提供了一種更新元數(shù)據(jù)的方法,該方法可以包括以下步驟:
步驟101:確定緩存數(shù)據(jù)以及所述緩存數(shù)據(jù)對應(yīng)的元數(shù)據(jù)。
步驟102:對所述元數(shù)據(jù)進(jìn)行緩存。
步驟103:當(dāng)緩存的所述元數(shù)據(jù)達(dá)到更新條件時,利用緩存的所述元數(shù)據(jù)生成報文。
步驟104:將所述報文發(fā)送給外部的元數(shù)據(jù)服務(wù)器,以通過所述報文更新所述外部的元數(shù)據(jù)服務(wù)器存儲的元數(shù)據(jù)。
在圖1所示的實施例中,通過確定緩存數(shù)據(jù)以及緩存數(shù)據(jù)對應(yīng)的元數(shù)據(jù),對確定的元數(shù)據(jù)進(jìn)行緩存,當(dāng)緩存的元數(shù)據(jù)達(dá)到更新條件時,利用緩存的元數(shù)據(jù)生成報文,將報文發(fā)送給外部的元數(shù)據(jù)服務(wù)器,以通過報文更新外部的元數(shù)據(jù)服務(wù)器存儲的元數(shù)據(jù)。由于該方法先對元數(shù)據(jù)進(jìn)行緩存,并利用緩存的元數(shù)據(jù)生成報文,使元數(shù)據(jù)服務(wù)器頻繁更新的過程,變?yōu)橐淮胃?,有效的降低了元?shù)據(jù)服務(wù)器更新頻率,從而能提高系統(tǒng)效能。
值得說明的是,元數(shù)據(jù)達(dá)到更新條件可以是該元數(shù)據(jù)對應(yīng)的緩存數(shù)據(jù)已經(jīng)寫入完成。
在本發(fā)明一個實施例中,為了確保每個元數(shù)據(jù)均被更新,所述利用緩存的所述元數(shù)據(jù)生成報文,包括:
將緩存的所述元數(shù)據(jù)聚合成聚合文件;
針對所述聚合文件,循環(huán)執(zhí)行下述N1和N2,直到所述聚合文件中的所有元數(shù)據(jù)全部被抽取出:
N1:根據(jù)預(yù)先設(shè)定的數(shù)量標(biāo)準(zhǔn),從所述聚合文件中抽取與所述數(shù)量標(biāo)準(zhǔn)相應(yīng)數(shù)量的被抽取元數(shù)據(jù);
N2:將抽取的所述被抽取元數(shù)據(jù)組合,生成報文。
在該實施例中,由于元數(shù)據(jù)服務(wù)器運行能力的不同以及數(shù)據(jù)讀寫頻率的不同,用戶可以根據(jù)實際情況對數(shù)量標(biāo)準(zhǔn)進(jìn)行設(shè)定。例如,數(shù)量標(biāo)準(zhǔn)可以是35個,50個,70個等。
在本發(fā)明一個實施例中,由于可能存在元數(shù)據(jù)服務(wù)器更新失敗的情況,因此需要對元數(shù)據(jù)服務(wù)器的更新結(jié)果進(jìn)行解析。在所述將所述報文發(fā)送給所述元數(shù)據(jù)服務(wù)器之后,進(jìn)一步包括:接收所述外部的元數(shù)據(jù)服務(wù)器發(fā)送的更新結(jié)果,解析所述更新結(jié)果中每一個所述元數(shù)據(jù)對應(yīng)的反饋信息;
針對每一個所述元數(shù)據(jù)對應(yīng)的反饋信息,執(zhí)行:
S1:若所述反饋信息為更新成功,則執(zhí)行S2,若所述反饋信息為重新發(fā)送,則執(zhí)行S3;
S2:將所述反饋信息對應(yīng)的元數(shù)據(jù)在本地進(jìn)行同步更新,并結(jié)束當(dāng)前流程;
S3:將所述反饋信息對應(yīng)的元數(shù)據(jù)放入重發(fā)包,當(dāng)所述重發(fā)包達(dá)到更新閾值時,發(fā)送所述重發(fā)包給所述元數(shù)據(jù)服務(wù)器。
在該實施例中,由于元數(shù)據(jù)服務(wù)器的運行能力有限,所以在對元數(shù)據(jù)更新的時候,可能會出現(xiàn)元數(shù)據(jù)服務(wù)器處于忙碌的狀態(tài),從而造成無法對元數(shù)據(jù)更新,此時元數(shù)據(jù)服務(wù)器就會反饋重新發(fā)送的信息。
值得說明的是,元數(shù)據(jù)服務(wù)器更新元數(shù)據(jù)的過程,也是元數(shù)據(jù)服務(wù)器對元數(shù)據(jù)進(jìn)行校驗,認(rèn)定的過程。因此會出現(xiàn)元數(shù)據(jù)檢驗未通過的情況,此時,元數(shù)據(jù)服務(wù)器則會反饋錯誤信息,并會寫入工作日志。
在本發(fā)明一個實施例中,所述當(dāng)所述重發(fā)包達(dá)到更新閾值時,發(fā)送所述重發(fā)包給所述元數(shù)據(jù)服務(wù)器,包括:以預(yù)先設(shè)置的時間間隔為周期,周期性地發(fā)送所述重發(fā)包給所述元數(shù)據(jù)服務(wù)器;
或者,
當(dāng)所述重發(fā)包中的元數(shù)據(jù)的數(shù)量達(dá)到所述數(shù)量標(biāo)準(zhǔn)時,發(fā)送所述重發(fā)包給所述元數(shù)據(jù)服務(wù)器。
在該實施例中,用戶可以根據(jù)元數(shù)據(jù)服務(wù)器的性能以及用戶自身的偏好,對重發(fā)機制進(jìn)行設(shè)定,在此可以設(shè)定更新時間的閾值。例如,時間間隔可以是3s、5s、10s等等。若更新時間為5s,則重發(fā)包每5s被重發(fā)一次。除此之外,用戶可以根據(jù)元數(shù)據(jù)服務(wù)器的性能以及用戶自身的偏好,還可以對重發(fā)包中的元數(shù)據(jù)的數(shù)量進(jìn)行數(shù)量閾值的設(shè)定,當(dāng)重發(fā)包中元數(shù)據(jù)的數(shù)量達(dá)到數(shù)量閾值時,則發(fā)送重發(fā)包。
值得說明的是,將數(shù)量標(biāo)準(zhǔn)作為重發(fā)包中元數(shù)據(jù)的數(shù)量閾值只是一種情況,重發(fā)包中的元數(shù)據(jù)的數(shù)量閾值也可以不與數(shù)量標(biāo)準(zhǔn)相同。
在本發(fā)明一個實施例中,為了減少元數(shù)據(jù)服務(wù)器的更新頻率,在所述確定緩存數(shù)據(jù)之后,進(jìn)一步包括:將所述緩存數(shù)據(jù)緩存至緩存數(shù)據(jù)包,當(dāng)所述緩存數(shù)據(jù)包的大小達(dá)到預(yù)先設(shè)定的內(nèi)存時,將所述緩存數(shù)據(jù)包寫入外部數(shù)據(jù)庫;
或者,
將所述緩存數(shù)據(jù)緩存至緩存數(shù)據(jù)包,當(dāng)所述緩存數(shù)據(jù)包的緩存時長達(dá)到預(yù)先設(shè)定的時長時,將所述緩存數(shù)據(jù)包寫入所述外部數(shù)據(jù)庫。
在該實施例中,每一個緩存數(shù)據(jù)對應(yīng)一個元數(shù)據(jù)。例如,在Ceph文件系統(tǒng)中,當(dāng)客戶端批量寫入小文件(比如社交購物網(wǎng)站、廣電、網(wǎng)絡(luò)視頻等產(chǎn)生文本、圖片、音樂等大量小文件)時,每一個小文件寫入客戶端都會發(fā)送元數(shù)據(jù)更新到元數(shù)據(jù)服務(wù)器,使得元數(shù)據(jù)服務(wù)器在通信以及處理的開銷比較大。因此可以將緩存數(shù)據(jù)以緊密方式對齊寫成一個數(shù)據(jù)包,當(dāng)數(shù)據(jù)包達(dá)到一定大小再寫入數(shù)據(jù)庫。而對于預(yù)先設(shè)定的內(nèi)存,用戶可以根據(jù)實際情況進(jìn)行設(shè)定。例如,預(yù)先設(shè)定的內(nèi)存為2M、4M、5M等等。但是,對于緩存數(shù)據(jù)少時仍使用預(yù)先設(shè)定的內(nèi)存進(jìn)行緩存數(shù)據(jù)的寫入,則不太現(xiàn)實,此時可以對緩存數(shù)據(jù)包的緩存時長進(jìn)行設(shè)定,緩存數(shù)據(jù)包的緩存時長達(dá)到一定的時間就開始寫入。例如,可以設(shè)定緩存包的緩存時長為5s,則緩存包的緩存時長達(dá)到5s,就開始寫入數(shù)據(jù)庫。
在本發(fā)明一個實施例中,為了確保更新的元數(shù)據(jù)的準(zhǔn)確性,所述當(dāng)緩存的所述元數(shù)據(jù)達(dá)到更新條件時,利用緩存的所述元數(shù)據(jù)生成報文,包括:
當(dāng)接收到所述外部數(shù)據(jù)庫發(fā)送的寫入反饋信息時,根據(jù)所述寫入反饋信息,確定發(fā)送成功的目標(biāo)緩存數(shù)據(jù)包,將緩存到所述目標(biāo)緩存數(shù)據(jù)包中的緩存數(shù)據(jù)對應(yīng)的元數(shù)據(jù)組合成報文。
在該實施例中,緩存數(shù)據(jù)包寫入外部數(shù)據(jù)庫成功后,外部數(shù)據(jù)庫會發(fā)送寫入成功的反饋信息,從而也就能夠確定發(fā)送成功的目標(biāo)緩存數(shù)據(jù)包。同時也只有目標(biāo)緩存數(shù)據(jù)包中的緩存數(shù)據(jù)所對應(yīng)的元數(shù)據(jù)才達(dá)到更新條件,可以繼續(xù)進(jìn)行更新流程,而沒有被寫入外部數(shù)據(jù)庫的緩存數(shù)據(jù)對應(yīng)的元數(shù)據(jù),則沒有達(dá)到更新條件,不可以繼續(xù)進(jìn)行更新流程,從而確保元數(shù)據(jù)更新的準(zhǔn)確性。
如圖2所示,本發(fā)明實施例提供了一種更新元數(shù)據(jù)的方法,該方法可以包括以下步驟:
步驟201:確定緩存數(shù)據(jù)以及緩存數(shù)據(jù)對應(yīng)的元數(shù)據(jù)。
在該步驟中,沒產(chǎn)生一個緩存數(shù)據(jù),則相應(yīng)的會產(chǎn)生一個元數(shù)據(jù),并緩存數(shù)據(jù)和元數(shù)據(jù)一一對應(yīng)。也可以將緩存數(shù)據(jù)緩存至緩存數(shù)據(jù)包,當(dāng)緩存數(shù)據(jù)包的緩存時長達(dá)到預(yù)先設(shè)定的時長時,將緩存數(shù)據(jù)包寫入外部數(shù)據(jù)庫。
步驟202:將緩存數(shù)據(jù)緩存至緩存數(shù)據(jù)包,當(dāng)緩存數(shù)據(jù)包的大小達(dá)到4M時,將緩存數(shù)據(jù)包寫入外部數(shù)據(jù)庫。
在該步驟中,用戶可以根據(jù)自身偏好,更改緩存數(shù)據(jù)包的大小,可以是3M、6M等等。并且也可以將緩存數(shù)據(jù)緩存至緩存數(shù)據(jù)包,當(dāng)緩存數(shù)據(jù)包的緩存時長達(dá)到預(yù)先設(shè)定的時長時,將緩存數(shù)據(jù)包寫入外部數(shù)據(jù)庫。
步驟203:對元數(shù)據(jù)進(jìn)行緩存。
步驟204:當(dāng)接收到外部數(shù)據(jù)庫發(fā)送的寫入反饋信息時,根據(jù)寫入反饋信息,確定發(fā)送成功的目標(biāo)緩存數(shù)據(jù)包,將目標(biāo)緩存數(shù)據(jù)包中的緩存數(shù)據(jù)對應(yīng)的元數(shù)據(jù)聚合成聚合文件。
在該步驟中,緩存數(shù)據(jù)包寫入外部數(shù)據(jù)庫成功后,外部數(shù)據(jù)庫會發(fā)送寫入成功的反饋信息,從而也就能夠確定發(fā)送成功的目標(biāo)緩存數(shù)據(jù)包。同時也只有目標(biāo)緩存數(shù)據(jù)包中的緩存數(shù)據(jù)所對應(yīng)的元數(shù)據(jù)才達(dá)到更新條件,可以繼續(xù)進(jìn)行更新流程,而沒有被寫入外部數(shù)據(jù)庫的緩存數(shù)據(jù)對應(yīng)的元數(shù)據(jù),則沒有達(dá)到更新條件,不可以繼續(xù)進(jìn)行更新流程。
步驟205:從聚合文件中抽取50個被抽取元數(shù)據(jù)。
在該步驟中,需要根據(jù)預(yù)先設(shè)定的數(shù)量標(biāo)準(zhǔn)進(jìn)行抽取元數(shù)據(jù),而數(shù)量標(biāo)準(zhǔn)可以根據(jù)用戶的偏好和元數(shù)據(jù)服務(wù)器的運行能力進(jìn)行自行設(shè)定。例如,數(shù)量標(biāo)準(zhǔn)還可以是45個、62個等等。聚合文件中含有310個元數(shù)據(jù),則需要從聚合文件中抽取7次。
步驟206:將50個被抽取元數(shù)據(jù)組合,生成報文。
步驟207:針對聚合文件,判斷聚合文件中的元數(shù)據(jù)是否全部被抽取出,若是,執(zhí)行步驟208,否則執(zhí)行步驟205。
在該步驟中,由于設(shè)定的數(shù)量標(biāo)準(zhǔn)是50個,而聚合文件中的元數(shù)據(jù)則可能不等于50,于是需要多次抽取。例如聚合文件中含有310個元數(shù)據(jù),每次抽取50個,則需要從聚合文件中抽取7次。
步驟208:將報文發(fā)送給外部的元數(shù)據(jù)服務(wù)器。
步驟209:接收外部的元數(shù)據(jù)服務(wù)器發(fā)送的更新結(jié)果,解析更新結(jié)果中每一個元數(shù)據(jù)對應(yīng)的反饋信息。
在該步驟中,元數(shù)據(jù)服務(wù)器更新元數(shù)據(jù)的過程,也是元數(shù)據(jù)服務(wù)器對元數(shù)據(jù)進(jìn)行校驗,認(rèn)定的過程。因此元數(shù)據(jù)服務(wù)器進(jìn)行元數(shù)據(jù)更新會出現(xiàn)多種情況,則會反饋多種不同的反饋信息。
步驟210:針對每一個元數(shù)據(jù)對應(yīng)的反饋信息,若反饋信息為更新成功,則執(zhí)行步驟211,若反饋信息為重新發(fā)送,則執(zhí)行步驟212。
步驟211:將反饋信息對應(yīng)的元數(shù)據(jù)在本地進(jìn)行同步更新,并結(jié)束當(dāng)前流程。
步驟212:將反饋信息對應(yīng)的元數(shù)據(jù)放入重發(fā)包,當(dāng)重發(fā)包達(dá)到更新閾值時,發(fā)送重發(fā)包給元數(shù)據(jù)服務(wù)器,并執(zhí)行步驟209。
在該步驟中,重發(fā)包的閾值可以是時間閾值也可以是數(shù)量閾值,當(dāng)為時間閾值時,以預(yù)先設(shè)置的時間間隔為周期,周期性地發(fā)送所述重發(fā)包給所述元數(shù)據(jù)服務(wù)器;當(dāng)為數(shù)量閾值時,當(dāng)所述重發(fā)包中的元數(shù)據(jù)的數(shù)量達(dá)到所述數(shù)量標(biāo)準(zhǔn)時,發(fā)送所述重發(fā)包給所述元數(shù)據(jù)服務(wù)器。
如圖3所示,本發(fā)明實施例提供了一種更新元數(shù)據(jù)的裝置,該更新元數(shù)據(jù)的裝置可以包括:元數(shù)據(jù)緩存單元301、報文生成單元302和更新單元303,其中,
所述元數(shù)據(jù)緩存單元301,用于確定緩存數(shù)據(jù)以及所述緩存數(shù)據(jù)對應(yīng)的元數(shù)據(jù),并對所述元數(shù)據(jù)進(jìn)行緩存;
所述報文生成單元302,用于當(dāng)所述元數(shù)據(jù)緩存單元301緩存的所述元數(shù)據(jù)達(dá)到更新條件時,利用所述元數(shù)據(jù)緩存單元301緩存的所述元數(shù)據(jù)生成報文;
所述更新單元303,用于將所述報文發(fā)送給外部的元數(shù)據(jù)服務(wù)器,以通過所述報文更新所述外部的元數(shù)據(jù)服務(wù)器存儲的元數(shù)據(jù)。
在該實施例中,通過元數(shù)據(jù)緩存單元確定緩存數(shù)據(jù)以及緩存數(shù)據(jù)對應(yīng)的元數(shù)據(jù),并對確定的元數(shù)據(jù)進(jìn)行緩存,當(dāng)元數(shù)據(jù)緩存單元緩存的元數(shù)據(jù)達(dá)到更新條件時,報文生成單元利用緩存的元數(shù)據(jù)生成報文,最后由更新單元將報文發(fā)送給外部的元數(shù)據(jù)服務(wù)器,以通過報文更新外部的元數(shù)據(jù)服務(wù)器存儲的元數(shù)據(jù)。由于該裝置先對元數(shù)據(jù)進(jìn)行緩存,并利用緩存的元數(shù)據(jù)生成報文,使元數(shù)據(jù)服務(wù)器頻繁更新的過程,變?yōu)橐淮胃拢行У慕档土嗽獢?shù)據(jù)服務(wù)器更新頻率,從而能提高系統(tǒng)效能。
如圖4所示,在本發(fā)明一個實施例中,為了確保每個元數(shù)據(jù)均被更新,所述報文生成單元302,包括:聚合子單元3021和生成子單元3022,其中,
所述聚合子單元3021,用于將所述元數(shù)據(jù)緩存單元301緩存的所述元數(shù)據(jù)聚合成聚合文件;
所述生成子單元3022,用于針對所述聚合子單元聚合成3021的聚合文件,循環(huán)執(zhí)行下述N1和N2,直到所述聚合文件中的所有元數(shù)據(jù)全部被抽取出:
N1:根據(jù)預(yù)先設(shè)定的數(shù)量標(biāo)準(zhǔn),從所述聚合文件中抽取與所述數(shù)量標(biāo)準(zhǔn)相應(yīng)數(shù)量的被抽取元數(shù)據(jù);
N2:將抽取的所述被抽取元數(shù)據(jù)組合,生成報文。
如圖5所示,在本發(fā)明一個實施例中,由于可能存在元數(shù)據(jù)服務(wù)器更新失敗的情況,因此需要對元數(shù)據(jù)服務(wù)器的更新結(jié)果進(jìn)行解析。該更新元數(shù)據(jù)的裝置可以進(jìn)一步包括:接收單元501和處理單元502,其中,
所述接收單元501,用于接收所述外部的元數(shù)據(jù)服務(wù)器發(fā)送的更新結(jié)果,解析所述更新結(jié)果中每一個所述元數(shù)據(jù)對應(yīng)的反饋信息;
所述處理單元502,用于針對每一個所述元數(shù)據(jù)對應(yīng)的反饋信息,執(zhí)行:
S1:若所述反饋信息為更新成功,則執(zhí)行S2,若所述反饋信息為重新發(fā)送,則執(zhí)行S3;
S2:將所述反饋信息對應(yīng)的元數(shù)據(jù)在本地進(jìn)行同步更新,并結(jié)束當(dāng)前流程;
S3:將所述反饋信息對應(yīng)的元數(shù)據(jù)放入重發(fā)包,當(dāng)所述重發(fā)包達(dá)到更新閾值時,發(fā)送所述重發(fā)包給所述元數(shù)據(jù)服務(wù)器。
在本發(fā)明一個實施例中,所述處理單元502,具體用于:以預(yù)先設(shè)置的時間間隔為周期,周期性地發(fā)送所述重發(fā)包給所述元數(shù)據(jù)服務(wù)器,或者,當(dāng)所述重發(fā)包中的元數(shù)據(jù)的數(shù)量達(dá)到所述數(shù)量標(biāo)準(zhǔn)時,發(fā)送所述重發(fā)包給所述元數(shù)據(jù)服務(wù)器。
在本發(fā)明一個實施例中,為了減少元數(shù)據(jù)服務(wù)器的更新頻率,該更新元數(shù)據(jù)的裝置可以進(jìn)一步包括:寫入單元(未在圖中示出),用于:將所述緩存數(shù)據(jù)緩存至緩存數(shù)據(jù)包,當(dāng)所述緩存數(shù)據(jù)包的大小達(dá)到預(yù)先設(shè)定的內(nèi)存時,將所述緩存數(shù)據(jù)包寫入外部數(shù)據(jù)庫,或者,將所述緩存數(shù)據(jù)緩存至緩存數(shù)據(jù)包,當(dāng)所述緩存數(shù)據(jù)包的緩存時長達(dá)到預(yù)先設(shè)定的時長時,將所述緩存數(shù)據(jù)包寫入所述外部數(shù)據(jù)庫。
上述裝置內(nèi)的各單元之間的信息交互、執(zhí)行過程等內(nèi)容,由于與本發(fā)明方法實施例基于同一構(gòu)思,具體內(nèi)容可參見本發(fā)明方法實施例中的敘述,此處不再贅述。
如圖6所示,本發(fā)明實施例提供了一種更新元數(shù)據(jù)的系統(tǒng),該更新元數(shù)據(jù)的系統(tǒng)可以包括:元數(shù)據(jù)服務(wù)器601和上述任一實施例中所述的更新元數(shù)據(jù)的裝置602,其中,
所述元數(shù)據(jù)服務(wù)器601,用于通過所述更新元數(shù)據(jù)的裝置602發(fā)送的報文更新元數(shù)據(jù)。
綜上,本發(fā)明的各實施例,至少具有如下有益效果:
1、在本發(fā)明實施例中,通過確定緩存數(shù)據(jù)以及緩存數(shù)據(jù)對應(yīng)的元數(shù)據(jù),對確定的元數(shù)據(jù)進(jìn)行緩存,當(dāng)緩存的元數(shù)據(jù)達(dá)到更新條件時,利用緩存的元數(shù)據(jù)生成報文,將報文發(fā)送給外部的元數(shù)據(jù)服務(wù)器,以通過報文更新外部的元數(shù)據(jù)服務(wù)器存儲的元數(shù)據(jù)。由于該方法先對元數(shù)據(jù)進(jìn)行緩存,并利用緩存的元數(shù)據(jù)生成報文,使元數(shù)據(jù)服務(wù)器頻繁更新的過程,變?yōu)橐淮胃?,有效的降低了元?shù)據(jù)服務(wù)器更新頻率,從而能提高系統(tǒng)效能。
2、在本發(fā)明實施例中,通過將元數(shù)據(jù)聚合成聚合文件,根據(jù)元數(shù)據(jù)服務(wù)器的運行能力,從中抽取一定數(shù)量的元數(shù)據(jù)進(jìn)行批量更新,有效的較少了元數(shù)據(jù)服務(wù)器的更新次數(shù),從而能夠進(jìn)一步提高系統(tǒng)效能。
3、在本發(fā)明實施例中,通過對元數(shù)據(jù)服務(wù)器發(fā)送的更新結(jié)果進(jìn)行解析,一方面可以為在元數(shù)據(jù)服務(wù)器上更新的元數(shù)據(jù)在本地進(jìn)行同步更新,另一方面可以為在元數(shù)據(jù)服務(wù)器上未更新的元數(shù)據(jù)進(jìn)行重發(fā)或者舍棄。
4、在本發(fā)明實施例中,通過將緩存數(shù)據(jù)先寫入緩存數(shù)據(jù)包,在達(dá)到寫入數(shù)據(jù)庫的條件時,才進(jìn)行批量寫入,從而對緩存數(shù)據(jù)進(jìn)行批量更新,能夠有效地減少系統(tǒng)讀寫數(shù)據(jù)壓力,從而能夠進(jìn)一步提高系統(tǒng)效能。
需要說明的是,在本文中,諸如第一和第二之類的關(guān)系術(shù)語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個······”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同因素。
本領(lǐng)域普通技術(shù)人員可以理解:實現(xiàn)上述方法實施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成,前述的程序可以存儲在計算機可讀取的存儲介質(zhì)中,該程序在執(zhí)行時,執(zhí)行包括上述方法實施例的步驟;而前述的存儲介質(zhì)包括:ROM、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)中。
最后需要說明的是:以上所述僅為本發(fā)明的較佳實施例,僅用于說明本發(fā)明的技術(shù)方案,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi)所做的任何修改、等同替換、改進(jìn)等,均包含在本發(fā)明的保護(hù)范圍內(nèi)。