王穎卓 郭開衛(wèi) 王亞雄
摘 ?要:本案涉及計算機數(shù)據(jù)統(tǒng)計領域的一種數(shù)據(jù)統(tǒng)計方法和裝置,具體來說,首先根據(jù)預先設定的過濾規(guī)則,對原始交易數(shù)據(jù)進行過濾處理,得到第一交易數(shù)據(jù);然后根據(jù)第一交易數(shù)據(jù)中的關鍵字信息,確定第一交易數(shù)據(jù)所對應的計算服務器;最后將第一交易數(shù)據(jù)發(fā)送至計算服務器,以使計算服務器將根據(jù)預先設定的統(tǒng)計維度對第一交易數(shù)據(jù)進行統(tǒng)計得到的第二交易數(shù)據(jù)發(fā)送給查詢服務器使用,關鍵字相同的第一交易數(shù)據(jù)將會發(fā)送至同一計算服務器,而計算服務器可將第二交易數(shù)據(jù)給查詢服務器使用。因此,可通過增加計算服務器的數(shù)量的方式水平擴展計算統(tǒng)計的能力,從而提高將數(shù)據(jù)寫入數(shù)據(jù)庫的速度,進而提升數(shù)據(jù)的查詢效率。
關鍵詞:交易數(shù)據(jù);實時查詢;計算服務器
中圖分類號:TP333 ? ? 文獻標識碼:A 文章編號:2096-4706(2019)12-0023-03
Abstract:This case relates to a data statistics method and device in the field of computer data statistics,including:firstly filtering the original transaction data according to a preset filtering rule to obtain the first transaction data,and then according to the first transaction data Key information,determining a computing server corresponding to the first transaction data,and finally sending the first transaction data to the computing server,so that the computing server will perform the second transaction obtained by counting the first transaction data according to a preset statistical dimension. The data is sent to the query server for use. The first transaction data with the same keyword will be sent to the same computing server,and the computing server can use the second transaction data for the query server. Therefore,the ability to calculate statistics can be horizontally expanded by increasing the number of computing servers,thereby increasing the speed at which data is written into the database,thereby improving data query efficiency.
Keywords:transaction data;real-time query;computing server
0 ?引 ?言
目前行業(yè)內普遍采用的實時統(tǒng)計方法是接收實時交易數(shù)據(jù),以事務方式計算后寫入數(shù)據(jù)庫供用戶查詢,這種方法的時效性較低,而且支持大并發(fā)量的成本要求非常高。
1 ?技術背景
數(shù)據(jù)統(tǒng)計在各行各業(yè)中都有應用,尤其是在銀行業(yè)務中使用較為頻繁。目前,普遍采用的數(shù)據(jù)統(tǒng)計方法是在接收交易數(shù)據(jù)并針對接收到的交易數(shù)據(jù)進行計算后,再以事務的方式將計算后的交易數(shù)據(jù)寫入數(shù)據(jù)庫,以供用戶查詢。然而,通過事務的方式將交易數(shù)據(jù)寫入數(shù)據(jù)庫的時效性較低,并且由于通過事務的方式將交易數(shù)據(jù)寫入數(shù)據(jù)庫的速度取決于服務器的CPU(Central Processing Unit,中央處理器)、內存以及數(shù)據(jù)庫的寫入性能,難以水平擴展,從而無法提高將交易數(shù)據(jù)寫入數(shù)據(jù)庫的速度,降低了數(shù)據(jù)的查詢效率。
2 ?實現(xiàn)方式
2.1 ?數(shù)據(jù)統(tǒng)計流程
數(shù)據(jù)統(tǒng)計通過以下3步完成:(1)根據(jù)預先設定的過濾規(guī)則,對原始交易數(shù)據(jù)進行過濾處理,得到第一交易數(shù)據(jù),其中,所述過濾規(guī)則包括所述原始交易數(shù)據(jù)中的至少一個字段信息。(2)根據(jù)第一交易數(shù)據(jù)中的關鍵字信息,確定第一交易數(shù)據(jù)所對應的計算服務器。(3)將第一交易數(shù)據(jù)發(fā)送至所述計算服務器,以使所述計算服務器能夠將根據(jù)預先設定的統(tǒng)計維度對第一交易數(shù)據(jù)進行統(tǒng)計得到的第二交易數(shù)據(jù)發(fā)送給查詢服務器使用。
過濾規(guī)則是由各計算服務器的統(tǒng)計維度確定的。
上述步驟(2)中,可預先將所有的計算服務器的標識信息放置在一致性哈希算法的閉合環(huán)中,根據(jù)第一交易數(shù)據(jù)中的關鍵字信息,確定數(shù)據(jù)所對應的計算服務器,可通過將第一交易數(shù)據(jù)中的關鍵字信息作為一致性哈希算法的輸入?yún)?shù)進行運算后,得到對應的計算服務器的標識信息,然后確定第一交易數(shù)據(jù)所對應的計算服務器。
因此,具有相同關鍵字的交易數(shù)據(jù)將會被路由到標識信息相同的計算服務器中,即具有相同關鍵字的交易數(shù)據(jù)將會被路由到同一計算服務器中。
上述步驟(3)中,可通過RPC(Remote Procedure Call Protocol,遠程過程調用協(xié)議)的方式將第一交易數(shù)據(jù)發(fā)送至計算服務器。
需要說明的是,如果第一交易數(shù)據(jù)中包含多個關鍵字,則第一交易數(shù)據(jù)可根據(jù)關鍵字的不同被路由到多個計算服務器。為了減少網(wǎng)絡傳輸次數(shù),可在計算服務器中設置計時器,用于統(tǒng)計一段時間內接收的交易數(shù)據(jù)。例如,當計算服務器中的計時器設置的計時時間為1分鐘時,表示計算服務器在接收的交易數(shù)據(jù)持續(xù)的時間為1分鐘,然后計算服務器根據(jù)自身的統(tǒng)計維度對1分鐘之內接收的交易數(shù)據(jù)進行統(tǒng)計處理。
在計算服務器中設置計時器后,為了提升系統(tǒng)處理能力,還可在計算服務器中設置緩沖隊列。
2.2 ?計算服務處理
當在計算服務器中設置了計時器和緩沖隊列后,計算服務器的處理流程如下:(1)接收有效的第一交易數(shù)據(jù)。(2)判斷計時器是否已歸零,若是,則轉至步驟(3);否則,轉至步驟(6)。(3)讀取自身的統(tǒng)計規(guī)則。(4)根據(jù)讀取的自身的統(tǒng)計規(guī)則,對緩沖隊列中的第一交易數(shù)據(jù)進行統(tǒng)計處理,得到第二交易數(shù)據(jù)。(5)將第二交易數(shù)據(jù)發(fā)送給查詢服務器使用。(6)將接收的有效的第一交易數(shù)據(jù)存儲至緩沖隊列中。
此外,為了減少網(wǎng)絡傳輸次數(shù),還可通過在計算服務器中設置閾值的方式控制第一交易數(shù)據(jù)的數(shù)量。例如,當計算服務器中的閾值設置為50時,表示計算服務器在接收到50條第一交易數(shù)據(jù)后,可根據(jù)自身的統(tǒng)計維度對上述接收到的50條交易數(shù)據(jù)進行統(tǒng)計處理。
當計算服務器中設置了閾值和緩沖隊列后,計算服務器的處理流程如下:(1)接收有效的第一交易數(shù)據(jù)。(2)判斷接收的有效的第一交易數(shù)據(jù)的條數(shù)是否達到閾值,若是,則轉至步驟(3);否則,轉至步驟(6)。(3)讀取自身的統(tǒng)計規(guī)則。(4)根據(jù)讀取的自身的統(tǒng)計規(guī)則,對緩沖隊列中的第一交易數(shù)據(jù)進行統(tǒng)計處理,得到第二交易數(shù)據(jù)。(5)將第二交易數(shù)據(jù)發(fā)送給查詢服務器使用。(6)將接收的有效的第一交易數(shù)據(jù)存儲至緩沖隊列中。
需要說明的是,無論是通過在計算服務器中設置計時器的方式,還是通過在計算服務器中設置閾值的方式,當計算服務器空閑時,均可以清空自身的緩存,從而確保計算服務器的處理實時性。
2.3 ?計算服務檢測
為了確保計算服務器的處理實時性,還可通過心跳機制對計算服務器進行檢測,在檢測到計算服務器發(fā)生故障時,將發(fā)生故障的計算服務器的標識信息從一致性哈希算法的閉合環(huán)中刪除。通過心跳機制,對計算服務器進行檢測的具體流程如下:(1)定期接收計算服務器的存活消息。(2)判斷在預設的時間段內,是否接收到計算服務器發(fā)送的存活消息,若是,則轉至步驟(3);否則,轉至步驟(4)。(3)判定所述計算服務器處于正常狀態(tài)。(4)判定所述計算服務器發(fā)生故障。(5)將發(fā)生故障的計算服務器的標識信息從一致性哈希算法的閉合環(huán)中刪除。
本發(fā)明實施例中的查詢服務器還可通過Redis集群的方式,從而提供高效的讀寫服務,即查詢服務器可通過Redis集群的方式對計算服務器提供高效的寫服務,同時,查詢服務器還可通過Redis集群的方式提供高效的查詢服務。查詢服務器在收集所有計算服務器發(fā)送的第二交易數(shù)據(jù)后,可將第二交易數(shù)據(jù)寫入Redis集群中,因此,在使用查詢服務器查詢交易數(shù)據(jù)時,可從查詢服務器管理的Redis集群中查詢出統(tǒng)計結果數(shù)據(jù)。為了避免在查詢服務器發(fā)生故障時,影響到數(shù)據(jù)的查詢,還可設置一個備用的查詢服務器。當設置備用的查詢服務器以后,計算服務器除了將第二交易數(shù)據(jù)發(fā)送給主查詢服務器外,還需要將第二交易數(shù)據(jù)同時發(fā)送給備用服務器。
本案例中的過濾規(guī)則以及計算服務器中的統(tǒng)計維度,可基于用戶的需求進行更改。當存在多個過濾規(guī)則以及對應的計算服務器中的統(tǒng)計維度時,還可采用訂閱的方式供用戶選擇合適的過濾規(guī)則和統(tǒng)計維度,從而統(tǒng)計出用戶需要的統(tǒng)計結果數(shù)據(jù)。
下面通過一個具體的例子,對上述方法流程進行詳細的解釋說明。在該例子中,假設存在兩個計算服務器,分別為計算服務器1和計算服務器2,并假設計算服務器1的標識信息為“1”,計算服務器2的標識信息為“2”,并且預先將計算服務器1的標識信息“1”和計算服務器2的標識信息“2”設置在一致性哈希算法的閉合環(huán)中,進一步假設計算服務器1和計算服務器2對接收的交易數(shù)據(jù)統(tǒng)計的時間窗為3分鐘。
繼續(xù)假設,計算服務器1的統(tǒng)計維度X包括字段“商戶”“金額”“日期”,計算服務器2的統(tǒng)計維度Y包括“卡號”“商戶”“金額”,則根據(jù)計算服務器1的統(tǒng)計維度X和計算服務器2的統(tǒng)計維度Y,可確定過濾規(guī)則Z包括的字段有“商戶”“金額”“日期”“卡號”,并假設存在兩個關鍵字,分別為“東方航空”和“123”。
繼續(xù)假設用戶A使用卡號123的信用卡于2019年6月1日10:50分在東方航空上購買了一張機票,則原始交易信息為“用戶:A,卡號:123,商戶:東方航空,金額:500元,購買渠道:東方航空APP,日期:2019年6月1日”。
過濾規(guī)則Z包括“商戶”“金額”“日期”“卡號”,交易數(shù)據(jù)在使用過濾規(guī)則Z后,得到的交易數(shù)據(jù)為“卡號:123,商戶:東方航空,金額:500元,日期:2019年6月1日”。
由于字段“東方航空”為關鍵字,因此可將關鍵字商戶字段“東方航空”作為輸入?yún)?shù)采用一致性哈希算法進行運算,并假設將關鍵字商戶字段“東方航空”作為輸入?yún)?shù)采用一致性哈希算法進行運算后,得到的計算服務器標識信息為“1”,即用戶A的交易數(shù)據(jù)對應的計算服務器為計算服務器1,因此,可將用戶A的交易數(shù)據(jù)路由到計算服務器1中。
基于用戶A的交易數(shù)據(jù),由于字段“123”為關鍵字,因此可將關鍵字卡號字段“123”作為輸入?yún)?shù)采用一致性哈希算法進行運算,并假設將關鍵字卡號字段“123”作為輸入?yún)?shù)采用一致性哈希算法進行運算后,得到的計算服務器標識信息為“2”,即用戶A的交易數(shù)據(jù)對應的計算服務器為計算服務器2,因此,也可將用戶A的交易數(shù)據(jù)路由到計算服務器2中。
繼續(xù)假設用戶A使用卡號123的信用卡于2019年6月1日10:51分在星巴克購買了一杯咖啡,則原始交易信息為“用戶:A,卡號:123,商戶:星巴克,金額:25元,購買渠道:POS機刷卡,日期:2019年6月1日”。
過濾規(guī)則Z包括“商戶”“金額”“日期”“卡號”,交易數(shù)據(jù)在使用過濾規(guī)則Z后,得到的交易數(shù)據(jù)為“卡號:123,商戶:星巴克,金額:25元,日期:2019年6月1日”。
基于用戶A的交易數(shù)據(jù),由于字段“123”為關鍵字,因此將關鍵字卡號字段“123”作為輸入?yún)?shù)采用一致性哈希算法進行運算后,得到的計算服務器標識信息為“2”,即用戶A的交易數(shù)據(jù)對應的計算服務器為計算服務器2,因此,也可將用戶A的交易數(shù)據(jù)路由到計算服務器2中。
繼續(xù)假設用戶B使用卡號456的信用卡于2019年6月1日10:52分在東方航空上購買了一張機票,則原始交易信息為“用戶:B,卡號:456,商戶:東方航空,金額:1000元,購買渠道:東方航空APP,日期:2019年6月1日”。
過濾規(guī)則Z包括“商戶”“金額”“日期”“卡號”,交易數(shù)據(jù)在使用過濾規(guī)則Z后,得到的交易數(shù)據(jù)為“卡號:456,商戶:東方航空,金額:1000元,日期:2019年6月1日”。
基于用戶B的交易數(shù)據(jù),由于字段“東方航空”為關鍵字,因此將關鍵字商戶字段“東方航空”作為輸入?yún)?shù)采用一致性哈希算法進行運算后,得到的計算服務器標識信息為“1”,因此,也可將用戶B的交易數(shù)據(jù)路由到計算服務器1中。
至此,路由至計算服務器1根據(jù)統(tǒng)計維度X對交易數(shù)據(jù)做統(tǒng)計處理后的交易數(shù)據(jù),可參見表1所示。
在具體實施時,計算服務器1可將基于統(tǒng)計維度X對表格二和表格六中的交易數(shù)據(jù)做統(tǒng)計處理后的交易數(shù)據(jù)發(fā)送給匯總服務器,由匯總服務器將接收到的交易數(shù)據(jù)分發(fā)給下面的Redis集群,查詢服務器通過訪問匯總服務器下面的Redis集群查詢到東方航空公司的銷售額信息以及銷售日期。
作為一種實施方式,在通過查詢服務器查詢到東方航空公司的銷售額信息以及銷售日期后,可基于查詢到統(tǒng)計數(shù)據(jù),統(tǒng)計出機票的淡季和旺季。
路由至計算服務器2中的交易數(shù)據(jù)根據(jù)統(tǒng)計維度Y對交易數(shù)據(jù)做統(tǒng)計處理后的交易數(shù)據(jù),可參見表2所示。
在具體實施時,計算服務器2可將基于統(tǒng)計維度Y對交易數(shù)據(jù)做統(tǒng)計處理后的交易數(shù)據(jù)發(fā)送給匯總服務器,由匯總服務器將接收到的交易數(shù)據(jù)分發(fā)給下面的Redis集群,查詢服務器通過訪問匯總服務器下面的Redis集群查詢到卡號123的消費信息,該消費信息中包括卡號123經(jīng)常光顧的商家信息以及卡號123的消費能力。
根據(jù)以上內容可以看出,由于在得到第一交易數(shù)據(jù)后,可借助關鍵字確定第一交易數(shù)據(jù)所對應的計算服務器,因此關鍵字相同的第一交易數(shù)據(jù)將會發(fā)送至同一計算服務器,而計算服務器可根據(jù)預先設定的統(tǒng)計維度在對第一交易數(shù)據(jù)進行統(tǒng)計處理后得到第二交易數(shù)據(jù),并將第二交易數(shù)據(jù)發(fā)送給查詢服務器使用,因此,可通過增加計算服務器的數(shù)量的方式,水平擴展計算統(tǒng)計的能力,從而提高將數(shù)據(jù)寫入數(shù)據(jù)庫的速度,進而提升數(shù)據(jù)的查詢效率。
2.4 ?數(shù)據(jù)統(tǒng)計
基于相同的技術構思,本案例提供一種數(shù)據(jù)統(tǒng)計裝置,如圖1所示。
該裝置可包括:過濾單元501,用于根據(jù)預先設定的過濾規(guī)則,對原始交易數(shù)據(jù)進行過濾處理,得到第一交易數(shù)據(jù),所述過濾規(guī)則包括所述原始交易數(shù)據(jù)的至少一個字段信息;確定單元502,用于根據(jù)所述第一交易數(shù)據(jù)中的關鍵字信息,確定所述第一交易數(shù)據(jù)所對應的計算服務器;發(fā)送單元503,用于將所述第一交易數(shù)據(jù)發(fā)送至所述計算服務器,以使所述計算服務器將根據(jù)預先設定的統(tǒng)計維度對所述第一交易數(shù)據(jù)進行統(tǒng)計得到的第二交易數(shù)據(jù)發(fā)送給查詢服務器使用。所述過濾規(guī)則是由各計算服務器的統(tǒng)計維度確定的。
確定單元502,具體用于:將所述第一交易數(shù)據(jù)中的關鍵字信息作為一致性哈希算法的輸入?yún)?shù)進行運算后,得到所述第一交易數(shù)據(jù)所對應的計算服務器的標識信息;根據(jù)得到的所述標識信息確定所述第一交易數(shù)據(jù)所對應的計算服務器;其中,所述一致性哈希算法的閉合環(huán)中包括至少一個計算服服務器的標識信息。
用于通過心跳機制對所述計算服務器進行檢測,在檢測到計算服務器發(fā)生故障時,將發(fā)生故障的計算服務器的標識信息從所述一致性哈希算法的閉合環(huán)中刪除。此外,還定期接收所述計算服務器的存活消息;若在預設的時間段內,未接收到所述計算服務器的存活消息,則判定所述計算服務器發(fā)生故障。
從以上內容可以看出,由于在得到第一交易數(shù)據(jù)后,可借助關鍵字確定第一交易數(shù)據(jù)所對應的計算服務器,因此關鍵字相同的第一交易數(shù)據(jù)將會發(fā)送至同一計算服務器,而計算服務器可根據(jù)預先設定的統(tǒng)計維度將對第一交易數(shù)據(jù)進行統(tǒng)計處理后得到第二交易數(shù)據(jù),并將第二交易數(shù)據(jù)發(fā)送給查詢服務器使用,因此,可通過增加計算服務器的數(shù)量的方式水平擴展計算統(tǒng)計的能力,從而提高將數(shù)據(jù)寫入數(shù)據(jù)庫的速度,進而提升數(shù)據(jù)的查詢效率。
3 ?結 ?論
本案例提供了一些思路和方法,或者為研究計算機程序產(chǎn)品提供靈感。因此,本案例可采用完全硬件實施例、完全軟件實施例,或者結合軟件和硬件方面的實施例的形式。而且,可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(包括但不限于磁盤存儲器、CD-ROM、光學存儲器等)上實施的計算機程序產(chǎn)品的形式。
參考文獻:
[1] 陸承濤.存儲系統(tǒng)性能管理問題的研究 [D].武漢:華中科技大學,2010.
[2] 羅東健.大規(guī)模存儲系統(tǒng)高可靠性關鍵技術研究 [D].武漢:華中科技大學,2011.
作者簡介:王穎卓(1978.05-),男,漢族,江西贛州人,架構師,碩士,研究方向:大數(shù)據(jù)開發(fā)。