本發(fā)明涉及通信領(lǐng)域,特別涉及一種在分布式存儲系統(tǒng)中統(tǒng)計數(shù)據(jù)的方法、裝置及系統(tǒng)。
背景技術(shù):
HBase數(shù)據(jù)存儲系統(tǒng)是一種分布式存儲系統(tǒng),具有高可靠性、高性能、面向列、可伸縮等特性,利用HBase數(shù)據(jù)存儲系統(tǒng)可以在廉價的PC Server上搭建起大規(guī)模結(jié)構(gòu)化存儲集群。目前HBase數(shù)據(jù)存儲系統(tǒng)常常用作網(wǎng)站的存儲系統(tǒng),用于存儲網(wǎng)站與用戶交互中產(chǎn)生的各類網(wǎng)絡(luò)數(shù)據(jù)。
網(wǎng)站的技術(shù)人員為了把握市場需求需要常常對網(wǎng)站中產(chǎn)生的各類網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行統(tǒng)計,根據(jù)各類網(wǎng)絡(luò)數(shù)據(jù)的統(tǒng)計結(jié)果分析市場需求。目前技術(shù)人員可以在自己的終端上向網(wǎng)站的HBase數(shù)據(jù)存儲系統(tǒng)發(fā)送查詢請求消息;HBaes數(shù)據(jù)存儲系統(tǒng)中的各服務(wù)器將自身存儲的網(wǎng)絡(luò)數(shù)據(jù)發(fā)送給終端;然后終端接收每個服務(wù)器發(fā)送的網(wǎng)絡(luò)數(shù)據(jù),從接收的網(wǎng)絡(luò)數(shù)據(jù)中找出所需要統(tǒng)計的數(shù)據(jù),對找出的數(shù)據(jù)進(jìn)行統(tǒng)計得到統(tǒng)計結(jié)果。
在實現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問題:
目前HBase數(shù)據(jù)存儲系統(tǒng)中的每服務(wù)器將自身存儲的網(wǎng)絡(luò)數(shù)據(jù)發(fā)送給終端,導(dǎo)致網(wǎng)絡(luò)IO(Input Output,輸入輸出)開銷大,另外,由終端對所有數(shù)據(jù)進(jìn)行統(tǒng)計,統(tǒng)計效率低下。
技術(shù)實現(xiàn)要素:
為了減少網(wǎng)絡(luò)IO開銷以及提高統(tǒng)計效率,本發(fā)明提供了一種在分布式存儲系統(tǒng)中統(tǒng)計數(shù)據(jù)的方法、裝置及系統(tǒng)。所述技術(shù)方案如下:
一種在分布式存儲系統(tǒng)中統(tǒng)計數(shù)據(jù)的方法,所述方法包括:
接收查詢請求消息,所述查詢請求消息攜帶數(shù)據(jù)條件;
向分布式存儲系統(tǒng)中的數(shù)據(jù)服務(wù)器發(fā)送所述查詢請求消息,使所述數(shù)據(jù)服 務(wù)器分別從自身存儲的數(shù)據(jù)中找出滿足所述數(shù)據(jù)條件的數(shù)據(jù),統(tǒng)計所述找出的數(shù)據(jù)得到統(tǒng)計結(jié)果;
接收所述分布式存儲系統(tǒng)中的數(shù)據(jù)服務(wù)器返回的統(tǒng)計結(jié)果,對接收的統(tǒng)計結(jié)果進(jìn)行匯總得到最終統(tǒng)計結(jié)果。
一種在分布式存儲系統(tǒng)中統(tǒng)計數(shù)據(jù)的裝置,所述裝置包括:
接收模塊,用于接收查詢請求消息,所述查詢請求消息攜帶數(shù)據(jù)條件;
發(fā)送模塊,用于向分布式存儲系統(tǒng)中的數(shù)據(jù)服務(wù)器發(fā)送所述查詢請求消息,使所述數(shù)據(jù)服務(wù)器分別從自身存儲的數(shù)據(jù)中找出滿足所述數(shù)據(jù)條件的數(shù)據(jù),統(tǒng)計所述找出的數(shù)據(jù)得到統(tǒng)計結(jié)果;
匯總模塊,用于接收所述分布式存儲系統(tǒng)中的數(shù)據(jù)服務(wù)器返回的統(tǒng)計結(jié)果,對接收的統(tǒng)計結(jié)果進(jìn)行匯總得到最終統(tǒng)計結(jié)果。
一種分布式存儲系統(tǒng),所述分布式存儲系統(tǒng)包括:交互服務(wù)器和多個數(shù)據(jù)服務(wù)器;
所述交互服務(wù)器,用于接收終端發(fā)送的查詢請求消息,所述查詢請求消息攜帶數(shù)據(jù)條件,向分布式存儲系統(tǒng)中的數(shù)據(jù)服務(wù)器發(fā)送該查詢請求消息;接收所述數(shù)據(jù)服務(wù)器返回的統(tǒng)計結(jié)果,對接收的各統(tǒng)計結(jié)果進(jìn)行匯總得到最終統(tǒng)計結(jié)果;
所述數(shù)據(jù)服務(wù)器,用于接收所述交互服務(wù)器發(fā)送的查詢請求消息,從自身存儲的數(shù)據(jù)文件中找出滿足所述數(shù)據(jù)條件的數(shù)據(jù),對找出的數(shù)據(jù)進(jìn)行統(tǒng)計得到統(tǒng)計結(jié)果,向所述交互服務(wù)器發(fā)送所述統(tǒng)計結(jié)果。
在本發(fā)明實施例中,各數(shù)據(jù)服務(wù)器具有統(tǒng)計數(shù)據(jù)的功能,各數(shù)據(jù)服務(wù)器可以并行的進(jìn)行數(shù)據(jù)統(tǒng)計,統(tǒng)計時間由之前的分級縮短到秒級,大大提高了數(shù)據(jù)統(tǒng)計的效率;另外,各數(shù)據(jù)服務(wù)器只將統(tǒng)計結(jié)果返回給交互服務(wù)器,再由交互服務(wù)器返回給客戶端,相比直接返回數(shù)據(jù),大大減少網(wǎng)絡(luò)IO的開銷。
附圖說明
圖1-1是本發(fā)明實施例1提供的一種分布式存儲系統(tǒng)的網(wǎng)絡(luò)架構(gòu)圖;
圖1-2是本發(fā)明實施例1提供的分區(qū)結(jié)構(gòu)示意圖;
圖1-3是本發(fā)明實施例1提供的合并數(shù)據(jù)文件示意圖;
圖2是本發(fā)明實施例2提供的一種在分布式存儲系統(tǒng)中統(tǒng)計數(shù)據(jù)的方法流 程圖;
圖3是本發(fā)明實施例3提供的一種在分布式存儲系統(tǒng)中統(tǒng)計數(shù)據(jù)的方法流程圖;
圖4是本發(fā)明實施例4提供的一種在分布式存儲系統(tǒng)中統(tǒng)計數(shù)據(jù)的裝置結(jié)構(gòu)示意圖;
圖5是本發(fā)明實施例5提供的一種服務(wù)器結(jié)構(gòu)示意圖。
具體實施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明實施方式作進(jìn)一步地詳細(xì)描述。
實施例1
參見圖1-1,本發(fā)明實施例提供了一種分布式存儲系統(tǒng),包括:
交互服務(wù)器和多個數(shù)據(jù)服務(wù)器,交互服務(wù)器分別與每個數(shù)據(jù)服務(wù)器相連,并與每個數(shù)據(jù)服務(wù)器組成一個局域網(wǎng),交互服務(wù)器接入外網(wǎng)并通過外網(wǎng)與用戶的終端進(jìn)行交互。
用戶需要統(tǒng)計數(shù)據(jù)時可以在其對應(yīng)的終端上設(shè)置數(shù)據(jù)條件,然后終端向交互服務(wù)器發(fā)送攜帶該數(shù)據(jù)條件的查詢請求消息,以請求交互服務(wù)器統(tǒng)計分布式存儲系統(tǒng)中滿足該數(shù)據(jù)條件的數(shù)據(jù)。
交互服務(wù)器用于接收終端發(fā)送的查詢請求消息,該查詢請求消息攜帶數(shù)據(jù)條件,向分布式存儲系統(tǒng)中的數(shù)據(jù)服務(wù)器發(fā)送該查詢請求消息;接收數(shù)據(jù)服務(wù)器返回的統(tǒng)計結(jié)果,對接收的各統(tǒng)計結(jié)果進(jìn)行匯總得到最終統(tǒng)計結(jié)果,向終端發(fā)送該最終統(tǒng)計結(jié)果。
數(shù)據(jù)服務(wù)器用于存儲分布式存儲系統(tǒng)中的數(shù)據(jù)文件,接收交互服務(wù)器發(fā)送的查詢請求消息,從自身存儲的數(shù)據(jù)文件中找出滿足該數(shù)據(jù)條件的數(shù)據(jù),對找出的數(shù)據(jù)進(jìn)行統(tǒng)計得到統(tǒng)計結(jié)果,向交互服務(wù)器發(fā)送該統(tǒng)計結(jié)果。
進(jìn)一步地,交互服務(wù)器還用于獲取服務(wù)器列表,該服務(wù)器列表中的數(shù)據(jù)服務(wù)器用于存儲分布存儲系統(tǒng)中的各數(shù)據(jù)文件且一個數(shù)據(jù)文件存儲在一個數(shù)據(jù)服務(wù)器中;在接收到該查詢請求消息時,向該服務(wù)器列表中的各數(shù)據(jù)服務(wù)器發(fā)送該查詢請求消息。
可選的,交互服務(wù)器將分布式存儲系統(tǒng)中屬于同一分區(qū)的各數(shù)據(jù)文件合并為一個數(shù)據(jù)文件;配置一個服務(wù)器集合,該服務(wù)器集合中包括分布式存儲系統(tǒng)中的一個或多個數(shù)據(jù)服務(wù)器;將合并的數(shù)據(jù)文件分別存儲在該服務(wù)器集合中的各數(shù)據(jù)服務(wù)器中;從該服務(wù)集合中選擇一數(shù)據(jù)服務(wù)器,將選擇的數(shù)據(jù)服務(wù)器的標(biāo)識添加到服務(wù)器列表中。
在本實施例中,各數(shù)據(jù)服務(wù)器具有統(tǒng)計數(shù)據(jù)的功能,各數(shù)據(jù)服務(wù)器可以并行的進(jìn)行數(shù)據(jù)統(tǒng)計,統(tǒng)計時間由之前的分級縮短為秒級,大大提高了數(shù)據(jù)統(tǒng)計的效率;另外,各數(shù)據(jù)服務(wù)器只將統(tǒng)計結(jié)果返回給交互服務(wù)器,再由交互服務(wù)器返回給客戶端,相比直接返回數(shù)據(jù),大大減少網(wǎng)絡(luò)IO的開銷。
數(shù)據(jù)服務(wù)器中存儲的數(shù)據(jù)都是網(wǎng)站在與用戶交互時產(chǎn)生的數(shù)據(jù),網(wǎng)站將產(chǎn)生的數(shù)據(jù)存儲在數(shù)據(jù)服務(wù)器的數(shù)據(jù)文件中。網(wǎng)站在分布式存儲系統(tǒng)中是按分區(qū)來存儲數(shù)據(jù),一個分區(qū)中可以包括一個或多個數(shù)據(jù)文件,且一個分區(qū)可以位于同一數(shù)據(jù)服務(wù)器上或在不同的數(shù)據(jù)服務(wù)器上。例如,參見圖1-2,分區(qū)1中包括數(shù)據(jù)文件HFile11、HFile12……HFile1N,網(wǎng)站產(chǎn)生數(shù)據(jù)時,如果將該數(shù)據(jù)存儲在分區(qū)1,網(wǎng)站從分區(qū)1包括的數(shù)據(jù)文件HFile11、HFile12……HFile1N中選擇一個或多個數(shù)據(jù)文件,假設(shè)選擇數(shù)據(jù)文件HFile11和HFile12,將該數(shù)據(jù)存儲在數(shù)據(jù)文件HFile11和HFile12中。
當(dāng)一個分區(qū)包括多個數(shù)據(jù)文件且該多個數(shù)據(jù)文件可能位于不同的數(shù)據(jù)服務(wù)器中,由于多個數(shù)據(jù)文件中可能存在部分?jǐn)?shù)據(jù)相同,由各數(shù)據(jù)服務(wù)器直接對自身存儲的數(shù)據(jù)進(jìn)行統(tǒng)計會影響統(tǒng)計結(jié)果的精度,所以在請求每個數(shù)據(jù)服務(wù)器對數(shù)據(jù)進(jìn)行統(tǒng)計之前,交互服務(wù)器還用于將分布式存儲系統(tǒng)中屬于同一分區(qū)的各數(shù)據(jù)文件合并為一個數(shù)據(jù)文件,并存儲在一臺數(shù)據(jù)服務(wù)器中。
交互服務(wù)器合并一個數(shù)據(jù)文件后,還配置一個服務(wù)器集合,該服務(wù)器集合中包括分布式存儲系統(tǒng)中的一個或多個數(shù)據(jù)服務(wù)器;將合并的數(shù)據(jù)文件分別存儲在服務(wù)器集合中的各數(shù)據(jù)服務(wù)器中,服務(wù)器集合中的各數(shù)據(jù)服務(wù)器相互備份各自的數(shù)據(jù);從服務(wù)器集合中選擇一數(shù)據(jù)服務(wù)器,選擇的數(shù)據(jù)服務(wù)器用于進(jìn)行數(shù)據(jù)統(tǒng)計,其他未選擇的數(shù)據(jù)服務(wù)器對選擇的數(shù)據(jù)服務(wù)器進(jìn)行備份,將選擇的數(shù)據(jù)服務(wù)器的標(biāo)識添加到服務(wù)器列表中。相應(yīng)地,交互服務(wù)器在接收到終端發(fā)送的查詢請求消息時,向服務(wù)器列表中的各數(shù)據(jù)服務(wù)器發(fā)送該查詢請求消息。
參見圖1-3,交互服務(wù)器可以將屬于分區(qū)1的數(shù)據(jù)文件HFile11、HFile12…… HFile1N合并成一個數(shù)據(jù)文件HFile1,配置一個服務(wù)器集合,該服務(wù)器集合中包括數(shù)據(jù)服務(wù)器Server1、Server2和Server3,將合并的數(shù)據(jù)文件HFile1分別存儲在數(shù)據(jù)服務(wù)器Server1、Server2和Server3中,然后選擇數(shù)據(jù)服務(wù)器Server1并將數(shù)據(jù)服務(wù)器Server1的標(biāo)識添加到服務(wù)器列表中。其中,數(shù)據(jù)服務(wù)器Server1用于進(jìn)行數(shù)據(jù)統(tǒng)計,數(shù)據(jù)服務(wù)器Server2和Server3用于對數(shù)據(jù)服務(wù)器Server1進(jìn)行備份。
在本實施例中,分布式存儲系統(tǒng)可以為HBase存儲系統(tǒng),數(shù)據(jù)文件為可以為HFile文件。在數(shù)據(jù)服務(wù)器中存儲的數(shù)據(jù)可以為(key,value)對,value為具體的數(shù)據(jù)內(nèi)容,key為數(shù)據(jù)標(biāo)識。例如,該(key,value)對可以為用戶標(biāo)識與用戶信息,用戶信息可以包括用戶性別、姓名、所在城市和/或愛好等信息。
在本發(fā)明實施例中,分布式存儲系統(tǒng)為Hbase分布式存儲系統(tǒng)。
在本發(fā)明實施例中,各數(shù)據(jù)服務(wù)器具有統(tǒng)計數(shù)據(jù)的功能,各數(shù)據(jù)服務(wù)器可以并行的進(jìn)行數(shù)據(jù)統(tǒng)計,統(tǒng)計時間由之前的分級縮短到秒級,大大提高了數(shù)據(jù)統(tǒng)計的效率;另外,各數(shù)據(jù)服務(wù)器只將統(tǒng)計結(jié)果返回給交互服務(wù)器,再由交互服務(wù)器返回給客戶端,相比直接返回數(shù)據(jù),大大減少網(wǎng)絡(luò)IO的開銷。交互服務(wù)器還用于將分布式存儲系統(tǒng)中屬于同一分區(qū)的各數(shù)據(jù)文件合并為一個數(shù)據(jù)文件,并存儲在一臺數(shù)據(jù)服務(wù)器中,提高了統(tǒng)計結(jié)果的精度。
實施例2
參見圖2,本發(fā)明實施例提供了一種在分布式存儲系統(tǒng)中統(tǒng)計數(shù)據(jù)的方法,包括:
步驟201:接收查詢請求消息,該查詢請求消息攜帶數(shù)據(jù)條件。
步驟202:向分布式存儲系統(tǒng)中的數(shù)據(jù)服務(wù)器發(fā)送該查詢請求消息,使數(shù)據(jù)服務(wù)器分別從自身存儲的數(shù)據(jù)中找出滿足數(shù)據(jù)條件的數(shù)據(jù),統(tǒng)計找出的數(shù)據(jù)得到統(tǒng)計結(jié)果。
步驟203:接收分布式存儲系統(tǒng)中的數(shù)據(jù)服務(wù)器返回的統(tǒng)計結(jié)果,對接收的統(tǒng)計結(jié)果進(jìn)行匯總得到最終統(tǒng)計結(jié)果。
進(jìn)一步地,在向分布式存儲系統(tǒng)中的各數(shù)據(jù)服務(wù)器發(fā)送該查詢請求消息之前,還包括:
獲取服務(wù)器列表,該服務(wù)器列表中的數(shù)據(jù)服務(wù)器用于存儲分布存儲系統(tǒng)中 的各數(shù)據(jù)文件且一個數(shù)據(jù)文件存儲在一個數(shù)據(jù)服務(wù)器中;
可選的,向分布式存儲系統(tǒng)中的各數(shù)據(jù)服務(wù)器發(fā)送該查詢請求消息,包括:
向服務(wù)器列表中的各數(shù)據(jù)服務(wù)器發(fā)送該查詢請求消息。
可選的,獲取服務(wù)器列表,包括:
將分布式存儲系統(tǒng)中屬于同一分區(qū)的各數(shù)據(jù)文件合并為一個數(shù)據(jù)文件;
配置一個服務(wù)器集合,該服務(wù)器集合中包括分布式存儲系統(tǒng)中的一個或多個數(shù)據(jù)服務(wù)器;
將合并的數(shù)據(jù)文件分別存儲在該服務(wù)器集合中的各數(shù)據(jù)服務(wù)器中;
從該服務(wù)集合中選擇一數(shù)據(jù)服務(wù)器,將選擇的數(shù)據(jù)服務(wù)器的標(biāo)識添加到服務(wù)器列表中。
其中,分布式存儲系統(tǒng)為Hbase分布式存儲系統(tǒng)。
在本發(fā)明實施例中,各數(shù)據(jù)服務(wù)器具有統(tǒng)計數(shù)據(jù)的功能,各數(shù)據(jù)服務(wù)器可以并行的進(jìn)行數(shù)據(jù)統(tǒng)計,統(tǒng)計時間由之前的分級縮短到秒級,大大提高了數(shù)據(jù)統(tǒng)計的效率;另外,各數(shù)據(jù)服務(wù)器只將統(tǒng)計結(jié)果返回給交互服務(wù)器,再由交互服務(wù)器返回給客戶端,相比直接返回數(shù)據(jù),大大減少網(wǎng)絡(luò)IO的開銷。
實施例3
參見圖3,本發(fā)明實施例提供了一種在分布式存儲系統(tǒng)中統(tǒng)計數(shù)據(jù)的方法,包括:
步驟301:交互服務(wù)器將分布式存儲系統(tǒng)中屬于同一分區(qū)的各數(shù)據(jù)文件合并為一個數(shù)據(jù)文件。
在分布式存儲系統(tǒng)中每個數(shù)據(jù)文件中包含其屬于的分區(qū)的分區(qū)標(biāo)識。本步驟可以為:交互服務(wù)器對分布式存儲系統(tǒng)中的每個數(shù)據(jù)服務(wù)器中的數(shù)據(jù)文件進(jìn)行掃描,掃描出包含同一分區(qū)標(biāo)識的數(shù)據(jù)文件,將包含同一分區(qū)標(biāo)識的數(shù)據(jù)文件合并為一個數(shù)據(jù)文件。
分布式存儲系統(tǒng)中的數(shù)據(jù)都是網(wǎng)站與用戶進(jìn)行交互時產(chǎn)生的數(shù)據(jù)。網(wǎng)站按分區(qū)來存儲數(shù)據(jù)。一個分區(qū)中包括一個或多個數(shù)據(jù)文件,且一個分區(qū)可以位于同一數(shù)據(jù)服務(wù)器上或位于不同的數(shù)據(jù)服務(wù)器上。由于屬于同一分區(qū)的數(shù)據(jù)文件中可能存在部分?jǐn)?shù)據(jù)相同,如果將這些相同的數(shù)據(jù)分布在不同數(shù)據(jù)服務(wù)器,由各數(shù)據(jù)服務(wù)器分別進(jìn)行統(tǒng)計,得到統(tǒng)計結(jié)果中存在部分?jǐn)?shù)據(jù)被重復(fù)統(tǒng)計,造成 最終統(tǒng)計結(jié)果不準(zhǔn)確,因此需要執(zhí)行本步驟將同一分區(qū)的數(shù)據(jù)文件合并為同一數(shù)據(jù)文件。
步驟302:交互服務(wù)器配置服務(wù)器集合,該服務(wù)器集合中包括分布式存儲系統(tǒng)中的一個或多個數(shù)據(jù)服務(wù)器。
分布式存儲系統(tǒng)中的各數(shù)據(jù)服務(wù)器可以被事先劃分成多個服務(wù)器集合,每個服務(wù)器集合中包括的數(shù)據(jù)服務(wù)器的數(shù)目相同。服務(wù)器集合中的各數(shù)據(jù)服務(wù)器用于進(jìn)行相互間的備份,所以服務(wù)器集合中的各數(shù)據(jù)服務(wù)器存儲的數(shù)據(jù)都相同。
步驟303:交互服務(wù)器將合并的數(shù)據(jù)文件分別存儲在該服務(wù)器集合中的各數(shù)據(jù)服務(wù)器中。
步驟304:交互服務(wù)器從該服務(wù)器集合中選擇一數(shù)據(jù)服務(wù)器,將選擇的數(shù)據(jù)服務(wù)器的標(biāo)識添加到服務(wù)器列表中。
服務(wù)器集合中包括的各數(shù)據(jù)服務(wù)器存儲的數(shù)據(jù)都相同,所以一個服務(wù)器集合只需要一個數(shù)據(jù)服務(wù)器用于統(tǒng)計數(shù)據(jù),其他的數(shù)據(jù)服務(wù)器對應(yīng)該數(shù)據(jù)服務(wù)器進(jìn)行備份。其中,交互服務(wù)器從服務(wù)器集合中選擇出來的一個數(shù)據(jù)服務(wù)器即用于統(tǒng)計數(shù)據(jù),其他未選擇的各數(shù)據(jù)服務(wù)器對選擇的數(shù)據(jù)服務(wù)器進(jìn)行備份。
交互服務(wù)器重復(fù)按上述步驟301至304將分布式存儲系統(tǒng)中的所有屬于同一分區(qū)的數(shù)據(jù)文件合并為一數(shù)據(jù)文件。然后用戶便可以在終端中請求交互服務(wù)器進(jìn)行數(shù)據(jù)統(tǒng)計,具體流程如下。
步驟305:交互服務(wù)器接收終端發(fā)送的查詢請求消息,該查詢請求消息攜帶數(shù)據(jù)條件。
用戶需要交互服務(wù)器進(jìn)行數(shù)據(jù)統(tǒng)計時,可以在其對應(yīng)的終端上設(shè)置數(shù)據(jù)條件,例如,該數(shù)據(jù)條件可以為統(tǒng)計所在地為上海的用戶數(shù)目,統(tǒng)計愛好為打籃球的用戶數(shù)目或統(tǒng)計性別為女性的用戶數(shù)目等。然后終端向交互服務(wù)器發(fā)送攜帶該數(shù)據(jù)條件的查詢請求消息。
步驟306:交互服務(wù)器向該服務(wù)器列表中的每個數(shù)據(jù)服務(wù)器發(fā)送該查詢請求消息。
交互服務(wù)器根據(jù)該服務(wù)器列表中的每個數(shù)據(jù)服務(wù)器的標(biāo)識,分別向每個數(shù)據(jù)服務(wù)器發(fā)送該查詢請求消息。
步驟307:數(shù)據(jù)服務(wù)器接收該查詢請求消息,根據(jù)該查詢請求消息攜帶的數(shù)據(jù)條件從自身存儲的數(shù)據(jù)中尋找出滿足該數(shù)據(jù)條件的數(shù)據(jù)。
步驟308:數(shù)據(jù)服務(wù)器對找出的數(shù)據(jù)進(jìn)行統(tǒng)計得到統(tǒng)計結(jié)果,返回該統(tǒng)計結(jié)果給交互服務(wù)器。
步驟309:交互服務(wù)器接收各數(shù)據(jù)服務(wù)器的統(tǒng)計結(jié)果,對各數(shù)據(jù)服務(wù)器的統(tǒng)計結(jié)果進(jìn)行匯總得到最終統(tǒng)計結(jié)果,向終端發(fā)送最終統(tǒng)計結(jié)果。
交互服務(wù)器對接收的各統(tǒng)計結(jié)果進(jìn)行累加得到最終統(tǒng)計結(jié)果,向終端發(fā)送最終統(tǒng)計結(jié)果,終端接收并顯示最終統(tǒng)計結(jié)果給用戶,以使用戶對統(tǒng)計結(jié)果進(jìn)行分析。
在本實施例中,各數(shù)據(jù)服務(wù)器具有統(tǒng)計數(shù)據(jù)的功能,各數(shù)據(jù)服務(wù)器可以并行的進(jìn)行數(shù)據(jù)統(tǒng)計,統(tǒng)計時間由之前的分級縮短至秒級,大大提高了數(shù)據(jù)統(tǒng)計的效率;另外,各數(shù)據(jù)服務(wù)器只將統(tǒng)計結(jié)果返回給交互服務(wù)器,再由交互服務(wù)器返回給客戶端,相比直接返回數(shù)據(jù),大大減少網(wǎng)絡(luò)IO的開銷。交互服務(wù)器還用于將分布式存儲系統(tǒng)中屬于同一分區(qū)的各數(shù)據(jù)文件合并為一個數(shù)據(jù)文件,并存儲在一臺數(shù)據(jù)服務(wù)器中,提高了統(tǒng)計結(jié)果的精度。
實施例4
參見圖4,本發(fā)明實施例提供了一種在分布式存儲系統(tǒng)中統(tǒng)計數(shù)據(jù)的裝置,包括:
接收模塊401,用于接收查詢請求消息,所述查詢請求消息攜帶數(shù)據(jù)條件;
發(fā)送模塊402,用于向分布式存儲系統(tǒng)中的數(shù)據(jù)服務(wù)器發(fā)送所述查詢請求消息,使所述數(shù)據(jù)服務(wù)器分別從自身存儲的數(shù)據(jù)中找出滿足所述數(shù)據(jù)條件的數(shù)據(jù),統(tǒng)計所述找出的數(shù)據(jù)得到統(tǒng)計結(jié)果;
匯總模塊403,用于接收所述分布式存儲系統(tǒng)中的數(shù)據(jù)服務(wù)器返回的統(tǒng)計結(jié)果,對接收的統(tǒng)計結(jié)果進(jìn)行匯總得到最終統(tǒng)計結(jié)果。
進(jìn)一步地,所述裝置還包括:
獲取模塊,用于獲取服務(wù)器列表,所述服務(wù)器列表中的數(shù)據(jù)服務(wù)器用于存儲所述分布存儲系統(tǒng)中的各數(shù)據(jù)文件且一個數(shù)據(jù)文件存儲在一個數(shù)據(jù)服務(wù)器中;
可選的,所述發(fā)送模塊402,用于向所述服務(wù)器列表中的各數(shù)據(jù)服務(wù)器發(fā)送所述查詢請求消息。
可選的,所述獲取模塊包括:
合并單元,用于將所述分布式存儲系統(tǒng)中屬于同一分區(qū)的各數(shù)據(jù)文件合并為一個數(shù)據(jù)文件;
配置單元,用于配置一個服務(wù)器集合,所述服務(wù)器集合中包括所述分布式存儲系統(tǒng)中的一個或多個數(shù)據(jù)服務(wù)器;
存儲單元,用于將所述合并的數(shù)據(jù)文件分別存儲在所述服務(wù)器集合中的各數(shù)據(jù)服務(wù)器中;
添加單元,用于從所述服務(wù)集合中選擇一數(shù)據(jù)服務(wù)器,將所述選擇的數(shù)據(jù)服務(wù)器的標(biāo)識添加到服務(wù)器列表中。
其中,所述分布式存儲系統(tǒng)為Hbase分布式存儲系統(tǒng)。
在本實施例中,各數(shù)據(jù)服務(wù)器具有統(tǒng)計數(shù)據(jù)的功能,各數(shù)據(jù)服務(wù)器可以并行的進(jìn)行數(shù)據(jù)統(tǒng)計,統(tǒng)計時間由之前的分級縮短至秒級,大大提高了數(shù)據(jù)統(tǒng)計的效率;另外,各數(shù)據(jù)服務(wù)器只將統(tǒng)計結(jié)果返回給交互服務(wù)器,再由交互服務(wù)器返回給客戶端,相比直接返回數(shù)據(jù),大大減少網(wǎng)絡(luò)IO的開銷。交互服務(wù)器還用于將分布式存儲系統(tǒng)中屬于同一分區(qū)的各數(shù)據(jù)文件合并為一個數(shù)據(jù)文件,并存儲在一臺數(shù)據(jù)服務(wù)器中,提高了統(tǒng)計結(jié)果的精度。
實施例5
參見圖5,本發(fā)明實施例提供的服務(wù)器的結(jié)構(gòu)示意圖,該服務(wù)器可以為上述交互服務(wù)器。服務(wù)器1900可因配置或性能不同而產(chǎn)生比較大的差異,可以包括一個或一個以上中央處理器(central processing units,CPU)1922(例如,一個或一個以上處理器)和存儲器1932,一個或一個以上存儲應(yīng)用程序1942或數(shù)據(jù)1944的存儲介質(zhì)1930(例如一個或一個以上海量存儲設(shè)備)。其中,存儲器1932和存儲介質(zhì)1930可以是短暫存儲或持久存儲。存儲在存儲介質(zhì)1930的程序可以包括一個或一個以上模塊(圖示沒標(biāo)出),每個模塊可以包括對服務(wù)器中的一系列指令操作。更進(jìn)一步地,中央處理器1922可以設(shè)置為與存儲介質(zhì)1930通信,在服務(wù)器1900上執(zhí)行存儲介質(zhì)1930中的一系列指令操作。
服務(wù)器1900還可以包括一個或一個以上電源1926,一個或一個以上有線或無線網(wǎng)絡(luò)接口1950,一個或一個以上輸入輸出接口1958,一個或一個以上鍵盤1956,和/或,一個或一個以上操作系統(tǒng)1941,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,F(xiàn)reeBSDTM等等。
服務(wù)器1900可以包括有存儲器,以及一個或者一個以上的程序,其中一個或者一個以上程序存儲于存儲器中,且經(jīng)配置以由一個或者一個以上處理器執(zhí)行所述一個或者一個以上程序包含用于進(jìn)行以下操作的指令:
接收查詢請求消息,所述查詢請求消息攜帶數(shù)據(jù)條件;
向分布式存儲系統(tǒng)中的數(shù)據(jù)服務(wù)器發(fā)送所述查詢請求消息,使所述數(shù)據(jù)服務(wù)器分別從自身存儲的數(shù)據(jù)中找出滿足所述數(shù)據(jù)條件的數(shù)據(jù),統(tǒng)計所述找出的數(shù)據(jù)得到統(tǒng)計結(jié)果;
接收所述分布式存儲系統(tǒng)中的數(shù)據(jù)服務(wù)器返回的統(tǒng)計結(jié)果,對接收的統(tǒng)計結(jié)果進(jìn)行匯總得到最終統(tǒng)計結(jié)果。
進(jìn)一步地,所述向分布式存儲系統(tǒng)中的各數(shù)據(jù)服務(wù)器發(fā)送所述查詢請求消息之前,還包括:
獲取服務(wù)器列表,所述服務(wù)器列表中的數(shù)據(jù)服務(wù)器用于存儲所述分布存儲系統(tǒng)中的各數(shù)據(jù)文件且一個數(shù)據(jù)文件存儲在一個數(shù)據(jù)服務(wù)器中;
所述向分布式存儲系統(tǒng)中的各數(shù)據(jù)服務(wù)器發(fā)送所述查詢請求消息,包括:
向所述服務(wù)器列表中的各數(shù)據(jù)服務(wù)器發(fā)送所述查詢請求消息。
可選的,所述獲取服務(wù)器列表,包括:
將所述分布式存儲系統(tǒng)中屬于同一分區(qū)的各數(shù)據(jù)文件合并為一個數(shù)據(jù)文件;
配置一個服務(wù)器集合,所述服務(wù)器集合中包括所述分布式存儲系統(tǒng)中的一個或多個數(shù)據(jù)服務(wù)器;
將所述合并的數(shù)據(jù)文件分別存儲在所述服務(wù)器集合中的各數(shù)據(jù)服務(wù)器中;
從所述服務(wù)集合中選擇一數(shù)據(jù)服務(wù)器,將所述選擇的數(shù)據(jù)服務(wù)器的標(biāo)識添加到服務(wù)器列表中。
所述分布式存儲系統(tǒng)為Hbase分布式存儲系統(tǒng)。
在本實施例中,各數(shù)據(jù)服務(wù)器具有統(tǒng)計數(shù)據(jù)的功能,各數(shù)據(jù)服務(wù)器可以并行的進(jìn)行數(shù)據(jù)統(tǒng)計,統(tǒng)計時間由之前的分級縮短至秒級,大大提高了數(shù)據(jù)統(tǒng)計的效率;另外,各數(shù)據(jù)服務(wù)器只將統(tǒng)計結(jié)果返回給交互服務(wù)器,再由交互服務(wù)器返回給客戶端,相比直接返回數(shù)據(jù),大大減少網(wǎng)絡(luò)IO的開銷。交互服務(wù)器還用于將分布式存儲系統(tǒng)中屬于同一分區(qū)的各數(shù)據(jù)文件合并為一個數(shù)據(jù)文件,并存儲在一臺數(shù)據(jù)服務(wù)器中,提高了統(tǒng)計結(jié)果的精度。
本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例的全部或部分步驟可以通過硬件來完成,也可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲于一種計算機可讀存儲介質(zhì)中,上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。
以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。