本發(fā)明涉及數(shù)據(jù)處理領域,特別是涉及一種計費數(shù)據(jù)的處理方法、裝置及服務器系統(tǒng)。
背景技術:
隨著手機游戲的發(fā)展,越來越多的單機游戲出現(xiàn)在公眾視野中。單機游戲的盈利一般通過運營商短信代扣執(zhí)行,數(shù)據(jù)量大,關系繁雜且沒有規(guī)律性,因此,較難對這些數(shù)據(jù)進行處理。
單機游戲計費產(chǎn)生的巨大數(shù)據(jù)量包含了用戶行為數(shù)據(jù),用戶買點數(shù)據(jù),運營商支付回調(diào)數(shù)據(jù)等等,少則一天單點幾十萬的請求數(shù)據(jù),多則上百萬的獨立數(shù)據(jù)。目前單機游戲更偏向休閑模式,由一款單機游戲產(chǎn)生的數(shù)據(jù)變得更為不規(guī)律,且隨時保持高峰值。
因此,數(shù)據(jù)量大且數(shù)據(jù)產(chǎn)生時間集中對傳統(tǒng)的數(shù)據(jù)庫服務器增加了處理壓力。常規(guī)的技術在面對持續(xù)高峰值的數(shù)據(jù)回傳時顯得性能不足,無法及時進入數(shù)據(jù)庫,并且這些數(shù)據(jù)并沒有一些優(yōu)化的關系,使得數(shù)據(jù)進入數(shù)據(jù)庫后的查詢也成為難題。
技術實現(xiàn)要素:
基于此,有必要針對目前計費數(shù)據(jù)無法及時存入數(shù)據(jù)庫且存入數(shù)據(jù)庫后不方便查詢的技術問題,提供一種計費數(shù)據(jù)的處理方法、裝置及服務器系統(tǒng)。
一種計費數(shù)據(jù)的處理方法,所述方法包括:
接收客戶端以http協(xié)議發(fā)送計費數(shù)據(jù)的發(fā)送請求;
從線程池中分配空閑線程接收所述計費數(shù)據(jù),其中,單一的空閑線程只用于接收單次http協(xié)議傳輸?shù)挠嬞M數(shù)據(jù);
將接收的所述計費數(shù)據(jù)進行緩存,并對緩存的所述計費數(shù)據(jù)進行優(yōu)化;
為優(yōu)化后的所述計費數(shù)據(jù)建立關聯(lián)的索引關系,并將關聯(lián)的所述計費數(shù)據(jù)存入數(shù)據(jù)庫。
在其中一個實施例中,所述從線程池中分配空間線程接收所述計費數(shù)據(jù)包括:
檢測當前線程池中是否有空閑線程;
若是,分配單一的空閑線程接收客戶端以單次http協(xié)議傳輸?shù)挠嬞M數(shù)據(jù);
檢測所述計費數(shù)據(jù)是否傳輸結束;
若是,釋放所述空閑線程至所述線程池。
在其中一個實施例中,以后進先出的原則從所述線程池分配所述單一的空閑線程。
在其中一個實施例中,所述將接收的所述計費數(shù)據(jù)進行緩存,并對緩存的所述計費數(shù)據(jù)進行優(yōu)化包括:
將接收的所述計費數(shù)據(jù)寫入緩存池;
對寫入緩存池中的計費數(shù)據(jù)進行數(shù)據(jù)去重和無用數(shù)據(jù)剔除的優(yōu)化處理。
在其中一個實施例中,所述為優(yōu)化后的所述計費數(shù)據(jù)建立關聯(lián)的索引關系包括:
提取出優(yōu)化后的所述計費數(shù)據(jù)的特定識別參數(shù);
根據(jù)所述數(shù)據(jù)庫存儲數(shù)據(jù)的方式,通過所述特定識別參數(shù)為優(yōu)化后的所述計費數(shù)據(jù)建立對應的索引關系。
在其中一個實施例中,所述方法還包括:
檢測是否接收到對所述數(shù)據(jù)庫中存儲的計費數(shù)據(jù)的查詢指令;
若是,則根據(jù)所述查詢指令在所述索引關系中搜索對應的索引項;
根據(jù)所述索引項讀取對應的計費數(shù)據(jù)。
一種計費數(shù)據(jù)的處理裝置,所述裝置包括:
請求接收模塊,用于接收客戶端以http協(xié)議發(fā)送計費數(shù)據(jù)的發(fā)送請求;
分配模塊,用于從線程池中分配空閑線程接收所述計費數(shù)據(jù),其中,單一的空閑線程只用于接收單次http協(xié)議傳輸?shù)挠嬞M數(shù)據(jù);
緩存模塊,用于將接收的所述計費數(shù)據(jù)進行緩存,并對緩存的所述計費數(shù)據(jù)進行優(yōu)化;
關聯(lián)模塊,用于為優(yōu)化后的所述計費數(shù)據(jù)建立關聯(lián)的索引關系,并將關聯(lián)的所述計費數(shù)據(jù)存入數(shù)據(jù)庫。
在其中一個實施例中,所述分配模塊包括:
第一檢測模塊,用于檢測當前線程池中是否有空閑線程;
線程分配模塊,用于在所述第一檢測模塊檢測到當前線程池中有空閑線程時,分配單一的空閑線程接收客戶端以單次http協(xié)議傳輸?shù)挠嬞M數(shù)據(jù);
第二檢測模塊,用于檢測所述計費數(shù)據(jù)是否傳輸結束;
釋放模塊,用于在所述第二檢測模塊檢測到所述計費數(shù)據(jù)傳輸結束時,釋放所述空閑線程至所述線程池。
在其中一個實施例中,所述緩存模塊包括:
寫入模塊,用于將接收的所述計費數(shù)據(jù)寫入緩存池;
優(yōu)化模塊,用于對寫入緩存池中的計費數(shù)據(jù)進行數(shù)據(jù)去重和無用數(shù)據(jù)剔除的優(yōu)化處理。
以上所述計費數(shù)據(jù)的處理方法及裝置通過線程池分配多個單一的空閑線程分別對應接收單次http協(xié)議傳輸?shù)挠嬞M數(shù)據(jù),實現(xiàn)多個線程同時接收數(shù)據(jù),提升了接收速度,也可以后續(xù)使數(shù)據(jù)更有效地存入數(shù)據(jù)庫;由于單一的空閑線程只接收http協(xié)議傳輸?shù)挠嬞M數(shù)據(jù),因此,為優(yōu)化后的數(shù)據(jù)建立索引關系存入數(shù)據(jù)庫后,根據(jù)索引關系可以快速地搜索到需要查詢的數(shù)據(jù)。
一種服務器系統(tǒng),所述服務器系統(tǒng)包括處理器、存儲器、數(shù)據(jù)庫,所述服務器系統(tǒng)還包括由所述處理器控制的線程池和緩存池,所述存儲器中存儲有執(zhí)行程序,所述處理器檢測到所述服務器系統(tǒng)接收到客戶端以http協(xié)議發(fā)送計費數(shù)據(jù)的發(fā)送請求時,從所述存儲器讀取并運行所述執(zhí)行程序控制所述線程池和緩存池實現(xiàn)以上所述的方法向所述數(shù)據(jù)庫中存入數(shù)據(jù)。
以上所述服務器系統(tǒng)在向數(shù)據(jù)庫存入計費數(shù)據(jù)時,處理器可以通過運行執(zhí)行程序控制線程池分配多個單一的空閑線程分別對應接收單次http協(xié)議傳輸?shù)挠嬞M數(shù)據(jù),實現(xiàn)多個線程同時接收數(shù)據(jù),提升接收速度,后續(xù)使數(shù)據(jù)更有效地存入數(shù)據(jù)庫;處理器還可以將數(shù)據(jù)存入緩存池進行優(yōu)化處理,并為優(yōu)化后的數(shù)據(jù)建立索引關系存入數(shù)據(jù)庫,使查詢數(shù)據(jù)時可以根據(jù)索引關系快速地搜索到需要查詢的數(shù)據(jù)。
附圖說明
圖1為一實施例計費數(shù)據(jù)的處理方法的流程圖;
圖2為一實施例計算數(shù)據(jù)的處理裝置的結構圖。
具體實施方式
為了使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,以下結合附圖及實施例,對本發(fā)明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
如圖1所示,一實施例的計費數(shù)據(jù)的處理方法包括步驟s120至步驟s180。
步驟s120,接收客戶端以http協(xié)議發(fā)送計費數(shù)據(jù)的發(fā)送請求。
單擊游戲可以在手機、電腦等電子設備中操作。用戶在操作單擊游戲中產(chǎn)生的計費數(shù)據(jù)通常數(shù)據(jù)量巨大,例如,當下比較流行的消消樂游戲,注冊玩家達到1億人次。在操作單擊游戲過程中,會同時產(chǎn)生巨大的計費數(shù)據(jù)。計費數(shù)據(jù)一般以http協(xié)議發(fā)送,當計費數(shù)據(jù)發(fā)生時,服務器即會接收到由客戶端以http協(xié)議發(fā)送計費數(shù)據(jù)的發(fā)送請求。
步驟s140,從線程池中分配空閑線程接收計費數(shù)據(jù),其中,單一的空閑線程只用于接收單次http協(xié)議傳輸?shù)挠嬞M數(shù)據(jù)。
其中,步驟s140包括步驟s141至步驟s144。
步驟s141,檢測當前線程池中是否有空閑線程。
本實施例中,服務器中設置有線程池。當服務器接收到發(fā)送請求時,檢測當前線程池中是否有空閑線程。
步驟s142,若是,分配單一的空閑線程接收客戶端以單次http協(xié)議傳輸?shù)挠嬞M數(shù)據(jù)。
如果有空閑線程,則分配單一的空閑線程接收單次http協(xié)議傳輸?shù)挠嬞M數(shù)據(jù)。本實施例以后進先出的規(guī)則分配單一的空閑線程,從而保證線程的均衡利用。
步驟s143,檢測計費數(shù)據(jù)是否傳輸結束。
單次http協(xié)議傳輸計費數(shù)據(jù)時,當檢測到有數(shù)據(jù)傳輸?shù)慕Y束標志時,或客戶端與服務器之間的連接斷開時,則表示傳輸結束。
步驟s144,若是,釋放空閑線程至線程池。
當數(shù)據(jù)傳輸結束,則釋放對應的空閑線程至線程池。釋放的空閑線程會依次進入線程池,直到下次根據(jù)后進先出的規(guī)則被分配。
步驟s160,將接收的計費數(shù)據(jù)進行緩存,并對緩存的計費數(shù)據(jù)進行優(yōu)化。
具體的,步驟s160包括步驟s161和步驟s162。
步驟s161,將接收的計費數(shù)據(jù)寫入緩存池。
本實施例中,服務器還設置有緩存池,緩存池可以是從內(nèi)存中開辟的部分存儲空間,也可以是單獨設置的緩存空間。接收的計費數(shù)據(jù)會首先被寫入至緩存池。
步驟s162,對寫入緩存池中的計費數(shù)據(jù)進行數(shù)據(jù)去重和無用數(shù)據(jù)剔除的優(yōu)化處理。
對計費數(shù)據(jù)進行重復性檢測,可以篩選出重復的數(shù)據(jù)。計費數(shù)據(jù)中部分數(shù)據(jù)可能并沒有用途,可以通過相應的算法檢測計費數(shù)據(jù)的有用性,從而篩選出無用的數(shù)據(jù)。如果將重復和無用的數(shù)據(jù)存入數(shù)據(jù)庫,則會增加數(shù)據(jù)庫的存儲負擔,降低利用率。因此,可以將重復和無用的數(shù)據(jù)刪除。
步驟s180,為優(yōu)化后的計費數(shù)據(jù)建立關聯(lián)的索引關系,并將關聯(lián)的計費數(shù)據(jù)存入數(shù)據(jù)庫。
具體的,步驟s180包括步驟s181和步驟s182。
步驟s181,提取出優(yōu)化后的計費數(shù)據(jù)的特定識別參數(shù)。
傳輸?shù)挠嬞M數(shù)據(jù)均會包含唯一的特定識別參數(shù),該識別參數(shù)可以是數(shù)字序列或隨機識別碼等,其代表了對應的計費數(shù)據(jù)。
步驟s182,根據(jù)數(shù)據(jù)庫存儲數(shù)據(jù)的方式,通過特定識別參數(shù)為優(yōu)化后的計費數(shù)據(jù)建立對應的索引關系。
本實施例中,數(shù)據(jù)庫優(yōu)選為關系型數(shù)據(jù)庫。關系型數(shù)據(jù)庫具有多種存儲數(shù)據(jù)的方式。根據(jù)數(shù)據(jù)庫存儲數(shù)據(jù)的方式,可以通過特定識別參數(shù)為優(yōu)化后的計費數(shù)據(jù)建立對應的索引關系。索引關系可以通過表格的方式存儲在數(shù)據(jù)庫或硬盤等存儲介質(zhì)中。
以上所述計費數(shù)據(jù)的處理方法通過線程池分配多個單一的空閑線程分別對應接收單次http協(xié)議傳輸?shù)挠嬞M數(shù)據(jù),實現(xiàn)多個線程同時接收數(shù)據(jù),提升了接收速度,也可以后續(xù)使數(shù)據(jù)更有效地存入數(shù)據(jù)庫;由于單一的空閑線程只接收http協(xié)議傳輸?shù)挠嬞M數(shù)據(jù),因此,為優(yōu)化后的數(shù)據(jù)建立索引關系存入數(shù)據(jù)庫后,根據(jù)索引關系可以快速地搜索到需要查詢的數(shù)據(jù)。
本實施例中,計費數(shù)據(jù)的處理方法還包括步驟s191至步驟s193。
步驟s191,檢測是否接收到對數(shù)據(jù)庫中存儲的計費數(shù)據(jù)的查詢指令。
用戶在操作單擊游戲的過程中,如果查詢自己的費用情況,會由客戶端向服務器發(fā)送對應的查詢指令。查詢指令通常包括了用戶注冊的名稱,費用發(fā)生的日期,費用發(fā)生的金額,費用發(fā)生的詳情(如購買單擊游戲中的某個道具等)等內(nèi)容。服務器會及時檢測是否接收到客戶端發(fā)送的查詢指令。
步驟s192,若是,則根據(jù)查詢指令在索引關系中搜索對應的索引項。
當服務器接收到查詢指令后,會將索引關系從數(shù)據(jù)庫或硬盤等存儲介質(zhì)中讀取至內(nèi)存中。進一步,根據(jù)查詢指令可以在索引關系中搜索對流的索引項。索引項為特定識別參數(shù)。
步驟s193,根據(jù)索引項讀取對應的計費數(shù)據(jù)。
由索引項可以相應的從數(shù)據(jù)庫中讀取對應的計費數(shù)據(jù)。
如圖2所示,本實施例還提供了一種計費數(shù)據(jù)的處理裝置,包括請求接收模塊120、分配模塊140、緩存模塊160和關聯(lián)模塊180。
請求接收模塊120,用于接收客戶端以http協(xié)議發(fā)送計費數(shù)據(jù)的發(fā)送請求。
單擊游戲可以在手機、電腦等電子設備中操作。用戶在操作單擊游戲中產(chǎn)生的計費數(shù)據(jù)通常數(shù)據(jù)量巨大,例如,當下比較流行的消消樂游戲,注冊玩家達到1億人次。在操作單擊游戲過程中,會同時產(chǎn)生巨大的計費數(shù)據(jù)。計費數(shù)據(jù)一般以http協(xié)議發(fā)送,當計費數(shù)據(jù)發(fā)生時,服務器即會接收到由客戶端以http協(xié)議發(fā)送計費數(shù)據(jù)的發(fā)送請求。
分配模塊140,用于從線程池中分配空閑線程接收計費數(shù)據(jù),其中,單一的空閑線程只用于接收單次http協(xié)議傳輸?shù)挠嬞M數(shù)據(jù)。
其中,分配模塊140包括第一檢測模塊141、線程分配模塊142、第二檢測模塊143和釋放模塊144。
第一檢測模塊141,用于檢測當前線程池中是否有空閑線程。
本實施例中,服務器中設置有線程池。當服務器接收到發(fā)送請求時,檢測當前線程池中是否有空閑線程。
線程分配模塊142,用于在第一檢測模塊檢測到當前線程池中有空閑線程時,分配單一的空閑線程接收客戶端以單次http協(xié)議傳輸?shù)挠嬞M數(shù)據(jù)。
如果有空閑線程,則分配單一的空閑線程接收單次http協(xié)議傳輸?shù)挠嬞M數(shù)據(jù)。本實施例以后進先出的規(guī)則分配單一的空閑線程,從而保證線程的均衡利用。
第二檢測模塊143,用于檢測計費數(shù)據(jù)是否傳輸結束。
單次http協(xié)議傳輸計費數(shù)據(jù)時,當檢測到有數(shù)據(jù)傳輸?shù)慕Y束標志時,或客戶端與服務器之間的連接斷開時,則表示傳輸結束。
釋放模塊144,用于在第二檢測模塊檢測到計費數(shù)據(jù)傳輸結束時,釋放空閑線程至線程池。
當數(shù)據(jù)傳輸結束,則釋放對應的空閑線程至線程池。釋放的空閑線程會依次進入線程池,直到下次根據(jù)后進先出的規(guī)則被分配。
緩存模塊160,用于將接收的計費數(shù)據(jù)進行緩存,并對緩存的計費數(shù)據(jù)進行優(yōu)化。
其中,緩存模塊160包括寫入模塊161和優(yōu)化模塊162。
寫入模塊161,用于將接收的計費數(shù)據(jù)寫入緩存池。
本實施例中,服務器還設置有緩存池,緩存池可以是從內(nèi)存中開辟的部分存儲空間,也可以是單獨設置的緩存空間。接收的計費數(shù)據(jù)會首先被寫入至緩存池。
優(yōu)化模塊162,用于對寫入緩存池中的計費數(shù)據(jù)進行數(shù)據(jù)去重和無用數(shù)據(jù)剔除的優(yōu)化處理。
對計費數(shù)據(jù)進行重復性檢測,可以篩選出重復的數(shù)據(jù)。計費數(shù)據(jù)中部分數(shù)據(jù)可能并沒有用途,可以通過相應的算法檢測計費數(shù)據(jù)的有用性,從而篩選出無用的數(shù)據(jù)。如果將重復和無用的數(shù)據(jù)存入數(shù)據(jù)庫,則會增加數(shù)據(jù)庫的存儲負擔,降低利用率。因此,可以將重復和無用的數(shù)據(jù)刪除。
關聯(lián)模塊180,用于為優(yōu)化后的計費數(shù)據(jù)建立關聯(lián)的索引關系,并將關聯(lián)的計費數(shù)據(jù)存入數(shù)據(jù)庫。
關聯(lián)模塊180首先提取出優(yōu)化后的計費數(shù)據(jù)的特定識別參數(shù)。傳輸?shù)挠嬞M數(shù)據(jù)均會包含唯一的特定識別參數(shù),該識別參數(shù)可以是數(shù)字序列或隨機識別碼等,其代表了對應的計費數(shù)據(jù)。之后,關聯(lián)模塊180根據(jù)數(shù)據(jù)庫存儲數(shù)據(jù)的方式,通過特定識別參數(shù)為優(yōu)化后的計費數(shù)據(jù)建立對應的索引關系。
本實施例中,數(shù)據(jù)庫優(yōu)選為關系型數(shù)據(jù)庫。關系型數(shù)據(jù)庫具有多種存儲數(shù)據(jù)的方式。根據(jù)數(shù)據(jù)庫存儲數(shù)據(jù)的方式,可以通過特定識別參數(shù)為優(yōu)化后的計費數(shù)據(jù)建立對應的索引關系。索引關系可以通過表格的方式存儲在數(shù)據(jù)庫或硬盤等存儲介質(zhì)中。
以上所述計費數(shù)據(jù)的處理裝置通過線程池分配多個單一的空閑線程分別對應接收單次http協(xié)議傳輸?shù)挠嬞M數(shù)據(jù),實現(xiàn)多個線程同時接收數(shù)據(jù),提升了接收速度,也可以后續(xù)使數(shù)據(jù)更有效地存入數(shù)據(jù)庫;由于單一的空閑線程只接收http協(xié)議傳輸?shù)挠嬞M數(shù)據(jù),因此,為優(yōu)化后的數(shù)據(jù)建立索引關系存入數(shù)據(jù)庫后,根據(jù)索引關系可以快速地搜索到需要查詢的數(shù)據(jù)。
用戶在操作單擊游戲的過程中,如果查詢自己的費用情況,會由客戶端向服務器發(fā)送對應的查詢指令。查詢指令通常包括了用戶注冊的名稱,費用發(fā)生的日期,費用發(fā)生的金額,費用發(fā)生的詳情(如購買單擊游戲中的某個道具等)等內(nèi)容。服務器會及時檢測是否接收到客戶端發(fā)送的查詢指令。當服務器接收到查詢指令后,會將索引關系從數(shù)據(jù)庫或硬盤等存儲介質(zhì)中讀取至內(nèi)存中。進一步,根據(jù)查詢指令可以在索引關系中搜索對流的索引項。索引項為特定識別參數(shù)。由索引項可以相應的從數(shù)據(jù)庫中讀取對應的計費數(shù)據(jù)。
本實施例還提供了一種服務器系統(tǒng),服務器系統(tǒng)包括處理器、存儲器、數(shù)據(jù)庫,服務器系統(tǒng)還包括由處理器控制的線程池和緩存池,存儲器中存儲有執(zhí)行程序,處理器檢測到服務器系統(tǒng)接收到客戶端以http協(xié)議發(fā)送計費數(shù)據(jù)的發(fā)送請求時,從存儲器讀取并運行執(zhí)行程序控制線程池和緩存池實現(xiàn)以上所述的方法向數(shù)據(jù)庫中存入數(shù)據(jù)。具體的,處理器檢測到服務器系統(tǒng)接收到客戶端以http協(xié)議發(fā)送計費數(shù)據(jù)的發(fā)送請求時,則控制線程池分配空閑線程接收計費數(shù)據(jù),在分配空閑線程時,單一的空閑線程只用于接收單次http協(xié)議傳輸?shù)挠嬞M數(shù)據(jù)。之后,處理器控制緩存池對計費數(shù)據(jù)進行緩存,并對緩存的計費數(shù)據(jù)進行優(yōu)化。之后,處理器為優(yōu)化后的計費數(shù)據(jù)建立關聯(lián)的索引關系,并將關聯(lián)的計費數(shù)據(jù)存入數(shù)據(jù)庫。
以上所述服務器系統(tǒng)在向數(shù)據(jù)庫存入計費數(shù)據(jù)時,處理器可以通過運行執(zhí)行程序控制線程池分配多個單一的空閑線程分別對應接收單次http協(xié)議傳輸?shù)挠嬞M數(shù)據(jù),實現(xiàn)多個線程同時接收數(shù)據(jù),提升接收速度,后續(xù)使數(shù)據(jù)更有效地存入數(shù)據(jù)庫;處理器還可以將數(shù)據(jù)存入緩存池進行優(yōu)化處理,并為優(yōu)化后的數(shù)據(jù)建立索引關系存入數(shù)據(jù)庫,使查詢數(shù)據(jù)時可以根據(jù)索引關系快速地搜索到需要查詢的數(shù)據(jù)。
以上所述實施例的各技術特征可以進行任意的組合,為使描述簡潔,未對上述實施例中的各個技術特征所有可能的組合都進行描述,然而,只要這些技術特征的組合不存在矛盾,都應當認為是本說明書記載的范圍。
以上所述實施例僅表達了本發(fā)明的幾種實施方式,其描述較為具體和詳細,但并不能因此而理解為對發(fā)明專利范圍的限制。應當指出的是,對于本領域的普通技術人員來說,在不脫離本發(fā)明構思的前提下,還可以做出若干變形和改進,這些都屬于本發(fā)明的保護范圍。因此,本發(fā)明專利的保護范圍應以所附權利要求為準。