本發(fā)明涉及計算機(jī)技術(shù)領(lǐng)域,具體涉及一種基于Hadoop的大數(shù)據(jù)實時處理系統(tǒng)。
背景技術(shù):
隨著信息化的發(fā)展,企業(yè)要處理的數(shù)據(jù)呈爆炸式的增長,數(shù)據(jù)量都達(dá)到了超大規(guī)模(例如從TB級到PB級),由此帶來了一系列的問題。數(shù)據(jù)量的增多,系統(tǒng)的負(fù)載越來越大,數(shù)據(jù)的入庫和查詢性能隨之下降。在不增加硬件成本的情況下,如何發(fā)揮系統(tǒng)的最大性能,使入庫和查詢的速度最快,是許多企業(yè)面臨的難題。
云計算的出現(xiàn)為海量數(shù)據(jù)處理提供了有效地解決途徑,在通常的云計算解決方案中存在基于Hadoop的框架設(shè)計,Hadoop中包括:分布式文件系統(tǒng)(Hadoop Distributed File System,HDFS)和MapReduce。HDFS為海量的數(shù)據(jù)提供了存儲,MapReduce為海量的數(shù)據(jù)提供了計算。通過Hadoop的HDFS可以方便的實現(xiàn)海量數(shù)據(jù)存儲,同時有效防止單點故障,避免不必要的損失。但是,在HDFS上進(jìn)行數(shù)據(jù)檢索時,常用的方法是開啟全局搜索MapReduce,即需要進(jìn)行大規(guī)模數(shù)據(jù)的并行運算,這需要完整過濾一遍HDFS上存儲的所有數(shù)據(jù)。在云計算中,尤其是海量數(shù)據(jù)的情況下,現(xiàn)有技術(shù)中在HDFS上使用MapReduce進(jìn)行全局搜索會對系統(tǒng)資源造成巨大的浪費,耗費大量的時間。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于提供一種基于Hadoop的大數(shù)據(jù)實時處理系統(tǒng),用于提高數(shù)據(jù)查詢的效率,快速響應(yīng)客戶端的查詢請求。
為了達(dá)到上述目的,本發(fā)明采用這樣的如下技術(shù)方案:
本發(fā)明提供一種基于Hadoop的大數(shù)據(jù)實時處理系統(tǒng),所述基于Hadoop的大數(shù)據(jù)實時處理系統(tǒng)包括:客戶端、實時傳輸中間件、分布式文件系統(tǒng)HDFS,其中,
所述HDFS包括:控制節(jié)點namenode和多個數(shù)據(jù)節(jié)點datanode;
所述控制節(jié)點,用于在所述多個數(shù)據(jù)節(jié)點上啟動多線程,實時的創(chuàng)建需要入庫的多個數(shù)據(jù)分別對應(yīng)的索引,并將多個索引按照創(chuàng)建時間保存在多個索引文件中;
所述客戶端,用于通過所述實時傳輸中間件向所述HDFS發(fā)送數(shù)據(jù)獲取get請求;
所述實時傳輸中間件,用于將所述客戶端發(fā)送的數(shù)據(jù)獲取請求轉(zhuǎn)發(fā)給所述控制節(jié)點;
所述控制節(jié)點,用于根據(jù)所述客戶端發(fā)送的數(shù)據(jù)獲取請求創(chuàng)建查詢?nèi)蝿?wù),所述查詢?nèi)蝿?wù)包括:目標(biāo)數(shù)據(jù)所滿足的查詢條件,所述查詢條件包括:查詢時間條件;根據(jù)所述查詢條件中的查詢時間條件和所述多個索引文件進(jìn)行匹配,篩選出滿足所述查詢時間條件的索引條件;將所述查詢?nèi)蝿?wù)分發(fā)到所述多個數(shù)據(jù)節(jié)點上,根據(jù)所述篩選出的索引文件和所述查詢條件查詢所述多個數(shù)據(jù)節(jié)點,從而得到滿足所述查詢條件的數(shù)據(jù)的位置;再次向所述多個數(shù)據(jù)節(jié)點分發(fā)所述查詢?nèi)蝿?wù),根據(jù)所述滿足所述查詢條件的數(shù)據(jù)的位置在所述多個數(shù)據(jù)節(jié)點上讀取數(shù)據(jù),當(dāng)所述多個數(shù)據(jù)節(jié)點中任何一個數(shù)據(jù)節(jié)點查詢成功時,返回查詢結(jié)果;
所述實時傳輸中間件,用于按照預(yù)置的輪詢周期輪詢查詢結(jié)果目錄,如果所述查詢結(jié)果目錄不為空,則讀取所述查詢結(jié)果目錄中的查詢結(jié)果文件并返回給客戶端;
所述客戶端,用于通過所述實時傳輸中間件實時的獲取到所述查詢結(jié)果文件。
采用上述技術(shù)方案后,本發(fā)明提供的技術(shù)方案將有如下優(yōu)點:
本發(fā)明實施例提供的基于Hadoop的大數(shù)據(jù)實時處理系統(tǒng)中,可以實現(xiàn)對大數(shù)據(jù)實時處理,在大數(shù)據(jù)實時處理系統(tǒng)中可以實現(xiàn)數(shù)據(jù)的入庫,查詢,傳輸都是并發(fā)的,且是實時的。本發(fā)明實施例中在創(chuàng)建查詢?nèi)蝿?wù)的同時,進(jìn)行過濾索引,過濾索引的同時可以將過濾完的索引文件分發(fā)到datanode上面,同時datanode完成本地文件的查詢,并向客戶端返回查詢結(jié)果。并且本發(fā)明實施例中任何datanode的查詢完成,都可以通過實時傳輸中間件的周期輪詢機(jī)制快速的向客戶端返回查詢結(jié)果。本發(fā)明實施例中,在HDFS內(nèi)的數(shù)據(jù)查詢處理過程都是并發(fā)執(zhí)行的,最大限度的利用了計算機(jī)的硬件設(shè)備,使查詢達(dá)到了實時完成,極大地提高了查詢的效率,用戶執(zhí)行查詢操作時便能獲得查詢結(jié)果,提高數(shù)據(jù)查詢的效率,快速響應(yīng)客戶端的查詢請求。
附圖說明
圖1為本發(fā)明實施例提供一種基于Hadoop的大數(shù)據(jù)實時處理系統(tǒng)的組成結(jié)構(gòu)示意圖;
圖2為本發(fā)明實施例提供基于jetty的查詢流程示意圖。
具體實施方式
本發(fā)明實施例提供了一種基于Hadoop的大數(shù)據(jù)實時處理系統(tǒng),用于提高數(shù)據(jù)查詢的效率,快速響應(yīng)客戶端的查詢請求。
為使得本發(fā)明的發(fā)明目的、特征、優(yōu)點能夠更加的明顯和易懂,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,下面所描述的實施例僅僅是本發(fā)明一部分實施例,而非全部實施例?;诒景l(fā)明中的實施例,本領(lǐng)域的技術(shù)人員所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,以便包含一系列單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于那些單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它單元。
以下分別進(jìn)行詳細(xì)說明。
本發(fā)明基于Hadoop的大數(shù)據(jù)實時處理系統(tǒng)的一個實施例,可以實現(xiàn)在分布式系統(tǒng)基礎(chǔ)架構(gòu)上完成數(shù)據(jù)的快速實時查詢。本發(fā)明實施例可以克服現(xiàn)有技術(shù)中的云計算解決方案中常用數(shù)據(jù)處理方法會造成系統(tǒng)資源浪費,數(shù)據(jù)處理時間長的缺點,提供一種有效的海量數(shù)據(jù)實時處理方法。本發(fā)明實施例中數(shù)據(jù)的入庫,查詢,傳輸都是并發(fā)的、實時的。請參閱圖1所示,本發(fā)明提供的基于Hadoop的大數(shù)據(jù)實時處理系統(tǒng),包括:客戶端、實時傳輸中間件、分布式文件系統(tǒng)(Hadoop Distributed File System,HDFS),其中,
HDFS包括:控制節(jié)點(namenode)和多個數(shù)據(jù)節(jié)點(datanode);
控制節(jié)點,用于在多個數(shù)據(jù)節(jié)點上啟動多線程,實時的創(chuàng)建需要入庫的多個數(shù)據(jù)分別對應(yīng)的索引,并將多個索引按照創(chuàng)建時間保存在多個索引文件中;
客戶端,用于通過實時傳輸中間件向HDFS發(fā)送數(shù)據(jù)獲取get請求;
實時傳輸中間件,用于將客戶端發(fā)送的數(shù)據(jù)獲取請求轉(zhuǎn)發(fā)給控制節(jié)點;
控制節(jié)點,用于根據(jù)客戶端發(fā)送的數(shù)據(jù)獲取請求創(chuàng)建查詢?nèi)蝿?wù),查詢?nèi)蝿?wù)包括:目標(biāo)數(shù)據(jù)所滿足的查詢條件,查詢條件包括:查詢時間條件;根據(jù)查詢條件中的查詢時間條件和多個索引文件進(jìn)行匹配,篩選出滿足查詢時間條件的索引條件;將查詢?nèi)蝿?wù)分發(fā)到多個數(shù)據(jù)節(jié)點上,根據(jù)篩選出的索引文件和查詢條件查詢多個數(shù)據(jù)節(jié)點,從而得到滿足查詢條件的數(shù)據(jù)的位置;再次向多個數(shù)據(jù)節(jié)點分發(fā)查詢?nèi)蝿?wù),根據(jù)滿足查詢條件的數(shù)據(jù)的位置在多個數(shù)據(jù)節(jié)點上讀取數(shù)據(jù),當(dāng)多個數(shù)據(jù)節(jié)點中任何一個數(shù)據(jù)節(jié)點查詢成功時,返回查詢結(jié)果;
實時傳輸中間件,用于按照預(yù)置的輪詢周期輪詢查詢結(jié)果目錄,如果查詢結(jié)果目錄不為空,則讀取查詢結(jié)果目錄中的查詢結(jié)果文件并返回給客戶端;
客戶端,用于通過實時傳輸中間件實時的獲取到查詢結(jié)果文件。
本發(fā)明實施例中,基于Hadoop實現(xiàn)HDFS,HDFS有高容錯性的特點,HDFS可以提供高吞吐量(high throughput)來訪問應(yīng)用程序的數(shù)據(jù),適合那些有著超大數(shù)據(jù)集(large data set)的應(yīng)用程序,HDFS放寬了POSIX的要求,可以以流的形式訪問(streaming access)文件系統(tǒng)中的數(shù)據(jù)。
其中,實時傳輸中間件設(shè)置在客戶端和HDFS之間,客戶端和HDFS之間的交互通過實時傳輸中間件來完成,例如查詢請求的轉(zhuǎn)發(fā)和查詢結(jié)果的轉(zhuǎn)發(fā)等。在本發(fā)明的一些實施例中,實時傳輸中間件,具體為:使用jetty作為網(wǎng)絡(luò)(web)容器。jetty是一個開源的servlet容器作為web容器,它為基于Java的web容器,例如JSP和servlet提供運行環(huán)境,servlet(server applet),全稱Java Servlet,用Java編寫的服務(wù)器端程序,其主要功能在于交互式地瀏覽和修改數(shù)據(jù),生成動態(tài)Web內(nèi)容。
在本發(fā)明實施例中,HDFS內(nèi)包括有控制節(jié)點和多個數(shù)據(jù)節(jié)點,數(shù)據(jù)節(jié)點是數(shù)據(jù)存儲單元,底層接口傳輸過來的需要可以存儲在數(shù)據(jù)節(jié)點上,當(dāng)客戶端需要從HDFS讀取數(shù)據(jù)時,可以從HDFS內(nèi)的數(shù)據(jù)節(jié)點上讀取到。本發(fā)明實施例中的控制節(jié)點可以分為主控制節(jié)點和備控制節(jié)點,從而通過主備模式保證HDFS能夠及時響應(yīng)客戶端的請求。本發(fā)明實施例中,HDFS內(nèi)的多個數(shù)據(jù)節(jié)點執(zhí)行查詢?nèi)蝿?wù)是獨立的,各個數(shù)據(jù)節(jié)點查詢反饋也是獨立實現(xiàn),只要有任何數(shù)據(jù)節(jié)點查詢完成,都可以通過實時傳輸中間件向客戶端反饋查詢結(jié)果,不需要所有數(shù)據(jù)節(jié)點查詢完畢后再統(tǒng)一反饋查詢結(jié)果,因此具有很高的數(shù)據(jù)查詢效率。
本發(fā)明實施例提供的基于Hadoop的大數(shù)據(jù)實時處理系統(tǒng)中,可以實現(xiàn)對大數(shù)據(jù)實時處理,在大數(shù)據(jù)實時處理系統(tǒng)中可以實現(xiàn)數(shù)據(jù)的入庫,查詢,傳輸都是并發(fā)的,且是實時的。本發(fā)明實施例中在創(chuàng)建查詢?nèi)蝿?wù)的同時,進(jìn)行過濾索引,過濾索引的同時可以將過濾完的索引文件分發(fā)到datanode上面,同時datanode完成本地文件的查詢,并向客戶端返回查詢結(jié)果。并且本發(fā)明實施例中任何datanode的查詢完成,都可以通過實時傳輸中間件的周期輪詢機(jī)制快速的向客戶端返回查詢結(jié)果。本發(fā)明實施例中,在HDFS內(nèi)的數(shù)據(jù)查詢處理過程都是并發(fā)執(zhí)行的,最大限度的利用了計算機(jī)的硬件設(shè)備,使查詢達(dá)到了實時完成,極大地提高了查詢的效率,用戶執(zhí)行查詢操作時便能獲得查詢結(jié)果,提高數(shù)據(jù)查詢的效率,快速響應(yīng)客戶端的查詢請求。
在本發(fā)明的一些實施例中,控制節(jié)點,具體用于按照B+樹的結(jié)構(gòu)實時的創(chuàng)建需要入庫的多個數(shù)據(jù)分別對應(yīng)的索引;以及,
控制節(jié)點,具體用于根據(jù)篩選出的索引文件和查詢條件通過B+樹查詢多個數(shù)據(jù)節(jié)點,從而得到滿足查詢條件的數(shù)據(jù)的位置。
其中,本發(fā)明實施例中基于Hadoop的大數(shù)據(jù)實時處理系統(tǒng)可以實現(xiàn)數(shù)據(jù)的實時入庫。以現(xiàn)有的HDFS為基礎(chǔ),在每臺datanode上啟動多線程創(chuàng)建索引,并行創(chuàng)建索引文件。對一些重要字段建立索引,以B+樹的結(jié)構(gòu)生成,每一條新的記錄只需要插入到B+樹中。B+樹的插入僅在葉結(jié)點上進(jìn)行。每插入一個(關(guān)鍵碼-指針)索引項后都要判斷結(jié)點中的子樹棵數(shù)是否超出范圍。當(dāng)插入后結(jié)點中的子樹棵數(shù)大于m(B+樹的階數(shù))時,需要將葉結(jié)點分裂為兩個結(jié)點。它們的雙親結(jié)點中應(yīng)同時包含這兩個結(jié)點的最大關(guān)鍵碼和結(jié)點地址。此后,問題歸于在非葉結(jié)點中的插入了。在非葉結(jié)點中關(guān)鍵碼的插入與葉結(jié)點的插入類似,非葉結(jié)點中的子樹棵數(shù)的上限為m,超出這個范圍也要進(jìn)行結(jié)點分裂。在做根結(jié)點分裂時,因為沒有雙親結(jié)點,就必須創(chuàng)建新的雙親結(jié)點,作為樹的新根。
在本發(fā)明的一些實施例中,客戶端,還用于繼續(xù)向HDFS發(fā)送數(shù)據(jù)獲取繼續(xù)請求;
HDFS,還用于通過控制節(jié)點響應(yīng)據(jù)獲取繼續(xù)請求,從多個數(shù)據(jù)節(jié)點中啟動多線程獲取數(shù)據(jù)獲取繼續(xù)請求對應(yīng)的查詢結(jié)果;
實時傳輸中間件,還用于按照預(yù)置的輪詢周期讀取到數(shù)據(jù)獲取繼續(xù)請求對應(yīng)的查詢結(jié)果,并返回給客戶端。
本發(fā)明實施例中,實時傳輸中間件可以使用jetty作為web容器,在HDFS上做數(shù)據(jù)查詢的同時,jetty輪循查詢結(jié)果目錄,如果不為空,則讀取查詢結(jié)果文件并返回給客戶端??蛻舳死^續(xù)向HDFS端發(fā)送數(shù)據(jù)獲取繼續(xù)(continue)請求,控制節(jié)點啟動多線程讀取查詢結(jié)果,通過jetty將讀取到的查詢結(jié)果返回給客戶端,如果返回的讀取數(shù)據(jù)為空,流程結(jié)束,如果不為空,客戶端繼續(xù)發(fā)送continue請求。查詢過程中,任何datanode查詢成功,即向客戶端返回數(shù)據(jù),不需要所有datanode查詢完成。
如圖2所示,為發(fā)明實施例中jetty的查詢流程圖,使用jetty作為web容器,首先客戶端向HDFS端發(fā)送get請求,控制節(jié)點端解析json串,json是一種輕量級的數(shù)據(jù)交換格式,根據(jù)json串中的查詢條件實例化job對象,提交job進(jìn)行分布式查詢,最后返回結(jié)果。在HDFS上做查詢的同時,jetty輪循查詢結(jié)果目錄,如果不為空,則讀取文件并返回給客戶端,客戶端繼續(xù)向HDFS端發(fā)送continue請求,控制節(jié)點端啟動多線程讀取查詢結(jié)果,將讀取數(shù)據(jù)返回給客戶端。如果查詢結(jié)果為空并且HDFS上的查詢已經(jīng)結(jié)束,則返回空,流程結(jié)束。在其中任何一個步驟,若產(chǎn)生失敗則返回,例如異常、請求錯誤、索引文件夾不存在等情況。
在本發(fā)明的一些實施例中,客戶端,還用于實時傳輸中間件發(fā)送結(jié)束請求;
實時傳輸中間件,還用于接收到客戶端發(fā)送的結(jié)束請求之后,停止輪詢查詢結(jié)果目錄。
其中,若客戶端向?qū)崟r傳輸中間件發(fā)送結(jié)束請求,則實時傳輸中間件不再向客戶端返回查詢結(jié)果,從而實現(xiàn)對客戶端的及時響應(yīng),減少對傳輸資源的占用,提高資源使用效率。
在本發(fā)明的一些實施例中,控制節(jié)點,具體用于得到滿足查詢條件的數(shù)據(jù)的位置之后,根據(jù)滿足查詢條件的數(shù)據(jù)的位置確定目標(biāo)數(shù)據(jù)所在數(shù)據(jù)節(jié)點的互聯(lián)網(wǎng)協(xié)議IP地址和偏移量,根據(jù)IP找到存儲目標(biāo)數(shù)據(jù)的數(shù)據(jù)節(jié)點,再根據(jù)偏移量從存儲目標(biāo)數(shù)據(jù)的數(shù)據(jù)節(jié)點中查找到目標(biāo)數(shù)據(jù)。
本發(fā)明實施例中基于Hadoop的大數(shù)據(jù)實時處理系統(tǒng)可以實現(xiàn)實時查詢:使用分布式計算系統(tǒng),在控制節(jié)點端創(chuàng)建并提交查詢?nèi)蝿?wù)(job)進(jìn)行查詢,查詢分為如下過程:首先在控制節(jié)點上進(jìn)行索引過濾,由于索引文件的名稱是按照時間創(chuàng)建的,根據(jù)查詢條件中的查詢時間條件和索引文件的名稱進(jìn)行匹配,篩選滿足條件的索引文件。將查詢?nèi)蝿?wù)分發(fā)到每臺datanode上,根據(jù)篩選出的索引文件和查詢條件通過B+樹查詢,得到滿足條件的數(shù)據(jù)的位置,再次進(jìn)行任務(wù)的分發(fā),根據(jù)上一步得到的數(shù)據(jù)的位置在每臺機(jī)器上讀取數(shù)據(jù),并返回查詢結(jié)果。高效B+結(jié)構(gòu)和查詢的并行執(zhí)行,使查詢達(dá)到了實時完成。其中,數(shù)據(jù)的位置記錄了存儲數(shù)據(jù)所在機(jī)器(datanode)的IP地址和偏移量,根據(jù)IP地址找到機(jī)器,再根據(jù)偏移量就能找到對應(yīng)的數(shù)據(jù)。
在本發(fā)明的一些實施例中,查詢時間條件,包括:查詢開始時間和查詢結(jié)束時間,其中,查詢條件中必須有查詢時間條件,即可以獲取客戶端設(shè)置的查詢開始時間和查詢結(jié)束時間,從而可以按照客戶端的數(shù)據(jù)獲取請求來執(zhí)行查詢?nèi)蝿?wù),按照該查詢開始時間啟動查詢?nèi)蝿?wù),按照該查詢結(jié)束時間結(jié)束查詢?nèi)蝿?wù)。
本發(fā)明實施例中所有處理都是并發(fā)執(zhí)行的,最大限度的利用了計算機(jī)的硬件設(shè)備,極大地提高了處理效率。使用戶執(zhí)行查詢操作時便能獲得查詢結(jié)果。本發(fā)明包括數(shù)據(jù)的實時入庫,實時查詢,實時結(jié)果傳輸,數(shù)據(jù)的入庫,查詢,傳輸都是并發(fā)的、實時的。本發(fā)明實施例提供的大數(shù)據(jù)實時處理系統(tǒng)中,數(shù)據(jù)的入庫,查詢,傳輸都是并發(fā)的,實時的。在創(chuàng)建任務(wù)的同時,進(jìn)行過濾索引,過濾索引的同時,將過濾完的索引文件分發(fā)到datanode上面,同時datanode完成本地文件的查詢,并向客戶端返回數(shù)據(jù)。任何datanode的查詢完成,即向用戶返回查詢結(jié)果。本發(fā)明方法處理過程都是并發(fā)執(zhí)行的,最大限度的利用了計算機(jī)的硬件設(shè)備,高效B+結(jié)構(gòu)和查詢的并行執(zhí)行,使查詢達(dá)到了實時完成,極大地提高了查詢的效率,用戶執(zhí)行查詢操作時便能獲得查詢結(jié)果。
另外需說明的是,以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上。可以根據(jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本實施例方案的目的。另外,本發(fā)明提供的裝置實施例附圖中,模塊之間的連接關(guān)系表示它們之間具有通信連接,具體可以實現(xiàn)為一條或多條通信總線或信號線。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動的情況下,即可以理解并實施。
通過以上的實施方式的描述,所屬領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借助軟件加必需的通用硬件的方式來實現(xiàn),當(dāng)然也可以通過專用硬件包括專用集成電路、專用CPU、專用存儲器、專用元器件等來實現(xiàn)。一般情況下,凡由計算機(jī)程序完成的功能都可以很容易地用相應(yīng)的硬件來實現(xiàn),而且,用來實現(xiàn)同一功能的具體硬件結(jié)構(gòu)也可以是多種多樣的,例如模擬電路、數(shù)字電路或?qū)S秒娐返?。但是,對本發(fā)明而言更多情況下軟件程序?qū)崿F(xiàn)是更佳的實施方式。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機(jī)軟件產(chǎn)品存儲在可讀取的存儲介質(zhì)中,如計算機(jī)的軟盤、U盤、移動硬盤、只讀存儲器(ROM,Read-Only Memory)、隨機(jī)存取存儲器(RAM,Random Access Memory)、磁碟或者光盤等,包括若干指令用以使得一臺計算機(jī)設(shè)備(可以是個人計算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述的方法。
綜上所述,以上實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照上述實施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對上述各實施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的精神和范圍。