專利名稱:內(nèi)容分發(fā)網(wǎng)絡(luò)中的多用戶配置方法
技術(shù)領(lǐng)域:
本發(fā)明涉及多用戶的配置文件加載技術(shù),尤其涉及一種內(nèi)容分發(fā)網(wǎng)絡(luò)中的多用戶配置方法。
背景技術(shù):
在軟件中加載多個用戶的配置是服務(wù)器軟件常用的一種技術(shù)。通過加載多個用戶的配置,可以讓一個軟件同時為多個用戶提供不同的服務(wù)功能,更有效地利用硬件和軟件資源?,F(xiàn)有技術(shù)通常采用配置項列表的方式來實現(xiàn)不同用戶的不同配置每個配置項允許配置多次,并在每次配置時加上匹配條件;當(dāng)使用到該配置項時,順序遍歷或以其他方式遍歷該配置項的配置列表,并檢查列表中每一個配置項的匹配條件,找到與處理任務(wù)相匹配的配置?,F(xiàn)有技術(shù)的配置方式雖然簡單易操作,但是也存在著很多問題I.相同的條件匹配會重復(fù)執(zhí)行有些功能需要配置多 個配置項才能正常工作,當(dāng)需要為某個用戶開啟該功能時,就需要為這些功能的多個配置項分別配置相同的匹配規(guī)則;并且一個客戶開啟多個功能項時,這些功能項也要配置相同的匹配規(guī)則,每個配置項都需要單獨匹配,同一個配置規(guī)則會
重復(fù)匹配。2.配置項的匹配方式效率低下如果有多個客戶需要使用同一功能,則需要在該配置項的匹配條件中為每個客戶增加一條匹配規(guī)則,最常見的是規(guī)則表達(dá)式匹配。檢查某個配置項的匹配條件需要嘗試所有規(guī)則表達(dá)式,當(dāng)客戶數(shù)量非常巨大時(如幾千或幾萬個),每個配置項中都包含數(shù)量巨大的匹配規(guī)則,檢查這些規(guī)則將變成軟件運行的瓶頸。3.單個用戶的配置影響其他用戶的配置。每個配置項都關(guān)系到多個用戶,現(xiàn)有技術(shù)中的配置文件是以“配置項”來組織的,當(dāng)增加一個用戶或原有用戶的配置變更時,需要重新加載所有用戶的配置,加大了更新配置的風(fēng)險。由上,現(xiàn)有技術(shù)中的配置方式以及配置文件在實際使用時,不同用戶的配置內(nèi)容仍然會相互影響,當(dāng)服務(wù)的用戶不斷增加時,執(zhí)行效率會變得越來越低。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供一種內(nèi)容分發(fā)網(wǎng)絡(luò)中的多用戶配置方法,按照用戶來組織和使用配置項,避免了不同用戶配置的相互影響,提高了配置文件加載和配置項查找的效率。為解決上述技術(shù)問題,本發(fā)明提供了一種內(nèi)容分發(fā)網(wǎng)絡(luò)中的多用戶配置方法,包括
讀取配置文件;
對所述配置文件進(jìn)行解析,為所述配置文件中的每一用戶分別創(chuàng)建用戶配置,并將所述配置文件中各用戶名下的配置項保存在對應(yīng)用戶的用戶配置中。
根據(jù)本發(fā)明的一個實施例,該方法還包括:
逐個讀取所述用戶配置;
查詢是否存在當(dāng)前用戶的上級配置,該上級配置包含該當(dāng)前用戶所屬的用戶組的公共配置信息;
如果存在,則將查詢到的上級配置設(shè)置在該當(dāng)前用戶的用戶配置中。
根據(jù)本發(fā)明的一個實施例,該方法還包括:如果不存在當(dāng)前用戶的上級配置,則在該當(dāng)前用戶的用戶配置內(nèi)將該當(dāng)前用戶的上級配置設(shè)置為空,或者該當(dāng)前用戶的用戶配置內(nèi)將該當(dāng)前用戶的上級配置設(shè)置為預(yù)設(shè)的全局默認(rèn)配置。
根據(jù)本發(fā)明的一個實施例,該方法還包括:在所述用戶配置創(chuàng)建完成后將其插入全局表。
根據(jù)本發(fā)明的一個實施例,所述全局表采用哈希表的方式存儲不同用戶的用戶配置,所述哈希表的關(guān)鍵字為每一用戶的用戶名。
根據(jù)本發(fā)明的一個實施例,該方法還包括:
在進(jìn)行用戶識別時,根據(jù)指定用戶的用戶名在所述全局表中查詢對應(yīng)的用戶配置;
在查詢到的用戶配置中查詢指定的配置項是否存在;
如果所述查詢到的用戶配置中存在該指定的配置項,則返回所述指定的配置項的值。
根據(jù)本發(fā)明的一個實施例,該方法還包括:
如果所述查詢到的用戶配置中不存在該指定的配置項,則查找該指定用戶的上級配置是否存在;
如果所述指定用 戶的上級配置存在,則返回將該上級配置中的該指定的配置項的值。
根據(jù)本發(fā)明的一個實施例,該方法還包括:如果所述指定用戶的上級配置不存在,則該指定的配置項的值返回為空。
根據(jù)本發(fā)明的一個實施例,每一用戶的用戶配置分別存儲于不同文件中。
與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點:
本發(fā)明實施例的多用戶配置方法中,為每一用戶創(chuàng)建獨立的用戶配置結(jié)構(gòu),與該用戶相關(guān)的配置項都保存在該用戶的用戶配置中,這不僅方便了配置項的管理,也加快了配置項的查找。在處理任務(wù)過程中,只需要在任務(wù)開始時根據(jù)任務(wù)所屬的用戶查找匹配的用戶配置結(jié)構(gòu),則該任務(wù)的全部配置項都在該用戶配置結(jié)構(gòu)中,獲取每個配置項時無需再做條件匹配。
進(jìn)一步而言,本發(fā)明實施例的多用戶配置方法中,將用戶配置結(jié)構(gòu)保存在采用哈希表結(jié)構(gòu)的全局表中,采用每個用戶的用戶名作為哈希表的關(guān)鍵字,在匹配時就不需要查找所有的匹配條件,只需要做一次哈希查找就可以找到對應(yīng)的用戶配置,使得查找時間幾乎與用戶數(shù)目無關(guān),不會因為用戶數(shù)量的增加而影響匹配速度。
此外,本發(fā)明實施例的多用戶配置方法還實現(xiàn)了嵌套配置,在識別用戶時,如果該用戶的用戶配置中存在指定配置項則使用該指定配置項,如果不存在則使用該用戶所屬的用戶組的公共配置信息。
圖1是本發(fā)明實施例的內(nèi)容分發(fā)網(wǎng)絡(luò)中的多用戶配置方法的流程示意圖2是本發(fā)明實施例的多用戶配置方法中創(chuàng)建用戶配置的流程圖3是本發(fā)明實施例的多用戶配置方法中嵌套配置初始化流程圖4是本發(fā)明實施例的多用戶配置方法中的用戶配置的結(jié)構(gòu)示意圖5是本發(fā)明實施例的多用戶配置方法中的用戶配置在用于用戶識別時的流程圖。
具體實施方式
下面結(jié)合具體實施例和附圖對本發(fā)明作進(jìn)一步說明,但不應(yīng)以此限制本發(fā)明的保護(hù)范圍。
參考圖1,本實施例在內(nèi)容分發(fā)網(wǎng)絡(luò)中的多用戶配置方法包括如下步驟:
步驟SI I,讀取配置文件;
步驟S12,對所述配置文件進(jìn)行解析,為所述配置文件中的每一用戶分別創(chuàng)建用戶配置,并將所述配置文件中各用戶名下的配置項保存在對應(yīng)用戶的用戶配置中;
步驟S13,對生成的用戶配置進(jìn)行初始化,設(shè)置各個用戶和用戶組之間的包含關(guān)系;
步驟S14,采 用所述用戶配置對用戶進(jìn)行識別。
其中,步驟Sll中的配置文件指的是原始的配置文件,其可以是如背景技術(shù)所述的以配置項來組織的配置文件,例如是以配置項為索引而建立的配置文件,或者也可以現(xiàn)有技術(shù)中其他任意形式的配置文件。
下面對各個上述各個步驟進(jìn)行詳細(xì)說明。
參考圖2,圖2示出了配置文件的加載以及用戶配置的生成過程。
在S21處,創(chuàng)建用戶配置。進(jìn)一步而言,在讀取原始的配置文件時,對該配置文件進(jìn)行解析,當(dāng)配置文件出現(xiàn)某個用戶名時,為該用戶名創(chuàng)建一個用戶配置,剛開始創(chuàng)建的用戶配置可以是一個空的用戶配置。
在S22處,讀取配置項。進(jìn)一步而言,在為一個用戶名創(chuàng)建用戶配置后,讀取并解析該用戶名下的配置項,將對應(yīng)于該用戶名的各個配置項的值保存在先前創(chuàng)建的用戶配置中,例如可以在創(chuàng)建的用戶配置中標(biāo)記該配置項存在。
在S23處,繼續(xù)讀取配置文件,查找是否有該用戶的其他配置,如果有,則轉(zhuǎn)回S22,如果沒有,則當(dāng)前用戶名的用戶配置創(chuàng)建完成,前進(jìn)至S24。
在S24處,查找全局表,在全局表中查詢是否已存在該用戶的用戶配置,如果存在,則前進(jìn)至S25,刪除舊用戶,也就是刪除該用戶的舊的用戶配置,并前進(jìn)至S26,將新創(chuàng)建的該用戶的用戶配置插入全局表中。
如果在S24處,全局表中不存在該用戶的用戶配置,則將其插入至全局表中。
當(dāng)加載原始的配置文件后,其中全部用戶的用戶配置都創(chuàng)建完成后,全局表中存儲有以用戶為索引的多個用戶配置。之后對全局表中的各個配置文件進(jìn)行初始化以支持嵌套配置,如圖3所示。
在S31處,讀取用戶配置。進(jìn)一步而言,讀取一個未初始化的用戶配置。
在S32處,查找上級配置。進(jìn)一步而言,在全局表中查找當(dāng)前用戶的上級配置,該上級配置中包含有當(dāng)前用戶所述的用戶組的公共配置信息。
如果當(dāng)前用戶存在上級配置,則前進(jìn)至S33,將查詢到的上級配置設(shè)置在當(dāng)前用戶的用戶配置中,例如可以設(shè)置指針,將相應(yīng)的配置項指向上級配置。
如果在全局表中未找到當(dāng)前用戶的上級配置,則前進(jìn)至S34,將當(dāng)前用戶的上級配置設(shè)置為空?;蛘撸谝粋€優(yōu)選的實施例中,可以定義一個全局默認(rèn)配置,當(dāng)某個用戶沒有上級配置時,將該全局默認(rèn)配置設(shè)置為該用戶的上級配置。
在S35處,判斷是否所有用戶都完成設(shè)置,如果否的話,返回S31,對下一個用戶配置進(jìn)行初始化;如果是的話,則前進(jìn)至S36,結(jié)束初始化過程。
在創(chuàng)建用戶配置以及對各個用戶配置進(jìn)行初始化后,多個用戶配置的組織結(jié)構(gòu)如圖4所示。
全局表41包含全部用戶以及用戶組的配置,進(jìn)一步而言,各個用戶的配置指的是用戶配置,而用戶組的配置指的是上級配置。
每個用戶或者用戶組的配置可以包含多個配置項以及上級指針,每個配置項可以設(shè)置一個標(biāo)志以標(biāo)識其是否存在。初始化結(jié)束后,全局表以及每個用戶配置的上級配置都正確設(shè)置。
例如,用戶I的用戶配置42包含配置項1、配置項2......以及上一級指針,該上一級指針指向的上級配置為用戶組I的配置40 ;用戶2的用戶配置43包含配置項1、配置項2......上一級以及上一級指針,該上一級指針指向的上級配置為用戶組I的配置40,也即用戶I和用戶2同樣都屬于用戶組I。
優(yōu)選地,各個用戶的用戶配置可以分別存儲在各個不同的單獨文件中,這樣可以單獨加載、重載或卸載某個用戶的用戶配置,而不會影響到其他用戶配置的使用。
在任務(wù)開始時,可以通過全局表41查找該任務(wù)對應(yīng)的用戶配置結(jié)構(gòu),由于全局表41是以用戶名為索引來組織多個用戶配置的,因而無需對每個配置項都做條件匹配,加快了用戶配置過程。在使 用配置項時,可以從找到的用戶配置中獲取該配置項,如果找到的用戶配置中沒有該配置項,則可以通過上級指針找到該用戶的上級配置,從而在其上級配置中查找該配置項。
另外,為了加快全局表的查找速度,優(yōu)選地,全局表41可以米用哈希表的方式存儲不同用戶的用戶配置,哈希表的關(guān)鍵字是每個用戶的用戶名。哈希表是根據(jù)關(guān)鍵字訪問對應(yīng)記錄的一種通用數(shù)據(jù)結(jié)構(gòu),通過將不同的關(guān)鍵字映射為不同的哈希值,按哈希值存儲在散列表的對應(yīng)位置中,在查找某個關(guān)鍵字時,將查詢的關(guān)鍵字轉(zhuǎn)化為哈希值,就能找到目標(biāo)記錄對應(yīng)的散列地址。用哈希表來替代傳統(tǒng)的規(guī)則匹配列表,在匹配時就不需要檢查所有的匹配條件,只需要做一次哈希查找就可以找到對應(yīng)的配置項,使查找時間與用戶數(shù)目無關(guān),不會因為客戶數(shù)量的增加而影響匹配速度。
在用戶配置創(chuàng)建以及初始化結(jié)束后,可以采用生成的全局表、用戶配置來對用戶進(jìn)行識別,其具體過程如圖5所示。
在S51處,查找用戶配置。進(jìn)一步而言,根據(jù)任務(wù)運行時的用戶名在全局表中查找對應(yīng)的用戶配置。
在S52處,取出用戶配置信息。其中,用戶配置信息包括用戶配置中的各個配置項、指示上級配置的上級指針等。
在S53處,查詢配置項是否存在。進(jìn)一步而言,在找到的用戶配置中查詢指定的配置項是否存在,如果存在,則前進(jìn)至S54,讀取該指定的配置項,將該配置項的值返回。
如果不存在,則轉(zhuǎn)向S55,查看該用戶是否存在上級配置,如果有,則轉(zhuǎn)回S52,將上級配置中的用戶配置信息讀出,其中包含有當(dāng)前用戶所述的用戶組的公共配置項的設(shè)置。
如果該用戶沒有上級配置,則前進(jìn)至S56,該指定的配置項沒有值,返回為空。在使用全局默認(rèn)配置的情況下,該用戶的上級配置為全局默認(rèn)配置,因此可以在全局默認(rèn)配置中查找該指定的配置項,并將該配置項的值返回。
之后,可以繼續(xù)讀取該用戶的其他配置項,具體過程為重復(fù)S52至S56。
需要說明的是,用戶組是一個特殊的用戶名,其代表多個用戶的集合,用戶組內(nèi)多個用戶的公共配置,可以僅配置在用戶組配置中,而不需要對每個用戶進(jìn)行單獨配置。用戶組的關(guān)系可以多層 嵌套,例如用戶組namel包含用戶I和用戶2 ;用戶組name2包含用戶3和用戶4 ;用戶組name3包含用戶組namel和用戶組name2。在識別用戶時,對于某個指定的配置項,如果當(dāng)前用戶的用戶配置中存在,則使用該用戶配置中的值,沒有的話則使用該用戶所屬的用戶組的配置的值,多層嵌套的情況以最小粒度的配置為準(zhǔn),也即優(yōu)先采用用戶配置,進(jìn)而是較低級的用戶組的配置,之后是較高級的用戶組的配置。
綜上,本實施例的多用戶配置方法中,按用戶來組織配置,每個用戶使用一個獨立的用戶配置結(jié)構(gòu),所有與該用戶相關(guān)的配置項都保存在該用戶的用戶配置結(jié)構(gòu)中。為每個用戶創(chuàng)建一個用戶配置結(jié)構(gòu),不同用戶的用戶配置結(jié)構(gòu)中相同的配置項的值可以是不一樣的。每個用戶配置結(jié)構(gòu)匹配一個用戶,用戶配置結(jié)構(gòu)中的每個配置項不再需要單獨的匹配條件,這不僅方便了配置項的管理,也加快了配置的查找。在處理一個任務(wù)過程中,只需要在任務(wù)開始時根據(jù)任務(wù)所屬的用戶找到匹配的用戶配置結(jié)構(gòu),則該任務(wù)的所有配置項都在該結(jié)構(gòu)中,獲取每個配置項時不再需要做條件匹配。
本發(fā)明雖然以較佳實施例公開如上,但其并不是用來限定本發(fā)明,任何本領(lǐng)域技術(shù)人員在不脫離本發(fā)明的精神和范圍內(nèi),都可以做出可能的變動和修改,因此本發(fā)明的保護(hù)范圍應(yīng)當(dāng)以本發(fā)明權(quán)利要求所界定的范圍為準(zhǔn)。
權(quán)利要求
1.一種內(nèi)容分發(fā)網(wǎng)絡(luò)中的多用戶配置方法,其特征在于,包括 讀取配置文件; 對所述配置文件進(jìn)行解析,為所述配置文件中的每一用戶分別創(chuàng)建用戶配置,并將所述配置文件中各用戶名下的配置項保存在對應(yīng)用戶的用戶配置中。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,還包括 逐個讀取所述用戶配置; 查詢是否存在當(dāng)前用戶的上級配置,該上級配置包含該當(dāng)前用戶所屬的用戶組的公共配置信息; 如果存在,則將查詢到的上級配置設(shè)置在該當(dāng)前用戶的用戶配置中。
3.根據(jù)權(quán)利要求2所 述 的多用戶配置方法,其特征在于,還包括 如果不存在當(dāng)前用戶的上級配置,則在該當(dāng)前用戶的用戶配置內(nèi)將該當(dāng)前用戶的上級配置設(shè)置為空,或者該當(dāng)前用戶的用戶配置內(nèi)將該當(dāng)前用戶的上級配置設(shè)置為預(yù)設(shè)的全局默認(rèn)配置。
4.根據(jù)權(quán)利要求2中任一項所述的多用戶配置方法,其特征在于,還包括在所述用戶配置創(chuàng)建完成后將其插入全局表。
5.根據(jù)權(quán)利要求4所述的多用戶配置方法,其特征在于,所述全局表采用哈希表的方式存儲不同用戶的用戶配置,所述哈希表的關(guān)鍵字為每一用戶的用戶名。
6.根據(jù)權(quán)利要求4所述的多用戶配置方法,其特征在于,還包括 在進(jìn)行用戶識別時,根據(jù)指定用戶的用戶名在所述全局表中查詢對應(yīng)的用戶配置; 在查詢到的用戶配置中查詢指定的配置項是否存在; 如果所述查詢到的用戶配置中存在該指定的配置項,則返回所述指定的配置項的值。
7.根據(jù)權(quán)利要求6所述的多用戶配置方法,其特征在于,還包括 如果所述查詢到的用戶配置中不存在該指定的配置項,則查找該指定用戶的上級配置是否存在; 如果所述指定用戶的上級配置存在,則返回將該上級配置中的該指定的配置項的值。
8.根據(jù)權(quán)利要求7所述的多用戶配置方法,其特征在于,還包括 如果所述指定用戶的上級配置不存在,則該指定的配置項的值返回為空。
9.根據(jù)權(quán)利要求I所述的多用戶配置方法,其特征在于,每一用戶的用戶配置分別存儲于不同文件中。
全文摘要
本發(fā)明提供了一種內(nèi)容分發(fā)網(wǎng)絡(luò)中的多用戶配置方法,包括讀取配置文件;對所述配置文件進(jìn)行解析,為所述配置文件中的每一用戶分別創(chuàng)建用戶配置,并將所述配置文件中各用戶名下的配置項保存在對應(yīng)用戶的用戶配置中。本發(fā)明按照用戶來組織和使用配置項,避免了不同用戶配置的相互影響,提高了配置文件加載和配置項查找的效率。
文檔編號H04L29/08GK103220355SQ20131013916
公開日2013年7月24日 申請日期2013年4月19日 優(yōu)先權(quán)日2013年4月19日
發(fā)明者洪珂, 鄒寧勇, 周靖山 申請人:網(wǎng)宿科技股份有限公司