本發(fā)明涉及高性能計(jì)算領(lǐng)域和數(shù)據(jù)庫(kù)領(lǐng)域,具體地涉及一種移動(dòng)對(duì)象查詢裝置。
背景技術(shù):
隨著全球定位系統(tǒng)、無(wú)線通信技術(shù)、移動(dòng)計(jì)算技術(shù)、網(wǎng)絡(luò)技術(shù)等的飛速發(fā)展,大量移動(dòng)設(shè)備(如手機(jī)、平板電腦和各種車(chē)載設(shè)備)逐漸進(jìn)入人們的日常生活,基于位置的服務(wù)(locationbasedservice,lbs)逐漸興起并得到廣泛應(yīng)用。lbs是指移動(dòng)設(shè)備利用各種定位技術(shù)獲得當(dāng)前位置信息,然后通過(guò)無(wú)線網(wǎng)絡(luò)得到某項(xiàng)服務(wù),例如:用戶可以開(kāi)展智能交通控制、污染物的擴(kuò)散監(jiān)測(cè)、颶風(fēng)的移動(dòng)路徑及影響范圍監(jiān)測(cè)等。
目前,關(guān)于lbs的研究主要專(zhuān)注于解決移動(dòng)對(duì)象的快速更新和查詢實(shí)時(shí)響應(yīng)問(wèn)題。但是,本申請(qǐng)發(fā)明人在實(shí)現(xiàn)本發(fā)明的過(guò)程中發(fā)現(xiàn),這類(lèi)方案具有如下缺陷:
1)此類(lèi)方案需要構(gòu)建復(fù)雜的索引結(jié)構(gòu),并隨后續(xù)更新的到來(lái)不斷維護(hù)索引結(jié)構(gòu)。
2)隨著用戶數(shù)量的迅猛增長(zhǎng)和應(yīng)用場(chǎng)景的不斷豐富,其算法處理框架不能很好的應(yīng)對(duì)大數(shù)據(jù)下位置服務(wù)的新需求。
因此,需要找到新的移動(dòng)對(duì)象查詢方案,以滿足大數(shù)據(jù)下位置服務(wù)的查詢需求。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例的目的是提供一種移動(dòng)對(duì)象查詢裝置,該移動(dòng)對(duì)象查詢裝置用于實(shí)現(xiàn)滿足大數(shù)據(jù)下位置服務(wù)的查詢需求的移動(dòng)對(duì)象查詢方案。
為了實(shí)現(xiàn)上述目的,本發(fā)明實(shí)施例提供一種移動(dòng)對(duì)象查詢裝置,所述移動(dòng)對(duì)象查詢裝置包括:預(yù)處理模塊,用于通過(guò)緩存器緩存實(shí)時(shí)檢測(cè)的移動(dòng)對(duì)象更新數(shù)據(jù)和用戶輸入的查詢數(shù)據(jù);以及執(zhí)行模塊,與所述預(yù)處理模塊通信,用于從所述預(yù)處理模塊獲取所述移動(dòng)對(duì)象更新數(shù)據(jù)和所述查詢數(shù)據(jù),并通過(guò)多核cpu對(duì)所述移動(dòng)對(duì)象更新數(shù)據(jù)和所述查詢數(shù)據(jù)重新構(gòu)建索引,再通過(guò)gpu對(duì)構(gòu)建好的索引結(jié)構(gòu)進(jìn)行計(jì)算,以獲得查詢結(jié)果。
可選地,所述預(yù)處理模塊被配置為具有多個(gè)快照空間,且在每個(gè)快照空間中,通過(guò)緩存器緩存實(shí)時(shí)檢測(cè)的移動(dòng)對(duì)象更新數(shù)據(jù)和用戶輸入的查詢數(shù)據(jù)。
可選地,所述執(zhí)行模塊包括:接收子模塊,與所述預(yù)處理模塊通信,用于從所述預(yù)處理模塊獲取所述移動(dòng)對(duì)象更新數(shù)據(jù)和所述查詢數(shù)據(jù);第一執(zhí)行子模塊,與所述接收子模塊通信,用于通過(guò)多核cpu對(duì)所述移動(dòng)對(duì)象更新數(shù)據(jù)和所述查詢數(shù)據(jù)重新構(gòu)建索引;以及第二執(zhí)行子模塊,與所述第一執(zhí)行子模塊通信,用于通過(guò)gpu對(duì)構(gòu)建好的索引結(jié)構(gòu)進(jìn)行計(jì)算,以獲得查詢結(jié)果。
可選地,所述執(zhí)行模塊被配置為通過(guò)一個(gè)多核cpu對(duì)所述移動(dòng)對(duì)象更新數(shù)據(jù)和所述查詢數(shù)據(jù)重新構(gòu)建索引,并通過(guò)若干個(gè)gpu對(duì)構(gòu)建好的索引結(jié)構(gòu)進(jìn)行計(jì)算。
可選地,所述移動(dòng)對(duì)象查詢裝置還包括:調(diào)度模塊,與所述執(zhí)行模塊通信,用于獲取所述查詢結(jié)果,并將所述查詢結(jié)果分發(fā)給用戶。
可選地,所述調(diào)度模塊包括:分發(fā)子模塊,與所述執(zhí)行模塊通信,用于獲取所述查詢結(jié)果并將所述查詢結(jié)果分發(fā)至用戶;以及刪除子模塊,與所述執(zhí)行模塊通信,用于獲取并刪除所述執(zhí)行模塊進(jìn)行計(jì)算的過(guò)程中所產(chǎn)生的中間結(jié)果。
通過(guò)上述技術(shù)方案,本發(fā)明實(shí)施例所具有的有益效果是:本發(fā)明實(shí)施例的移動(dòng)對(duì)象查詢裝置及方法提出了一個(gè)基于新硬件環(huán)境下的高吞吐量移動(dòng)對(duì)象查詢處理框架,可以充分發(fā)揮了大內(nèi)存、多核cpu、gpu的特點(diǎn),從而提高了移動(dòng)對(duì)象的查詢處理效率,更能滿足大數(shù)據(jù)下基于位置服務(wù)的用戶查詢需求。
本發(fā)明實(shí)施例的其它特征和優(yōu)點(diǎn)將在隨后的具體實(shí)施方式部分予以詳細(xì)說(shuō)明。
附圖說(shuō)明
附圖是用來(lái)提供對(duì)本發(fā)明實(shí)施例的進(jìn)一步理解,并且構(gòu)成說(shuō)明書(shū)的一部分,與下面的具體實(shí)施方式一起用于解釋本發(fā)明實(shí)施例,但并不構(gòu)成對(duì)本發(fā)明實(shí)施例的限制。在附圖中:
圖1是根據(jù)本發(fā)明實(shí)施例的移動(dòng)對(duì)象查詢裝置的結(jié)構(gòu)示意圖;
圖2是根據(jù)本發(fā)明實(shí)施例的gpgpu模型的架構(gòu)示意圖;
圖3是根據(jù)本發(fā)明實(shí)施例的執(zhí)行模塊的結(jié)構(gòu)示意圖;
圖4是根據(jù)本發(fā)明實(shí)施例的調(diào)度模塊的結(jié)構(gòu)示意圖;以及
圖5是根據(jù)本發(fā)明實(shí)施例的查詢處理框架的示意圖。
附圖標(biāo)記說(shuō)明
100預(yù)處理模塊200執(zhí)行模塊
300調(diào)度模塊201接收子模塊
202第一執(zhí)行子模塊203第二執(zhí)行子模塊
301分發(fā)子模塊302刪除子模塊
具體實(shí)施方式
以下結(jié)合附圖對(duì)本發(fā)明實(shí)施例的具體實(shí)施方式進(jìn)行詳細(xì)說(shuō)明。應(yīng)當(dāng)理解的是,此處所描述的具體實(shí)施方式僅用于說(shuō)明和解釋本發(fā)明實(shí)施例,并不用于限制本發(fā)明實(shí)施例。
本申請(qǐng)發(fā)明人通過(guò)對(duì)許多l(xiāng)bs技術(shù)的調(diào)研,發(fā)現(xiàn)在很多大數(shù)據(jù)應(yīng)用中系統(tǒng)的吞吐量是關(guān)鍵因素,而優(yōu)化單個(gè)查詢的處理時(shí)間,不能成為提升整個(gè)系統(tǒng)吞吐量的關(guān)鍵。對(duì)于大部分應(yīng)用而言,單個(gè)查詢的響應(yīng)時(shí)間只要達(dá)到秒級(jí)就可以滿足需求,不需要刻意追求單個(gè)查詢的響應(yīng)時(shí)間,例如對(duì)于典型的打車(chē)應(yīng)用(app),大部分用戶只要能在幾秒鐘內(nèi)得到響應(yīng)就能滿足要求,對(duì)于更快的查詢響應(yīng)時(shí)間,用戶的服務(wù)體驗(yàn)沒(méi)有明顯變化。對(duì)于整個(gè)系統(tǒng),當(dāng)大量查詢涌入時(shí),查詢需要排隊(duì)以等待響應(yīng),查詢的排隊(duì)等待時(shí)間,將會(huì)影響用戶的得到響應(yīng)的時(shí)間。因此,提高系統(tǒng)的吞吐量,減少用戶的排隊(duì)等待時(shí)間,對(duì)增加用戶的服務(wù)體驗(yàn)至關(guān)重要。
基于這一思路,本發(fā)明實(shí)施例提出了一種移動(dòng)對(duì)象查詢裝置,如圖1所示,該移動(dòng)對(duì)象查詢裝置包括:預(yù)處理模塊100,用于通過(guò)緩存器(以下稱(chēng)為buffer)緩存實(shí)時(shí)檢測(cè)的移動(dòng)對(duì)象更新數(shù)據(jù)和用戶輸入的查詢數(shù)據(jù);以及執(zhí)行模塊200,與所述預(yù)處理模塊100通信,用于從所述預(yù)處理模塊100獲取所述移動(dòng)對(duì)象更新數(shù)據(jù)和所述查詢數(shù)據(jù),并通過(guò)多核cpu對(duì)所述移動(dòng)對(duì)象更新數(shù)據(jù)和所述查詢數(shù)據(jù)重新構(gòu)建索引,再通過(guò)gpu(graphicsprocessingunit,圖形處理單元)對(duì)構(gòu)建好的索引結(jié)構(gòu)進(jìn)行計(jì)算,以獲得查詢結(jié)果。
其中,移動(dòng)對(duì)象更新數(shù)據(jù)例如是典型打車(chē)應(yīng)用中涉及的車(chē)輛的實(shí)時(shí)位置的變化,查詢數(shù)據(jù)例如是典型打車(chē)應(yīng)用中涉及的用戶對(duì)附近兩公里內(nèi)的出租車(chē)的查詢。
其中,可知所述執(zhí)行模塊200充分運(yùn)用了多核cpu和gpu的特性,對(duì)于buffer中到來(lái)的移動(dòng)對(duì)象更新查詢,通過(guò)重新構(gòu)建索引的方式,充分發(fā)揮了多核cpu的特性;對(duì)于構(gòu)建好的索引結(jié)構(gòu),利用gpu精于高速數(shù)據(jù)運(yùn)算的特征,提高了算法查詢的性能。
另外,所述執(zhí)行模塊200還利用了大容量?jī)?nèi)存技術(shù),即將工作負(fù)載(即buffer緩存的查詢數(shù)據(jù)和移動(dòng)對(duì)象更新數(shù)據(jù))全部放在多核cpu中進(jìn)行處理,從而充分利用了數(shù)據(jù)的空間局部性,增加了高速緩存的命中率,從而有利于后續(xù)提高相關(guān)算法的執(zhí)行效率。
因此,可知本發(fā)明實(shí)施例的移動(dòng)對(duì)象查詢裝置配置了基于大容量?jī)?nèi)存、多核cpu和gpu的新硬件環(huán)境的查詢框架,該查詢框架的具體配置可以例如:配置每臺(tái)可以提供12tb內(nèi)存的若干臺(tái)8路服務(wù)器,配置cpu內(nèi)核數(shù)最大可達(dá)18個(gè)的服務(wù)器,以及配置用來(lái)做大規(guī)模的并行運(yùn)算的gpu。其中,由buffer緩存數(shù)據(jù),由cpu負(fù)責(zé)執(zhí)行復(fù)雜邏輯處理和事務(wù)管理等不適合數(shù)據(jù)并行的計(jì)算,由gpu負(fù)責(zé)計(jì)算密集型的大規(guī)模并行計(jì)算。
進(jìn)一步地,多核cpu和gpu的配合構(gòu)成了gpgpu(generalpurposegpu,通用目的gpu)模型。如圖2所示,在gpgpu模型中,cpu作為主機(jī)(host),gpu作為協(xié)處理器或者設(shè)備(device)。在一個(gè)系統(tǒng)中可以存在一個(gè)主機(jī)和若干個(gè)設(shè)備,即可理解為:所述執(zhí)行模塊200被配置為通過(guò)一個(gè)多核cpu對(duì)所述移動(dòng)對(duì)象更新數(shù)據(jù)和所述查詢數(shù)據(jù)重新構(gòu)建索引,通過(guò)若干個(gè)gpu對(duì)構(gòu)建好的索引結(jié)構(gòu)進(jìn)行計(jì)算。
另外,多核cpu是以單元格為單位將構(gòu)建完成的grid索引的數(shù)據(jù)輸送至gpu端,如圖2所示,gpu端保留了多核cpu端的基于grid索引的單元格的數(shù)據(jù)存儲(chǔ)方案,gpu對(duì)相同單元格中的移動(dòng)對(duì)象更新數(shù)據(jù)和查詢數(shù)據(jù)進(jìn)行計(jì)算,且各個(gè)單元格之間相互獨(dú)立,可以并行執(zhí)行。其中,例如圖2中的單元格(2,0)是指二維歐式空間坐標(biāo)為(2,0)的單元格,gpu對(duì)該單元格中的數(shù)據(jù)進(jìn)行計(jì)算可獲得相關(guān)查詢結(jié)果。
在這個(gè)gpgpu模型中,cpu與gpu協(xié)同工作,各司其職,cpu負(fù)責(zé)進(jìn)行邏輯性強(qiáng)的事物處理和串行計(jì)算,gpu則專(zhuān)注于執(zhí)行高度線程化的并行處理任務(wù)。因此一旦確定了程序的并行部分,就可以考慮把這部分計(jì)算工作交給gpu。
需說(shuō)明的是,cpu、gpu各自擁有相互獨(dú)立的存儲(chǔ)器地址空間,即:主機(jī)端的內(nèi)存和設(shè)備端的顯存。
基于gpgpu模型架構(gòu),如圖3所示,所述執(zhí)行模塊200優(yōu)選為可以包括:接收子模塊201,與所述預(yù)處理模塊100通信,用于從所述預(yù)處理模塊100獲取所述移動(dòng)對(duì)象更新數(shù)據(jù)和所述查詢數(shù)據(jù);第一執(zhí)行子模塊202,與所述接收子模塊201通信,用于通過(guò)多核cpu對(duì)所述移動(dòng)對(duì)象更新數(shù)據(jù)和所述查詢數(shù)據(jù)重新構(gòu)建索引;以及第二執(zhí)行子模塊203,與所述第一執(zhí)行子模塊202通信,用于通過(guò)gpu對(duì)構(gòu)建好的索引結(jié)構(gòu)進(jìn)行計(jì)算,以獲得查詢結(jié)果。
可知,接收子模塊201用于實(shí)現(xiàn)執(zhí)行模塊200與預(yù)處理模塊100之間的信息交互,而第一執(zhí)行子模塊202和第二執(zhí)行子模塊相配合形成基于gpgpu模型的信息處理框架。
另外,在本實(shí)施例中,所述預(yù)處理模塊100優(yōu)選為被配置為具有多個(gè)快照空間,且在每個(gè)快照空間中,通過(guò)buffer緩存實(shí)時(shí)檢測(cè)的移動(dòng)對(duì)象更新數(shù)據(jù)和用戶輸入的查詢數(shù)據(jù)。如此,后續(xù)在執(zhí)行模塊200中,可對(duì)快照中的移動(dòng)對(duì)象更新數(shù)據(jù)和查詢數(shù)據(jù)構(gòu)建索引,有利于發(fā)揮多核cpu的硬件性能。
其中,關(guān)于快照的原理及具體方法,可參考現(xiàn)有相關(guān)文獻(xiàn),本發(fā)明實(shí)施例在此不再贅述。
進(jìn)一步地,本發(fā)明實(shí)施例的移動(dòng)對(duì)象查詢裝置優(yōu)選為還包括:調(diào)度模塊300,與所述執(zhí)行模塊200通信,用于獲取所述查詢結(jié)果,并將所述查詢結(jié)果分發(fā)給用戶。
除分發(fā)查詢結(jié)果外,本實(shí)施例的調(diào)度模塊300還優(yōu)選為可以刪除一些中間結(jié)果,即如圖4所示,所述調(diào)度模塊300可以被配置為包括:分發(fā)子模塊301,與所述執(zhí)行模塊200通信,用于獲取所述查詢結(jié)果并將所述查詢結(jié)果分發(fā)至用戶;以及刪除子模塊302,與所述執(zhí)行模塊200通信,用于獲取并刪除所述執(zhí)行模塊進(jìn)行計(jì)算的過(guò)程中所產(chǎn)生的中間結(jié)果。
在考慮調(diào)度模塊300的前提下,本實(shí)施例的移動(dòng)對(duì)象查詢裝置所建立的利用大內(nèi)存、多核cpu和gpu的特征的查詢處理框架如圖5所示,主要包括三個(gè)階段:預(yù)處理(preprocessing)階段、執(zhí)行(execute)階段和調(diào)度(dispatch)階段,這三個(gè)階段順序執(zhí)行。
在preprocessing階段,主要通過(guò)buffer緩存到來(lái)的移動(dòng)對(duì)象更新數(shù)據(jù)和查詢數(shù)據(jù)。同時(shí)把數(shù)據(jù)推送到下一階段。其中,preprocessing階段通過(guò)查詢窗口(querywindow)-對(duì)象窗口(objectwindow)、查詢緩存(querybuffer)-對(duì)象緩存(objectbuffer)的模式按快照方式對(duì)數(shù)據(jù)進(jìn)行緩存。
在execute階段,首先通過(guò)多核cpu,對(duì)上一階段到來(lái)的數(shù)據(jù)重新構(gòu)建索引,通過(guò)重新構(gòu)建索引的方式,避免了傳統(tǒng)方式中對(duì)索引的復(fù)雜更新維護(hù)操作,充分發(fā)揮了多核cpu的特性。其中,重新構(gòu)建索引的方式如圖中所示的索引查詢(indexquery)-索引對(duì)象(indexobject)的方式。
其次,對(duì)于構(gòu)建好的索引結(jié)構(gòu),推送到gpu端進(jìn)行運(yùn)算,即gpu執(zhí)行查詢處理(processqueries),充分發(fā)揮gpu并行計(jì)算效率高的特點(diǎn),提高運(yùn)算的執(zhí)行效率。當(dāng)完成運(yùn)算后,把結(jié)果推送到下一階段。
在dispatch階段,把查詢得到的結(jié)果分發(fā)給用戶,同時(shí)刪除運(yùn)算過(guò)程中的中間結(jié)果。
綜上所述,本發(fā)明實(shí)施例的移動(dòng)對(duì)象查詢裝置提出了一個(gè)基于新硬件環(huán)境下的高吞吐量移動(dòng)對(duì)象查詢處理框架,可以充分發(fā)揮大內(nèi)存、多核cpu、gpu的特點(diǎn),從而提高了移動(dòng)對(duì)象的查詢處理效率,更能滿足大數(shù)據(jù)下基于位置服務(wù)的用戶查詢需求。
以上結(jié)合附圖詳細(xì)描述了本發(fā)明例的可選實(shí)施方式,但是,本發(fā)明實(shí)施例并不限于上述實(shí)施方式中的具體細(xì)節(jié),在本發(fā)明實(shí)施例的技術(shù)構(gòu)思范圍內(nèi),可以對(duì)本發(fā)明實(shí)施例的技術(shù)方案進(jìn)行多種簡(jiǎn)單變型,這些簡(jiǎn)單變型均屬于本發(fā)明實(shí)施例的保護(hù)范圍。
另外需要說(shuō)明的是,在上述具體實(shí)施方式中所描述的各個(gè)具體技術(shù)特征,在不矛盾的情況下,可以通過(guò)任何合適的方式進(jìn)行組合。為了避免不必要的重復(fù),本發(fā)明實(shí)施例對(duì)各種可能的組合方式不再另行說(shuō)明。
本領(lǐng)域技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分步驟是可以通過(guò)程序來(lái)指令相關(guān)的硬件來(lái)完成,該程序存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一個(gè)(可以是單片機(jī),芯片等)或處理器(processor)執(zhí)行本申請(qǐng)各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:u盤(pán)、移動(dòng)硬盤(pán)、只讀存儲(chǔ)器(rom,read-onlymemory)、隨機(jī)存取存儲(chǔ)器(ram,randomaccessmemory)、磁碟或者光盤(pán)等各種可以存儲(chǔ)程序代碼的介質(zhì)。
此外,本發(fā)明實(shí)施例的各種不同的實(shí)施方式之間也可以進(jìn)行任意組合,只要其不違背本發(fā)明實(shí)施例的思想,其同樣應(yīng)當(dāng)視為本發(fā)明實(shí)施例所公開(kāi)的內(nèi)容。