專利名稱:基于對等結(jié)構(gòu)的分布式高維索引并行查詢框架的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機信息檢索技術(shù)領(lǐng)域,特別涉及一種基于對等結(jié)構(gòu)的分布式高維索引并行查詢框架。
背景技術(shù):
基于內(nèi)容的圖像檢索、視頻檢索等技術(shù)的迅速發(fā)展,使得高維索引技術(shù)得到越來越廣泛的發(fā)展和應(yīng)用。高維索引技術(shù)的應(yīng)用,主要是為了加快檢索速度,進而提升用戶的查詢體驗。在目前已有的絕大部分應(yīng)用中,高維索引的查詢實際上就是在語義層面上檢索查詢對象的前k個最近鄰(k Nearest Neighbors,簡稱kNN)。一般而言,基于內(nèi)容的檢索技術(shù)首先需要將海量的候選對象(圖像、視頻等)轉(zhuǎn)化為高維特征向量,以量化的形式盡可能保存對象本身的特征。然后,需要對提取出來的海量高維向量進行索引。當(dāng)用戶提交查詢對象時,經(jīng)過量化轉(zhuǎn)化為同等維度的高維特征向量,并利用高維索引結(jié)構(gòu),快速檢索出其kNN,并將結(jié)果返回。在大部分應(yīng)用場景下,高維索引的創(chuàng)建是允許離線的,對于實時性沒有過高的要求,但對穩(wěn)定性、可靠性和完整性要求較高。而對于高維索引的查詢,實際應(yīng)用中的需求十分明確和嚴格,必須是盡可能精確、快速、可靠,并且支持動態(tài)增減的海量候選對象的檢索。這也正是本發(fā)明著重思考和解決的問題。隨著各類應(yīng)用的推廣,高維索引技術(shù)在學(xué)術(shù)界和工業(yè)界都引起了廣泛的關(guān)注,并涌現(xiàn)了大量提升高維索引創(chuàng)建和查詢效率的算法與方案。高維索引的效率提升策略,目前總體上可以劃分為三大類。第一類是以降低kNN精確度的代價來提高效率的,亦即只查詢近似kNN。第二類則是通過改變索引結(jié)構(gòu)提升索引的創(chuàng)建和查詢速度,但是經(jīng)過幾十年的研究,目前尚未發(fā)現(xiàn)十分高效的支持上百維甚至更高維度的索引結(jié)構(gòu)。第三類則是從索引系統(tǒng)的架構(gòu)上進行改進,通過引入并行索引系統(tǒng)提升創(chuàng)建和查詢的速度,然而,目前在實時可靠并行系統(tǒng)的研究方面,由于技術(shù)壁壘的存在,相關(guān)技術(shù)很難被廣泛應(yīng)用。另外,傳統(tǒng)的主從式索引查詢架構(gòu)缺乏自組織性,并且容易出現(xiàn)性能瓶頸。
發(fā)明內(nèi)容
本發(fā)明旨在至少解決上述技術(shù)問題之一。為此,本發(fā)明的一個目的在于提出一種基于對等結(jié)構(gòu)的分布式高維索引并行查詢框架,該分布式高維索引并行查詢框架基于對等結(jié)構(gòu),具有實時的、可靠的、支持動態(tài)增減的海量候選對象檢索的優(yōu)點,且查詢速度快。為了實現(xiàn)上述目的,本發(fā)明的實施例提出了一種基于對等結(jié)構(gòu)的分布式高維索引并行查詢框架,包括索引創(chuàng)建模塊、監(jiān)視器模塊、對等站點集群以及負載軟均衡模塊,其中,所述索引創(chuàng)建模塊用于對海量候選對象進行分割并為每個分割部分創(chuàng)建索引以得到多個索引塊文件,并對所述索引塊文件進行存儲,其中,所述索引塊文件包括索引塊信息,所述監(jiān)視器模塊用于檢測所述對等站點集群中的工作站點的可用內(nèi)存信息以及每個工作站點對應(yīng)的索引塊信息以根據(jù)檢測結(jié)果對每個工作站點所加載的索引塊進行協(xié)調(diào)以及向每個工作站點發(fā)送對等站點列表更新指令,所述對等站點集群中的工作站點根據(jù)自身的索引塊信息對相應(yīng)的索引塊文件進行加載或卸載,且根據(jù)用戶發(fā)送的查詢請求在相應(yīng)的索引塊文件中進行查詢并將查詢結(jié)果進行整合和輸出,所述負載軟均衡模塊用于獲取所述監(jiān)視器模塊中的當(dāng)前工作站點列表以根據(jù)所述工作站點列表對當(dāng)前工作站點進行負載均衡控制,且所述負載軟均衡模塊定時由所述監(jiān)視器模塊進行同步以便所述負載軟均衡模塊對當(dāng)前可用的工作站點列表進行調(diào)整和更新。根據(jù)本發(fā)明實施例的基于對等結(jié)構(gòu)的分布式高維索引并行查詢框架采用效率高的索引結(jié)構(gòu),具體地,采用Hybrid Spill Tree作為基本的索引結(jié)構(gòu)(高維索引結(jié)構(gòu)),且采用對等站點的架構(gòu)方式,在實時性、可靠性、穩(wěn)定性、可擴展性、自組 織性等方面都做了較為全面的保障??梢愿咝нM行查詢,并且具有較強的可擴展性,可以方便地遷移到各種基于內(nèi)容的搜索系統(tǒng)中,且具有查詢速度快的優(yōu)點。另外,該基于對等結(jié)構(gòu)的分布式高維索引并行查詢框架結(jié)構(gòu)清晰,易于實現(xiàn)。另外,根據(jù)本發(fā)明上述實施例的基于對等結(jié)構(gòu)的分布式高維索引并行查詢框架還可以具有如下附加的技術(shù)特征在本發(fā)明的一個實施例中,所述索引創(chuàng)建模塊進一步包括索引創(chuàng)建子模塊,所述索引創(chuàng)建子模塊采用Map Reduce框架對多個數(shù)據(jù)分割部分并行創(chuàng)建索引以得到所述多個索引塊文件;分布式存儲系統(tǒng),所述分布式存儲系統(tǒng)用于保存所述多個索引塊文件。在本發(fā)明的一個實施例中,所述監(jiān)視器模塊還用于在檢測到索引塊文件更新后對非工作站點集群發(fā)送索引加載指令以使所述非工作站點集群進入工作狀態(tài),所述索引塊文件加載完畢后所述監(jiān)視器模塊將進行集群切換,并使用已加載最新索引的工作站點集群,將原有工作站點集群置于非工作狀態(tài)。在本發(fā)明的一個實施例中,所述監(jiān)視器模塊根據(jù)所述檢測結(jié)果判斷當(dāng)前的工作站點中是否存在失效站點,并在檢測到存在失效站點時向當(dāng)前可用的工作站點發(fā)送對等站點列表更新指令。在本發(fā)明的一個實施例中,當(dāng)有非工作站點加入所述工作站點集群時向所述監(jiān)視器模塊進行注冊,以便所述監(jiān)視器模塊對所述工作站點列表進行更新,并將所述更新后的工作站點列表發(fā)送給所述負載軟均衡模塊,同時將更新后的對等站點列表發(fā)送到所有所述工作站點。在本發(fā)明的一個實施例中,當(dāng)所述對等站點集群中的每個工作站點接收到查詢請求時,創(chuàng)建主進程并根據(jù)自身的索引塊信息創(chuàng)建多個相應(yīng)的子進程,以使每個子進程從對應(yīng)的已加載索引塊中進行查詢,并將查詢結(jié)果發(fā)送給主進程并通過主進程進行整合發(fā)送。在本發(fā)明的一個實施例中,所述主進程還用于響應(yīng)其它工作站點中分發(fā)的查詢請求。在本發(fā)明的一個實施例中,所述子進程對主進程進行監(jiān)測,以便在所述主進程意外退出時自動關(guān)閉。在本發(fā)明的一個實施例中,所述負載軟均衡模塊包括多個負載軟均衡站點,且所述負載軟均衡模塊維護所述當(dāng)前可用的工作站點列表。在本發(fā)明的一個實施例中,所述索引塊文件采用Hybird Spill Tree數(shù)據(jù)結(jié)構(gòu)。本發(fā)明的附加方面和優(yōu)點將在下面的描述中部分給出,部分將從下面的描述中變得明顯,或通過本發(fā)明的實踐了解到。
本發(fā)明的上述和 /或附加的方面和優(yōu)點從結(jié)合下面附圖對實施例的描述中將變得明顯和容易理解,其中圖I為本發(fā)明實施例的基于對等結(jié)構(gòu)的分布式高維索引并行查詢框架的示意圖;以及圖2為本發(fā)明實施例的基于對等結(jié)構(gòu)的分布式高維索引并行查詢框架的架構(gòu)圖。
具體實施例方式下面詳細描述本發(fā)明的實施例,所述實施例的示例在附圖中示出,其中自始至終相同或類似的標(biāo)號表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實施例是示例性的,僅用于解釋本發(fā)明,而不能理解為對本發(fā)明的限制。在本發(fā)明的描述中,需要理解的是,術(shù)語“中心”、“縱向”、“橫向”、“上”、“下”、“前”、“后”、“左”、“右”、“豎直”、“水平”、“頂”、“底”、“內(nèi)”、“外”等指示的方位或位置關(guān)系為基于附圖所示的方位或位置關(guān)系,僅是為了便于描述本發(fā)明和簡化描述,而不是指示或暗示所指的裝置或元件必須具有特定的方位、以特定的方位構(gòu)造和操作,因此不能理解為對本發(fā)明的限制。此外,術(shù)語“第一”、“第二”僅用于描述目的,而不能理解為指示或暗示相對重要性。在本發(fā)明的描述中,需要說明的是,除非另有明確的規(guī)定和限定,術(shù)語“安裝”、“相連”、“連接”應(yīng)做廣義理解,例如,可以是固定連接,也可以是可拆卸連接,或一體地連接;可以是機械連接,也可以是電連接;可以是直接相連,也可以通過中間媒介間接相連,可以是兩個元件內(nèi)部的連通。對于本領(lǐng)域的普通技術(shù)人員而言,可以具體情況理解上述術(shù)語在本發(fā)明中的具體含義。以下結(jié)合附圖描述本發(fā)明實施例的基于對等結(jié)構(gòu)的分布式高維索引并行查詢框架。參見圖I和圖2,根據(jù)本發(fā)明實施例的基于對等結(jié)構(gòu)的分布式高維索引并行查詢框架100包括索引創(chuàng)建模塊Builder、監(jiān)視器模塊Monitor、對等站點集群以及負載軟均衡模塊Balancer。其中索引創(chuàng)建模塊Builder用于對海量候選對象進行分割并為每個分割部分創(chuàng)建索引以得到多個索引塊文件,并對所述索引塊文件進行存儲,其中,索引塊文件包括索引塊信
肩、O監(jiān)視器模塊Monitor用于檢測所述對等站點集群中的工作站點的可用內(nèi)存信息以及每個工作站點對應(yīng)的索引塊信息以根據(jù)檢測結(jié)果對每個工作站點所加載的索引塊進行協(xié)調(diào)以及向每個工作站點發(fā)送對等站點列表更新指令。具體而言,監(jiān)視器模塊Monitor監(jiān)測、協(xié)調(diào)和管理各個工作站點之間的工作。一方面,例如監(jiān)視器模塊Monitor通過類似于心跳包檢測的方式定時獲取各個工作站點上的可用內(nèi)存信息及索引塊信息,并根據(jù)得到的結(jié)果,分析出是否存在重復(fù)索引或者缺失索引,并根據(jù)可用內(nèi)存信息進行智能協(xié)調(diào),要求某些工作站點卸載索引塊或加載缺失的索引塊,以確保索引塊的最低冗余以及完整性。另一方面,監(jiān)視器模塊Monitor將提供對等站點集群的管理功能,心跳包檢測可以發(fā)現(xiàn)失效的站點,并通知其他站點進行對等站點列表的調(diào)整,而當(dāng)新的站點添加之后,也會自動向監(jiān)視器模塊Monitor進行注冊,并由Monitor通知其他工作站點調(diào)整對等站點列表,以最大程度上保證每個站點能近乎實時地知道同一索引集群中的站點信息。此外,監(jiān)視器模塊Monitor負責(zé)與負載均衡模塊Balancer之間的同步工作。監(jiān)視器模塊Monitor將自己檢測到的當(dāng)前索引集群中的有效站點列表同步給負載均衡模塊Balancer中的每個負載軟均衡站點,以保證負載均衡設(shè)備Balancer能為所有查詢選擇出有效的可用工作站點。對等站點集群中的工作站點根據(jù)自身的索引塊信息對相應(yīng)的索引塊文件進行加載或卸載,且根據(jù)用戶發(fā)送的查詢請求在相應(yīng)的索引塊文件中進行查詢并將查詢結(jié)果進行整合和輸出。負載軟均衡模塊Balancer用于獲取監(jiān)視器模塊Monitor中的當(dāng)前工作站點列表以根據(jù)所述工作站點列表對當(dāng)前工作站點進行負載均衡控制,且負載軟均衡模塊Balancer將定時由監(jiān)視器模塊Monitor進行同步以便負載軟均衡模塊Balancer對當(dāng)前可用的工作 站點列表進行調(diào)整和更新。根據(jù)本發(fā)明實施例的基于對等結(jié)構(gòu)的分布式高維索引并行查詢框架100采用效率高的索引結(jié)構(gòu),具體地,采用Hybrid Spill Tree作為基本的索引結(jié)構(gòu)(高維索引結(jié)構(gòu)),且采用對等站點的架構(gòu)方式,在實時性、可靠性、穩(wěn)定性、可擴展性、自組織性等方面都做了較為全面的保障??梢愿咝нM行查詢,并且具有較強的可擴展性,可以方便地遷移到各種基于內(nèi)容的搜索系統(tǒng)中,且具有查詢速度快的優(yōu)點。另外,該基于對等結(jié)構(gòu)的分布式高維索引并行查詢框架結(jié)構(gòu)清晰,易于實現(xiàn)。在本發(fā)明的一個實施例中,索引創(chuàng)建模塊BuiIder進一步包括索引創(chuàng)建子模塊以及分布式存儲系統(tǒng)。其中索引創(chuàng)建子模塊采用Map Reduce框架對多個數(shù)據(jù)分割部分并行創(chuàng)建索引以得到所述多個索引塊文件。分布式存儲系統(tǒng)用于保存所述多個索引塊文件。具體而言,考慮到索引創(chuàng)建允許離線進行,對于實時性要求不高,而對于可靠性和穩(wěn)定性要求較為嚴格,所以直接采用成熟的Map Reduce框架,用于并行創(chuàng)建索引,并借助于分布式存儲系統(tǒng),將底層的存儲結(jié)構(gòu)透明化,用于存放索引塊文件。需要理解的是,在索引創(chuàng)建模塊Builder中,將海量候選對象分割成多個部分,并為每一部分創(chuàng)建相應(yīng)的索引塊,可以為后續(xù)的分布式并行查詢奠定基礎(chǔ)。采用Map Reduce框架,定時高效地并行創(chuàng)建索引,并在新索引創(chuàng)建成功之后,覆蓋舊索引文件,以適應(yīng)候選對象的變動。在本發(fā)明的一個實施例中,所述監(jiān)視器模塊Monitor還用于在檢測到索引塊文件更新后對非工作站點集群發(fā)送索引加載指令以使所述非工作站點集群進入工作狀態(tài),并在索引塊文件加載完畢后所述監(jiān)視器模塊將進行集群切換,并使用已加載最新索引的工作站點集群,將原有工作站點集群置于非工作狀態(tài),同時向負載軟均衡模塊發(fā)送最新工作站點列表。也就是說,監(jiān)視索引文件的變動情況,并且在索引文件變化穩(wěn)定之后,要求非工作站點進行索引加載,加載完成之后進行集群切換,使之成為工作站點,替換之前的工作站點。在本發(fā)明的一個實施例中,所述監(jiān)視器模塊根據(jù)所述檢測結(jié)果判斷當(dāng)前的工作站點中是否存在失效站點,并在檢測到存在失效站點時向當(dāng)前可用的工作站點發(fā)送對等站點列表更新指令。即監(jiān)視器模塊Monitor通過上述實施例的心跳包檢測可以發(fā)現(xiàn)失效的站點,并通知其他站點進行對等站點列表的調(diào)整。進一步地,當(dāng)有非工作站點加入工作站點集群時將向監(jiān)視器模塊Monitor進行注冊,以便監(jiān)視器模塊Monitor對工作站點列表進行更新,并將所述更新后的工作站點列表發(fā)送給所述負載軟均衡模塊,同時發(fā)送 指令要求其他工作站點進行對等站點列表的更新。作為一個具體的示例,當(dāng)對等站點集群中的每個工作站點接收到查詢請求時,倉1J建主進程并根據(jù)自身的索引塊信息創(chuàng)建多個相應(yīng)的子進程,以使每個子進程從對應(yīng)的已加載的索引塊中進行查詢,并將查詢結(jié)果發(fā)送給主進程并通過主進程進行整合發(fā)送。進一步地,主進程還用于響應(yīng)其它工作站點中分發(fā)的查詢請求,亦即當(dāng)某個工作站點接收到用戶查詢請求之后將進一步分發(fā)查詢請求,要求其他站點協(xié)助查詢的完成。在該示例中,子進程對主進程進行監(jiān)測,以便在所述主進程意外退出時自動關(guān)閉。具體而言,工作站點的主進程主要負責(zé)三部分的工作。I、響應(yīng)監(jiān)視器模塊Monitor的心跳檢測,提供當(dāng)前工作站點可用的內(nèi)存信息,以及負責(zé)的索引塊信息等。因此,當(dāng)工作站點在啟動服務(wù)時,應(yīng)該主動向監(jiān)視器模塊Monitor進行注冊。并且,主進程需要維護索引塊信息,當(dāng)需要加載指定索引塊時,創(chuàng)建相應(yīng)的子進程對索引塊進行管理,而當(dāng)需要卸載指定索引塊時,則是將負責(zé)該索引塊的子進程進行關(guān)閉。此外,主進程需要對子進程的狀態(tài)進行監(jiān)測,當(dāng)發(fā)現(xiàn)子進程失效時,能及時向監(jiān)視器模塊Monitor反饋索引塊缺失情況。2、響應(yīng)其他工作站點分發(fā)的查詢請求,并根據(jù)查詢請求將請求提交給子進程進行處理,然后在指定的時間閾值內(nèi)對子進程返回的結(jié)果進行整合,最終返回給分發(fā)查詢請求的工作站點。3、接受用戶的查詢請求,并行分發(fā)給其他的工作站點,最后在指定的時間閾值內(nèi)對各個工作站點(包括本身)的返回結(jié)果進行二次整合,并返回給用戶。工作站點的子進程負責(zé)的工作如下I、加載索引塊文件,并對索引塊文件進行內(nèi)存展開,映射好特征向量與候選對象之間的--對應(yīng)關(guān)系。2、響應(yīng)主進程的查詢請求,在索引結(jié)構(gòu)中查詢指定對象的預(yù)定數(shù)量的最為相似的查詢結(jié)果,并將結(jié)果返回給主進程。3、監(jiān)測主進程的活動,以保證當(dāng)主進程意外退出時,能自行關(guān)閉,以免占用過多資源。需要理解的是,本發(fā)明實施例中的索引塊管理采用的是子進程模式,而非線程模式,主要是為了保證在內(nèi)存不足以加載新的索引塊的情況下,采用子進程的方式可以避免因為加載新索引塊失敗而導(dǎo)致主進程完全崩潰的情況,最終不至于導(dǎo)致所有已經(jīng)加載完畢的索引塊全部失效。這樣也是為了能最大程度上保證系統(tǒng)的穩(wěn)定性和可靠性。在本發(fā)明的一個實施例中,所述負載軟均衡模塊包括多個負載軟均衡站點。每個負載軟均衡站點的作用為適當(dāng)調(diào)度查詢請求,使得各個工作站點的負載總體上達到平衡,以避免出現(xiàn)某些站點負載過重而另一些站點負載過輕的現(xiàn)象。負載軟均衡模塊Balancer通過監(jiān)視器模塊Monitor的同步作用,獲取當(dāng)前索引集群中有效的工作站點列表,并接收查詢接口的請求,選擇適當(dāng)?shù)墓ぷ髡军c返回供查詢接口進行查詢調(diào)用。
需要說明的是,為了保證同步的順暢,和工作站點類似,負載軟均衡站點啟動服務(wù)時會主動向Monitor站點進行注冊。一般而言,如果各個工作站點的硬件設(shè)施情況相近,負載軟均衡站點則可以采取隨機選取的方式進行工作站點的選擇,并返回給查詢接口進行進一步的查詢調(diào)用。
本發(fā)明的實施例中,還可以具有查詢接口模塊Searcher,查詢接口模塊Searcher主要負責(zé)兩方面的功能。I、將查詢對象進行量化,轉(zhuǎn)化為具有同等維度的向量,并提交該向量進行查詢,然后將查詢結(jié)果轉(zhuǎn)化為外部接口所需的形式。2、將底層的調(diào)度關(guān)系進行封裝,向上屏蔽,以降低架構(gòu)的耦合性,并提升系統(tǒng)的可擴展性。實際上,該部分的查詢操作可以分為兩個步驟從負載軟均衡模塊Balancer中獲取有效的工作站點,將查詢提交給工作站點并獲取相應(yīng)的結(jié)果。在本發(fā)明的一個示例中,為了保證實時性要求,查詢部分不適合采用Map Reduce框架,而是結(jié)合MPI等更為高效的信息傳遞方式來負責(zé)站點問的通信與協(xié)調(diào)。本發(fā)明的實施例具有如下優(yōu)點I、高度并行化,查詢高效,實時性較好,并且精確度較高。采用的是分布式的索引查詢架構(gòu),并且采用了較為高效的高維索引結(jié)構(gòu)HybridSpillTree,同時結(jié)合MPI等高效通信機制,從各個方面都盡可能保證查詢的快速響應(yīng)。此夕卜,相比于單機環(huán)境下的Hybrid Spill Tree,本發(fā)明實施例的分布式索引結(jié)構(gòu)能有效提高精確度,主要原因是每次進行預(yù)定數(shù)量的近似近鄰查詢時,采用了冗余策略,并且最終對結(jié)果進行了兩階段的整合與過濾,從而能保證最終返回的結(jié)果能覆蓋絕大部分的預(yù)定數(shù)量的精確近鄰。其中第一階段的整合過濾是工作站點對本地子進程返回的結(jié)果進行整合時,濾除了一部分冗余結(jié)果,而第二階段則是發(fā)出全局查詢請求的工作站點對其他工作站點返回的結(jié)果進行整合時,進一步濾除冗余結(jié)果。另外需要說明的是,Hybrid Spill Tree本身具備參數(shù)可調(diào)的特點,可以在實際應(yīng)用中選擇合適的參數(shù),以便在效率與精確度之間獲得良好的折中。2、系統(tǒng)可靠性和穩(wěn)定性較高。從架構(gòu)的模塊分析可以看出,本發(fā)明引入了監(jiān)視器模塊Monitor用于監(jiān)測和管理索引塊的加載情況,并對工作站點進行相應(yīng)的管理,根據(jù)站點的內(nèi)存情況進行智能協(xié)調(diào),以盡可能地保證全局索引的最低冗余和完整性,從而保證查詢的可靠性。此外,考慮了多種可能出現(xiàn)的異常情況,包括宕機、子進程異常退出、主進程異常退出等等,并且針對以上問題,引入了較為復(fù)雜的監(jiān)測機制和協(xié)調(diào)機制,從而保證在多種異常發(fā)生,甚至并行發(fā)生的情況下,系統(tǒng)依然能較為魯棒地運轉(zhuǎn),并保證外部查詢的接收和反饋。需要提及的一點是,從表面上看,本發(fā)明引入的監(jiān)視器模塊Monitor與傳統(tǒng)主從架構(gòu)方案中的主站點比較類似,可能成為整個架構(gòu)的瓶頸。但實際上,通過分析可以知道,本發(fā)明中的監(jiān)視器模塊Monitor,其負載明顯比主從結(jié)構(gòu)中的主站點更低。并且,通過采用傳統(tǒng)的熱備份或集群等技術(shù),可以更大程度上保證同一時間都有Monitor站點和Balancer站點能正常運轉(zhuǎn),從而為系統(tǒng)的穩(wěn)定性提供強大的保障。另外,本發(fā)明實施例采用的是基于對等結(jié)構(gòu)的架構(gòu)方案,對于瓶頸點的依賴更小,即便在Monitor完全失效的情況下,只要有一個Balancer站點和若干個工作站點能正常工作,系統(tǒng)依然能響應(yīng)查詢。
3、可擴展性、可伸縮性較好本發(fā)明實施例所提出的高維索引并行查詢框架并不針對于某種特定的應(yīng)用,而是直接處理特征向量,這使得該框架具有更強的可擴展性,既可以應(yīng)用于基于內(nèi)容的圖像檢索,還可以應(yīng)用于視頻檢索、音頻檢索等領(lǐng)域中。另外,在本發(fā)明中,對于工作站點和負載軟均衡站點,當(dāng)它們啟動服務(wù)后,都會主動向Monitor進行注冊,而在退出時也都會向Monitor提交注銷申請,并由Monitor進行后續(xù)的通知或者同步,這種機制使得動態(tài)增加或刪除站點更加方便,無需干預(yù)其他站點或者重啟系統(tǒng),只需配置好被增刪的站點即可。這些都反映出本發(fā)明所提出的框架在系統(tǒng)的動態(tài)伸縮方面具備較強的適應(yīng)能力。另外,本發(fā)明實施例提出的基于對等結(jié)構(gòu)的高維索引并行查詢框架中,任一工作站點都可以作為全局查詢的負責(zé)站點,同時也可以作為全局查詢的協(xié)助站點,操作更加靈活。4、自組織性、智能管理能力較強本發(fā)明所提出的基于對等結(jié)構(gòu)的分布式高維索引并行查詢框架在站點的管理和協(xié)調(diào)上做了雙向的保障。一方面,工作站點或者負載軟均衡站點的啟動或退出都會向Monitor站點進行注冊或注銷,并由Monitor站點進行通知和同步等后續(xù)工作;另一方面,Monitor站點本身維護著全部負載軟均衡站點列表,同時維護著所有對等站點集群信息以及當(dāng)前使用的對等站點集群(索引集群)中的全部工作站點信息,并對這些站點進行協(xié)調(diào)和管理(包括索引塊的去重、補缺等等)。另外,本發(fā)明實施例提出的查詢框架支持異構(gòu)站點的組合,并且能根據(jù)各個站點的可用內(nèi)存情況,智能地進行索引塊的分配及其他調(diào)度、協(xié)調(diào)工作,使得系統(tǒng)的資源能得到充分、恰當(dāng)?shù)睦谩2⑶?,負載軟均衡站點的引入也從軟均衡的層面上對各個工作站點的負載進行調(diào)整。上述均反映了本發(fā)明所提出的框架具備較強的自組織性和智能管理能力。5、支持動態(tài)增減的海量數(shù)據(jù)本發(fā)明結(jié)合較為成熟的Map Reduce框架和相應(yīng)的分布式存儲系統(tǒng),將高維索引的創(chuàng)建與查詢連接了起來。在引入Map Reduce框架對索引創(chuàng)建進行并行化之后,一定程度上解決了高維索引結(jié)構(gòu)增刪代價大的局限性,而是通過快速重建索引的方式進行高維索引的更新。此外,引入分布式存儲系統(tǒng),可將底層的存儲系統(tǒng)透明化,更方便于工作站點中的子進程進行索引塊的讀取,而無需進行繁復(fù)的配置。以上兩方面的結(jié)合,為提供海量數(shù)據(jù)的高維索引結(jié)構(gòu)創(chuàng)建奠定了基礎(chǔ),并為可行性提供保障。本發(fā)明將高維索引的創(chuàng)建與查詢通過分布式存儲系統(tǒng)進行連接,高維索引創(chuàng)建模塊只負責(zé)定時重建索引,以反映數(shù)據(jù)的變動情況,而Monitor站點則定時進行索引文件的更新檢測,并在檢測到穩(wěn)定更新后,進行索引的加載和索引集群的切換,使得系統(tǒng)能及時響應(yīng)海量數(shù)據(jù)的動態(tài)變化情況。實施例在實際應(yīng)用中,通過100萬張圖像的120維特征向量的實際測試,驗證了其有效性和可行性。如下表所示,為基于對等結(jié)構(gòu)的分布式高維索引并行查詢框架實驗結(jié)果。列出了本發(fā)明在實際測試中若干次查詢的響應(yīng)速度情況。需要提及的是,在此次實驗過程中,將所有查詢的時間閾值設(shè)置為I秒,全部圖像被切分為5部分并創(chuàng)建了等同數(shù)量的索引塊文件,對等站點集群包含5臺異構(gòu)的普通PC機(其中四臺PC的配置為2G內(nèi)存,奔騰E5300雙核CPU,另外一臺配置為4G內(nèi)存,奔騰E5200雙核CPU)。另外,在實驗過程中,并沒有對Hybrid Spill Tree的參數(shù)進行調(diào)優(yōu),而采用經(jīng)驗值進行測試,以更全面真實地反映系統(tǒng)的響應(yīng)能力。
查詢次數(shù)Π ~2 ~Tl~Γ ~5~~|~6~1 ~7 I 8 I~9~~|~Iol~均值
查詢耗時(毫秒)139 121 ΨΓ 64 8857* 90 6665* 85 85.2表1從表I可以看出,查詢時間存在一定的波動現(xiàn)象,但總體響應(yīng)時間都還是非常短的,平均響應(yīng)時間為85. 2毫秒,基本能滿足實際應(yīng)用中的檢索需求。而且,可以展望的是,在對Hybrid Spill Tree進行參數(shù)調(diào)優(yōu),引入更強勁的服務(wù)器,設(shè)定更小的查詢時限等條件下,查詢時間將會有更進一步的縮減,從而使系統(tǒng)更加高效實用?;趯Φ冉Y(jié)構(gòu)的分布式高維索引并行查詢框架的更為具體實現(xiàn)方式,如下索引創(chuàng)建模塊的實現(xiàn)(高維索引創(chuàng)建模塊Builder)的實現(xiàn)高維索引創(chuàng)建模塊主要負責(zé)的工作是定時對海量的候選對象進行索引的重建,以保證及時反映候選對象的變動情況。該模塊由于對實時性要求不高,而對穩(wěn)定性和可靠性要求較為嚴格,在該實施例中,借助于相對成熟穩(wěn)定的Map Reduce框架實現(xiàn),并且結(jié)合分布式存儲系統(tǒng)對索引創(chuàng)建的過程進行高度并行化,以保證重建索引的高效和可靠。因此,Builder模塊的實現(xiàn)一方面集中于較為成熟的開源框架的搭建以及分布式存儲系統(tǒng)的搭建,另一方面則是集中于設(shè)置定時任務(wù),對指定的海量候選對象定時進行恰當(dāng)?shù)臄?shù)據(jù)分塊,并通過Map Reduce任務(wù)進行索引的并行化創(chuàng)建,最終將各個索引塊文件存儲在透明的分布式存儲系統(tǒng)中。此外,Builder模塊還需要負責(zé)索引塊文件的維護,具體而言,就是在新索引全部創(chuàng)建成功后,移除舊的索引塊文件,并將新索引塊文件全部移動到分布式存儲系統(tǒng)中指定的路徑下,以便被Monitor模塊監(jiān)測到。需要說明的一點是,這里覆蓋索引塊文件的時間差不會導(dǎo)致出現(xiàn)監(jiān)測出錯的情況,因為Monitor模塊中的監(jiān)測功能并非第一次發(fā)現(xiàn)變動后立即開始新索引的加載和切換,而是會繼續(xù)對新索引文件進行若干次的跟蹤,并且只有在判斷出索引文件基本穩(wěn)定的情況下才執(zhí)行索引的切換。而且,即便出現(xiàn)了異常的過早加載的情況,隨著后續(xù)索引文件的改動,系統(tǒng)將會重新加載,最終保證索引切換的準(zhǔn)確性。監(jiān)視器模塊(Monitor)的實現(xiàn)Monitor模塊所負責(zé)的工作主要包括三部分索引文件的更新監(jiān)測,工作站點(Peer站點)的監(jiān)測、協(xié)調(diào)與管理,以及同步負載軟均衡站點(Balancer站點)。而Monitor模塊與其他模塊、站點之間的通信,以及其他模塊之間、站點之間的通信,在該實施例中,都主要依賴于Java語言的高效通信接口 RMI (Remote Method Invocation, MPI的Java實現(xiàn),廣泛應(yīng)用于并行環(huán)境的開發(fā)中)。根據(jù)RMI的實現(xiàn)特點,Monitor模塊在執(zhí)行上述三部分工作的過程中,既是RMI服務(wù)的被調(diào)用方,同時又是RMI服務(wù)的調(diào)用方(Peer站點、子進程等也類似)。作為RMI服務(wù)的被調(diào)用方,Monitor需要提供的服務(wù)接口包括如下這些registerClusterPeer, registerBalancer, unregisterClusterPeer,unregisterBalancer。其中 registerClusterPeer 和 registerBalancer 月艮務(wù)接口主要用于Peer站點和Balancer站點的注冊,其中Peer站點的注冊需要指明所屬的對等站點集群,而 unregisterClusterPeer 和 unregisterBalancer 服務(wù)接口則主要用于 Peer 站點和Balancer站點的注銷請求。通過以上四個服務(wù)接口,Monitor站點自身維護著所有對等站點集群的Peer站點信息和所有Balancer站點信息。作為RMI服務(wù)的調(diào)用方,Monitor執(zhí)行其所負責(zé)的工作時主要依賴 于調(diào)用其他模塊或站點的服務(wù)接口,從而實現(xiàn)相應(yīng)的功能。在索引文件的更新監(jiān)測方面,Monitor站點需要啟動定時線程用于每隔一段時間對索引文件進行檢測,并通過比對確認索引文件的變動情況。并且,在首次發(fā)現(xiàn)變動之后,Monitor站點將進行進一步的跟蹤,直到最終確認索弓I文件變動穩(wěn)定之后才啟動索弓I切換任務(wù)。索引的切換實際上是Monitor站點通知閑置對等站點集群進行新索引塊的加載,并按照預(yù)定的策略判斷是否加載成功。在加載成功的情況下,直接將當(dāng)前索引集群切換到新的集群上,并同步Balancer站點。在工作站點的檢測、協(xié)調(diào)與管理方面,Monitor站點同樣需要維護定時線程,用于監(jiān)測當(dāng)前索引集群中所有Peer站點的可用內(nèi)存、索引塊情況等,并根據(jù)指定的策略將多次沒響應(yīng)的站點認定為失效站點,報告給管理人員。此外,當(dāng)Monitor站點提供的四個服務(wù)接口被調(diào)用時,Monitor站點本身也需要在內(nèi)存中維護相應(yīng)的Peer站點列表和Balancer站點列表,并通知給其他站點。特別是,當(dāng)某個Peer站點注冊或者注銷時,Monitor站點響應(yīng)請求后,會通知同一對等站點集群中的其他站點更新其對等站點列表信息。另外,Monitor會根據(jù)各個Peer站點反饋回來的可用內(nèi)存信息和索引塊信息,從中發(fā)現(xiàn)重復(fù)的索引塊或者是缺失的索引塊,并根據(jù)Peer站點的可用內(nèi)存信息,智能地選擇合適的站點進行索引塊的卸載或加載,以保證整個索引的最低冗余和完整性。在同步負載軟均衡方面,實際上是Monitor站點啟動定時線程,并通過直接調(diào)用Balancer站點提供的服務(wù),將其所維護的當(dāng)前索引集群的可用站點列表信息同步給所有的Balancer站點,使之能及時反映索引變動的情況,并與Monitor站點保持一致,從而能為查詢接口模塊提供合適的Peer站點作為查詢主站點。需要說明的一點是,Monitor模塊的實現(xiàn)需要有相應(yīng)的外部配置文件,以對Monitor模塊進行初始化。其中最為重要的配置內(nèi)容包括索引監(jiān)測時間間隔,Peer站點監(jiān)測時間間隔,索引文件在分布式存儲系統(tǒng)中的存放路徑,可用的對等站點集群及其內(nèi)部的Peer站點信息(包括IP地址、RMI服務(wù)端口等),全部Balancer站點信息,以及跟RMI或者協(xié)調(diào)策略相關(guān)的一些配置項等。對等站點中主進程的實現(xiàn)對等站點主進程是查詢服務(wù)的主要提供方,該進程主要負責(zé)三方面的功能響應(yīng)Monitor站點的監(jiān)測請求并維護對等站點列表信息和本地索引塊信息,響應(yīng)其他站點的全局檢索請求并整合子進程的查詢結(jié)果,向其他對等站點分發(fā)全局檢索請求并整合各個對等站點返回的查詢結(jié)果。在響應(yīng)Monitor站點的監(jiān)測請求和維護本地索引塊方面,Peer站點需要在啟動的時候向Monitor進行注冊,以告知Monitor,進而告知同一對等站點集群下的其他對等站點,這是Peer站點作為RMI服務(wù)調(diào)用方的地方之一。啟動之后,Peer站點需要針對Monitor 至少提供如下服務(wù)Ping, addFederal, removeFederal, loadlndex, unloadlndex。其中Ping服務(wù)接口用于返回Peer站點本身的可用內(nèi)存信息和正在管理的索引塊信息;addFederal和removeFederal服務(wù)接口用于添加和刪除Peer站點內(nèi)存中維護的對等站點列表中的某個對等站 點信息,以保證全局檢索請求的準(zhǔn)確分發(fā);loadIndex和unloadlndex服務(wù)接口用于加載和卸載指定的索引塊,實際實現(xiàn)中,loadlndex是由主進程啟動一個負責(zé)管理該索引塊的子進程,而unloadlndex則是直接將相應(yīng)的子進程強行進行關(guān)閉,以從內(nèi)存中卸載相應(yīng)的索引。與此同時,主進程會始終保持對子進程的監(jiān)測,當(dāng)發(fā)現(xiàn)某個子進程符合指定的失效策略(諸如連續(xù)若干次響應(yīng)超時等)時,直接認定其為失效子進程,并反饋給Monitor站點。相對應(yīng)地,主進程需要為子進程啟動PingForChildProcess服務(wù),以響應(yīng)子進程的監(jiān)測請求,從而維持子進程的運行狀態(tài)。在響應(yīng)其他站點的全局檢索請求并整合子進程的查詢結(jié)果方面,每一個Peer站點需要為其他對等站點開啟search服務(wù),以接收其他對等站點的全局檢索請求。當(dāng)接收到其他站點的全局檢索請求后,Peer站點將調(diào)用子進程的服務(wù)接口,并把檢索請求進一步提交給自己維護的所有子進程。在獲取到各個子進程返回的查詢結(jié)果后,Peer站點將負責(zé)對結(jié)果按照精確度從高到低進行整合,并去除冗余部分,然后返回給分發(fā)全局查詢請求的對等站點。在向其他對等站點分發(fā)全局檢索請求并整合各個對等站點返回的查詢結(jié)果方面,Peer站點需要提供globalSearch服務(wù)供查詢接口模塊調(diào)用。當(dāng)接收到查詢接口模塊的查詢請求時,Peer站點將通過多個線程,進一步派發(fā)檢索請求給同一對等站點集群中的其他Peer站點,同時自己也啟動本地的檢索,提交檢索請求給本地維護的所有子進程。Peer站點在發(fā)出全局檢索請求后,既需要整合本地子進程的檢索結(jié)果,又需要整合其他對等站點返回的檢索結(jié)果。整合的過程需要按照精確度從高到低的順序,并且需要去除冗余,最終將結(jié)果返回給查詢接口模塊。Peer站點同樣需要外部配置文件進行初始化的設(shè)置,其中主要的配置項包括子進程可用的RMI服務(wù)端口范圍,查詢時間限制,本地RMI服務(wù)相關(guān)配置項(IP地址和服務(wù)端口號等),啟動子進程相關(guān)的參數(shù)(運行參數(shù)、子進程的監(jiān)測時間間隔等),同一索引集群的Peer站點信息(IP地址、RMI服務(wù)端口號等),以及Monitor站點信息(IP地址、RMI服務(wù)端口號等)等。對等站點子進程(Child Process)的實現(xiàn)對等站點子進程所涉及的實際上是由對等站點主進程啟動的子進程,每個此類子進程單獨負責(zé)一個索引塊的管理與查詢。因此,單個Peer站點可能有多個子進程,同時對多個索引塊進行管理和查詢。對等站點子進程被主進程創(chuàng)建并啟動時,由主進程指定RMI服務(wù)的端口、索引塊文件在分布式存儲系統(tǒng)中的路徑,以及主進程的服務(wù)端口號等。在子進程啟動后,將通過分布式存儲系統(tǒng)的接口獲取相應(yīng)的索引塊文件,并將其在內(nèi)存中展開,映射好查詢對象與特征向量之間的關(guān)系,為后續(xù)的查詢做準(zhǔn)備。作為RMI服務(wù)的調(diào)用方,子進程主要是通過調(diào)用主進程的RMI服務(wù),對主進程進行心跳檢測,以保證當(dāng)主進程異常退出時能自行關(guān)閉,避免占用過多的資源。而作為RMI服務(wù)的被調(diào)用方,子進程主要提供的是search服務(wù)接口,實際上就是接受主進程賦予的查詢向量及相關(guān)請求,在內(nèi)存中的Hybrid Spill Tree索引結(jié)構(gòu)中進行查詢,并將最終的結(jié)果返回給主進程,由主進程進行結(jié)果整合和發(fā)送。
子進程的配置部分實際上是由主進程通過進程參數(shù)傳進來的,無需外部配置文件。
負載軟均衡模塊(Balancer)的實現(xiàn)負載軟局衡模塊在系統(tǒng)中所承擔(dān)的工作主要包括兩部分,分別是接受Monitor站點的同步要求,和為查詢接口模塊提供合適的可用的Peer站點,作為查詢的主站點。作為RMI服務(wù)的調(diào)用方,Balancer站點主要是在啟動服務(wù)之后,通過調(diào)用Monitor站點的服務(wù)進行注冊,以告知Monitor站點開始接受Peer站點列表同步。而作為RMI服務(wù)的被調(diào)用方,Balancer站點提供的服務(wù)接口主要包括SynchronizeCluster 和 getAProperPeer。其中 SynchronizeCluster 服務(wù)接口主要被Monitor站點調(diào)用,從而實現(xiàn)當(dāng)前索引集群中有效Peer站點列表的同步功能;而getAProperPeer服務(wù)接口則由查詢接口調(diào)用,返回當(dāng)前索引集群中可用的Peer站點。Balancer站點的配置信息主要包括=Monitor站點信息(包括IP地址和RMI服務(wù)端口等),以及Balancer站點本身啟動RMI服務(wù)相關(guān)的一些參數(shù)等。查詢接口模塊(Searcher)的實現(xiàn)查詢接口所負責(zé)的工作是接受外部查詢請求,并將查詢對象量化為特征向量,從Balancer站點獲取可用的Peer站點,作為搜索的入口,并將最終的搜索結(jié)果轉(zhuǎn)化為外部接口所需的形式。查詢接口模塊是上層應(yīng)用與底層調(diào)度之間的連接部分,通過封裝底層的通信與調(diào)用關(guān)系,為上層應(yīng)用的開發(fā)提供便捷的接口。因此,該部分模塊實際上可以作為鏈接庫或者第三方包,提供給上層開發(fā)人員進行進一步的開發(fā)。具體而言,查詢接口模塊需要實現(xiàn)四部分的功能接受并量化查詢對象,調(diào)用Balancer站點獲取可用的Peer站點,調(diào)用Peer站點執(zhí)行搜索,以及搜索結(jié)果的處理。查詢接口的配置主要涉及Balancer站點的信息(包括Balancer站點的IP地址和服務(wù)端口等)。系統(tǒng)的連接與整體運作本發(fā)明所提出的基于對等結(jié)構(gòu)的分布式高維索引并行查詢框架具有較強的自組織性和智能管理能力,對于系統(tǒng)各個模塊的啟動順序并沒有嚴格的順序要求。但一般而言,建議先運作索引創(chuàng)建模塊,然后啟動Monitor模塊、Balancer模塊和對等站點集群,最后啟動查詢接口模塊開始接受外部查詢請求。另外,在系統(tǒng)連接方面,建議先進行集群的規(guī)劃,并且對各個模塊的配置文件進行正確的配置,以保證系統(tǒng)能在啟動后以較快的速度穩(wěn)定下來,并完成索引的加載等工作,以響應(yīng)外部查詢請求。系統(tǒng)全部模塊啟動之后,需要對系統(tǒng)的整體運行情況進行較為全面的測試,特別是對各種可能存在的異常情況的測試,以衡量系統(tǒng)的可靠性和穩(wěn)定性。經(jīng)過實際測試分析,本發(fā)明提供的框架在可靠性和穩(wěn)定性方面做得比較完善,能較好地抵抗多種宕機、主進程異常退出、子進程異常退出等異常,整體運作情況良好。流程圖中或在此以其他方式描述的任何過程或方法描述可以被理解為,表示包括一個或更多個用于實現(xiàn)特定邏輯功能或過程的步驟的可執(zhí)行指令的代碼的模塊、片段或部分,并且本發(fā)明的優(yōu)選實施方式的范圍包括另外的實現(xiàn),這應(yīng)被本發(fā)明的實施例所屬技術(shù)領(lǐng)域的技術(shù)人員所理解。應(yīng)當(dāng)理解,本發(fā)明的各部分可以用硬件、軟件、固件或它們的組合來實現(xiàn)。在上述實施方式中,多個步驟或方法可以用存儲在存儲器中且由合適的指令執(zhí)行系統(tǒng)執(zhí)行的軟件或固件來實現(xiàn)。本技術(shù)領(lǐng)域的普通技術(shù)人員可以理解實現(xiàn)上述實施例方法攜帶的全部或部分步驟是可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲于一種計算機可讀存儲介質(zhì)中,該程序在執(zhí)行時,包括方法實施例的步驟之一或其組合。此外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理模塊中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個模塊中。上述集成的模塊既可以采用硬件的形式實現(xiàn),也可以采用軟件功能模塊的形式實現(xiàn)。所述集成的模塊如果以軟件功能模塊的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,也可以存儲在一個計算機可讀取存儲介質(zhì)中。上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。在本說明書的描述中,參考術(shù)語“一個實施例”、“一些實施例”、“示例”、“具體示例”、或“一些示例”等的描述意指結(jié)合該實施例或示例描述的具體特征、結(jié)構(gòu)、材料或者特點包含于本發(fā)明的至少一個實施例或示例中。在本說明書中,對上述術(shù)語的示意性表述不一定指的是相同的實施例或示例。而且,描述的具體特征、結(jié)構(gòu)、材料或者特點可以在任何的一個或多個實施例或示例中以合適的方式結(jié)合。盡管已經(jīng)示出和描述了本發(fā)明的實施例,對于本領(lǐng)域的普通技術(shù)人員而言,可以理解在不脫離本發(fā)明的原理和精神的情況下可以對這些實施例進行多種變化、修改、替換 和變型,本發(fā)明的范圍由所附權(quán)利要求及其等同限定。
權(quán)利要求
1.一種基于對等結(jié)構(gòu)的分布式高維索引并行查詢框架,其特征在于,包括索引創(chuàng)建模塊、監(jiān)視器模塊、對等站點集群以及負載軟均衡模塊,其中,所述索引創(chuàng)建模塊用于對候選對象進行分割并為每個分割部分創(chuàng)建索引以得到多個索引塊文件,并對所述索引塊文件進行存儲,其中,所述索引塊文件包括索引塊信息,所述監(jiān)視器模塊用于檢測所述對等站點集群中的工作站點的可用內(nèi)存信息以及每個工作站點對應(yīng)的索引塊信息以根據(jù)檢測結(jié)果對每個工作站點所加載的索引塊進行協(xié)調(diào)以及向每個工作站點發(fā)送對等站點列表更新指令,所述對等站點集群中的工作站點根據(jù)自身的索引塊信息對相應(yīng)的索引塊文件進行加載或卸載,且根據(jù)用戶發(fā)送的查詢請求在相應(yīng)的索引塊文件中進行查詢并將查詢結(jié)果進行整合和輸出,所述負載軟均衡模塊用于獲取所述監(jiān)視器模塊中的當(dāng)前工作站點列表以根據(jù)所述工作站點列表對當(dāng)前工作站點進行負載均衡控制,且所述負載軟均衡模塊將定時由所述監(jiān)視器模塊進行同步以便所述負載軟均衡模塊對當(dāng)前可用的工作站點列表進行調(diào)整和更新。
2.根據(jù)權(quán)利要求I所述的基于對等結(jié)構(gòu)的分布式高維索引并行查詢框架,其特征在于,所述索引創(chuàng)建模塊進一步包括索引創(chuàng)建子模塊,所述索引創(chuàng)建子模塊采用Map Reduce框架對多個數(shù)據(jù)分割部分并行創(chuàng)建索引以得到所述多個索引塊文件;分布式存儲系統(tǒng),所述分布式存儲系統(tǒng)用于保存所述多個索引塊文件。
3.根據(jù)權(quán)利要求I所述的基于對等結(jié)構(gòu)的分布式高維索引并行查詢框架,其特征在于,所述監(jiān)視器模塊還用于在檢測到索引塊文件更新后對非工作站點集群發(fā)送索引加載指令以使所述非工作站點集群進入工作狀態(tài),所述索引塊文件加載完畢后所述監(jiān)視器模塊將進行集群切換,并使用已加載最新索引的工作站點集群,將原有工作站點集群置于非工作狀態(tài)。
4.根據(jù)權(quán)利要求I所述的基于對等結(jié)構(gòu)的分布式高維索引并行查詢框架,其特征在于,所述監(jiān)視器模塊根據(jù)所述檢測結(jié)果判斷當(dāng)前的工作站點中是否存在失效站點,并在檢測到存在失效站點時向當(dāng)前可用的工作站點發(fā)送對等站點列表更新指令。
5.根據(jù)權(quán)利要求I所述的基于對等結(jié)構(gòu)的分布式高維索引并行查詢框架,其特征在于,當(dāng)有非工作站點加入所述工作站點集群時將向所述監(jiān)視器模塊進行注冊,以便所述監(jiān)視器模塊對所述工作站點列表進行更新,并將所述更新后的工作站點列表發(fā)送給所述負載軟均衡模塊,同時將更新后的對等站點列表發(fā)送到所有所述工作站點。
6.根據(jù)權(quán)利要求I所述的基于對等結(jié)構(gòu)的分布式高維索引并行查詢框架,其特征在于,當(dāng)所述對等站點集群中的每個工作站點接收到查詢請求時,將創(chuàng)建主進程并根據(jù)自身的索引塊信息創(chuàng)建多個相應(yīng)的子進程,以使每個子進程從對應(yīng)的已加載索引塊中進行查詢,并將查詢結(jié)果發(fā)送給主進程并通過主進程進行整合發(fā)送。
7.根據(jù)權(quán)利要求6所述的基于對等結(jié)構(gòu)的分布式高維索引并行查詢框架,其特征在于,所述主進程還用于響應(yīng)其它工作站點分發(fā)的查詢請求。
8.根據(jù)權(quán)利要求6所述的基于對等結(jié)構(gòu)的分布式高維索引并行查詢框架,其特征在于,所述子進程對主進程進行監(jiān)測,以便在所述主進程意外退出時自動關(guān)閉。
9.根據(jù)權(quán)利要求I所述的基于對等結(jié)構(gòu)的分布式高維索引并行查詢框架,其特征在于,所述負載軟均衡模塊包括多個負載軟均衡站點,且所述負載軟均衡模塊維護所述當(dāng)前可用的工作站點列表。
10.根據(jù)權(quán)利要求1-9任一項所述的基于對等結(jié)構(gòu)的分布式高維索引并行查詢框架,其特征在于,所述索引塊文件采用Hybird Spill Tree數(shù)據(jù)結(jié)構(gòu)。
全文摘要
本發(fā)明提出一種基于對等結(jié)構(gòu)的分布式高維索引并行查詢框架,包括索引創(chuàng)建模塊、監(jiān)視器模塊、對等站點集群以及負載軟均衡模塊,索引創(chuàng)建模塊用于創(chuàng)建索引并對索引塊文件進行存儲,監(jiān)視器模塊用于檢測所述對等站點集群中的工作站點的可用內(nèi)存信息以及每個工作站點對應(yīng)的索引塊信息以根據(jù)檢測結(jié)果對每個工作站點進行協(xié)調(diào),負載軟均衡模塊用于對當(dāng)前工作站點進行負載均衡控制,且定時由監(jiān)視器模塊進行同步以便負載軟均衡模塊能對當(dāng)前可用的工作站點列表進行及時的調(diào)整和更新。本發(fā)明的實施例具有實時的、可靠的、支持動態(tài)增減的海量候選對象檢索的優(yōu)點,且查詢速度快。
文檔編號G06F17/30GK102622414SQ20121003811
公開日2012年8月1日 申請日期2012年2月17日 優(yōu)先權(quán)日2012年2月17日
發(fā)明者丁貴廣, 文海龍, 林梓佳, 王建民 申請人:清華大學(xué)