客戶端數(shù)據(jù)處理方法及裝置的制造方法
【專利摘要】本發(fā)明公開了一種客戶端數(shù)據(jù)處理方法,所述客戶端數(shù)據(jù)處理方法包括以下步驟:所述IO層在接收到各個客戶端發(fā)送的數(shù)據(jù)時,將接收到的數(shù)據(jù)存儲于預(yù)設(shè)的緩沖區(qū)中;所述分發(fā)層從所述預(yù)設(shè)的緩沖區(qū)中提取存儲的數(shù)據(jù),并根據(jù)提取到的數(shù)據(jù)的類別將提取到的所述數(shù)據(jù)壓入對應(yīng)的管道中;所述處理層對各個管道中的數(shù)據(jù)進行相應(yīng)的處理。本發(fā)明還公開了一種客戶端數(shù)據(jù)處理裝置。本發(fā)明解決了服務(wù)器在處理客戶端的請求時,由于讀取請求及處理請求在同一個線程中進行,可能會導(dǎo)致代碼邏輯上的混亂及數(shù)據(jù)處理效率降低的問題。
【專利說明】
客戶端數(shù)據(jù)處理方法及裝置
技術(shù)領(lǐng)域
[0001 ]本發(fā)明涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,尤其涉及一種客戶端數(shù)據(jù)處理方法及裝置。
【背景技術(shù)】
[0002]大部分服務(wù)器是基于順序迭代處理客戶端請求,也就是等待客戶端請求,再讀取請求,處理請求,回復(fù)響應(yīng)。但是在處理請求時,需要大量的Cpu時間,會造成對其它客戶端響應(yīng)的不及時,這就需要一種解決方式,常見的解決方式就是并發(fā)。具體來說,就是為每個客戶端分配一個線程來處理,當(dāng)有新的客戶端請求進來時,為它創(chuàng)建一個線程,并需要為這個線程分配一個socket(通常也稱作〃套接字〃)及port(端口)來進行1操作。然而,采用這種方式來進行1操作時,由于讀取請求及處理請求在同一個線程中進行,當(dāng)多個客戶端同時進行請求時,可能會引起代碼邏輯上的混亂,進而導(dǎo)致數(shù)據(jù)處理效率降低。
[0003]上述內(nèi)容僅用于輔助理解本發(fā)明的技術(shù)方案,并不代表承認(rèn)上述內(nèi)容是現(xiàn)有技術(shù)。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的主要目的在于提供一種客戶端數(shù)據(jù)處理方法及裝置,旨在解決服務(wù)器在處理客戶端的請求時,由于讀取請求及處理請求在同一個線程中進行,可能會導(dǎo)致代碼邏輯上的混亂及數(shù)據(jù)處理效率降低的問題。
[0005]為實現(xiàn)上述目的,本發(fā)明提供的一種客戶端數(shù)據(jù)處理方法,應(yīng)用于服務(wù)器中,所述服務(wù)器包括1層、分發(fā)層及處理層,所述客戶端數(shù)據(jù)處理方法包括以下步驟:
[0006]所述1層在接收到各個客戶端發(fā)送的數(shù)據(jù)時,將接收到的數(shù)據(jù)存儲于預(yù)設(shè)的緩沖區(qū)中;
[0007]所述分發(fā)層從所述預(yù)設(shè)的緩沖區(qū)中提取存儲的數(shù)據(jù),并根據(jù)提取到的數(shù)據(jù)的類別將提取到的所述數(shù)據(jù)壓入對應(yīng)的管道中;
[0008]所述處理層對各個管道中的數(shù)據(jù)進行相應(yīng)的處理。
[0009]可選地,所述1層在接收到各個客戶端發(fā)送的數(shù)據(jù)時,將接收到的數(shù)據(jù)存儲于預(yù)設(shè)的緩沖區(qū)中的步驟包括:
[0010]所述1層在接收到各個客戶端發(fā)送的數(shù)據(jù)時,獲取發(fā)送所述數(shù)據(jù)的客戶端的地址信息;
[0011]所述1層將所述地址信息添加至接收到的所述數(shù)據(jù)的頭部;
[0012]所述1層將包含有頭部信息的所述數(shù)據(jù)存儲于預(yù)設(shè)的緩沖區(qū)。
[0013]可選地,所述分發(fā)層從所述預(yù)設(shè)的緩沖區(qū)中提取存儲的數(shù)據(jù),并根據(jù)提取到的數(shù)據(jù)的類別將提取到的所述數(shù)據(jù)壓入對應(yīng)的管道中的步驟包括:
[0014]所述分發(fā)層從所述預(yù)設(shè)的緩沖區(qū)中提取存儲的數(shù)據(jù),并根據(jù)提取到的數(shù)據(jù)的頭部信息對提取到的所述數(shù)據(jù)進行分類;
[0015]所述分發(fā)層根據(jù)提取到的所述數(shù)據(jù)的類別建立對應(yīng)的管道;
[0016]所述分發(fā)層將提取到的所述數(shù)據(jù)壓入對應(yīng)的管道中。
[0017]可選地,所述分發(fā)層將提取到的所述數(shù)據(jù)壓入對應(yīng)的管道中的步驟之前,還包括:
[0018]所述分發(fā)層將提取到的所述數(shù)據(jù)的頭部信息移除。
[0019]可選地,所述處理層對各個管道中的數(shù)據(jù)進行相應(yīng)的處理的步驟包括:
[0020]所述處理層為各個管道分配一個工作線程,以通過所述工作線程對管道中的數(shù)據(jù)進行相應(yīng)的處理。
[0021]此外,為實現(xiàn)上述目的,本發(fā)明還提供一種客戶端數(shù)據(jù)處理裝置,所述客戶端數(shù)據(jù)處理裝置包括;
[0022]存儲模塊,用于在接收到各個客戶端發(fā)送的數(shù)據(jù)時,將接收到的數(shù)據(jù)存儲于預(yù)設(shè)的緩沖區(qū)中;
[0023]壓入模塊,用于從所述預(yù)設(shè)的緩沖區(qū)中提取存儲的數(shù)據(jù),并根據(jù)提取到的數(shù)據(jù)的類別將提取到的所述數(shù)據(jù)壓入對應(yīng)的管道中;
[0024]處理模塊,用于對各個管道中的數(shù)據(jù)進行相應(yīng)的處理。
[0025]可選地,所述存儲模塊包括:
[0026]獲取單元,用于在接收到各個客戶端發(fā)送的數(shù)據(jù)時,獲取發(fā)送所述數(shù)據(jù)的客戶端的地址信息;
[0027]添加單元,用于將所述地址信息添加至接收到的所述數(shù)據(jù)的頭部;
[0028]存儲單元,用于將包含有頭部信息的所述數(shù)據(jù)存儲于預(yù)設(shè)的緩沖區(qū)。
[0029]可選地,所述壓入模塊包括:
[0030]分類單元,用于從所述預(yù)設(shè)的緩沖區(qū)中提取存儲的數(shù)據(jù),并根據(jù)提取到的數(shù)據(jù)的頭部信息對提取到的所述數(shù)據(jù)進行分類;
[0031]建立單元,用于根據(jù)提取到的所述數(shù)據(jù)的類別建立對應(yīng)的管道;
[0032]壓入單元,用于將提取到的所述數(shù)據(jù)壓入對應(yīng)的管道中。
[0033]可選地,所述壓入模塊還包括:
[0034]移除單元,用于將提取到的所述數(shù)據(jù)的頭部信息移除。
[0035]可選地,所述處理模塊,還用于為各個管道分配一個工作線程,以通過所述工作線程對管道中的數(shù)據(jù)進行相應(yīng)的處理。
[0036]本發(fā)明提出的客戶端數(shù)據(jù)處理方法及裝置,通過所述1層在接收到各個客戶端發(fā)送的數(shù)據(jù)時,將接收到的數(shù)據(jù)存儲于預(yù)設(shè)的緩沖區(qū)中;所述分發(fā)層從所述預(yù)設(shè)的緩沖區(qū)中提取存儲的數(shù)據(jù),并根據(jù)提取到的數(shù)據(jù)的類別將提取到的所述數(shù)據(jù)壓入對應(yīng)的管道中;所述處理層對各個管道中的數(shù)據(jù)進行相應(yīng)的處理。采用多層處理的方式對客戶端的請求進行處理,使得對客戶端請求中的讀取請求及處理請求不再同一層進行處理,避免了當(dāng)接收到多個客戶端的讀取請求的代碼與處理請求的代碼由于在同一層中可能引起的代碼邏輯上的混亂,同時通過多個層對客戶端的數(shù)據(jù)進行處理,提高了對客戶端數(shù)據(jù)處理的效率。
【附圖說明】
[0037]圖1為本發(fā)明客戶端數(shù)據(jù)處理方法的第一實施例的流程示意圖;
[0038]圖2為本發(fā)明圖1中的1層在接收到各個客戶端發(fā)送的數(shù)據(jù)時,將接收到的數(shù)據(jù)存儲于預(yù)設(shè)的緩沖區(qū)中的步驟細(xì)化流程示意圖;
[0039]圖3為圖1中的分發(fā)層從所述預(yù)設(shè)的緩沖區(qū)中提取存儲的數(shù)據(jù),并根據(jù)提取到的數(shù)據(jù)的類別將提取到的所述數(shù)據(jù)壓入對應(yīng)的管道中的步驟細(xì)化流程示意圖;
[0040]圖4為本發(fā)明圖1中的分發(fā)層從所述預(yù)設(shè)的緩沖區(qū)中提取存儲的數(shù)據(jù),并根據(jù)提取到的數(shù)據(jù)的類別將提取到的所述數(shù)據(jù)壓入對應(yīng)的管道中的另一步驟細(xì)化流程示意圖;
[0041]圖5為本發(fā)明客戶端數(shù)據(jù)處理裝置的第一實施例的功能模塊示意圖;
[0042]圖6為本發(fā)明圖5中的存儲模塊的細(xì)化功能模塊示意圖;
[0043]圖7為本發(fā)明圖5中的壓入模塊的細(xì)化功能模塊示意圖;
[0044]圖8為本發(fā)明圖5中的壓入模塊的另一細(xì)化功能模塊示意圖。
[0045]本發(fā)明目的的實現(xiàn)、功能特點及優(yōu)點將結(jié)合實施例,參照附圖做進一步說明。
【具體實施方式】
[0046]應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0047]基于上述問題,本發(fā)明提供一種客戶端數(shù)據(jù)處理方法,應(yīng)用于服務(wù)器中,所述服務(wù)器包括1層、分發(fā)層及處理層。
[0048]參照圖1,圖1為本發(fā)明客戶端數(shù)據(jù)處理方法的第一實施例的流程示意圖。
[0049]在本實施例中,所述客戶端數(shù)據(jù)處理方法包括:
[0050]步驟S10,所述1層在接收到各個客戶端發(fā)送的數(shù)據(jù)時,將接收到的數(shù)據(jù)存儲于預(yù)設(shè)的緩沖區(qū)中;
[0051]本發(fā)明提供的客戶端數(shù)據(jù)處理方法,與現(xiàn)有的技術(shù)方案的區(qū)別在于采用分層處理的方式對客戶端的數(shù)據(jù)進行處理,可以提高對客戶端的數(shù)據(jù)的處理效率。具體的,本發(fā)明中的服務(wù)器邏輯上可以分為三層,分別為1層、分發(fā)層及處理層。所述1層是基于完成端口的,1完成端口是一種機制,通過這個機制,應(yīng)用程序在啟動時會首先創(chuàng)建一個線程池,然后該應(yīng)用程序使用線程池處理異步I/O請求。這些線程被創(chuàng)建的唯一目的就是用于處理I/O請求。對于處理大量并發(fā)異步I/O請求的應(yīng)用程序來說,相比于在I/O請求發(fā)生時創(chuàng)建線程來說,使用完成端口就可以做的更快且更有效率。由于所述1層是基于完成端口的,因此,所述1層在接收到各個客戶端發(fā)送的數(shù)據(jù)時,即接收到各個客戶端的I/O請求時,可以立刻采用該1層中的多個線程讀取客戶端發(fā)送的數(shù)據(jù),每個線程讀取一個客戶端的I/O請求,在接收到客戶端發(fā)送的數(shù)據(jù)后將該接收到的數(shù)據(jù)存儲于預(yù)設(shè)的緩沖區(qū)。所述預(yù)設(shè)的緩沖區(qū)為所述1層的工作線程預(yù)先建立的管道緩沖區(qū)的末尾的存儲區(qū)間。即每次1層在將接收到的數(shù)據(jù)存入管道中時,都是將數(shù)據(jù)存儲于管道緩沖區(qū)中的剩余存儲區(qū)間的最末尾的存儲區(qū)間中。在本實施例中,所述1層只接收各個客戶端發(fā)送的數(shù)據(jù),而不對各個客戶端發(fā)送的數(shù)據(jù)進行處理,即1層中的工作線程只對各個客戶端的I/O請求進行讀取,而不對各個客戶端的請求進行處理。
[0052]步驟S20,所述分發(fā)層從所述預(yù)設(shè)的緩沖區(qū)中提取存儲的數(shù)據(jù),并根據(jù)提取到的數(shù)據(jù)的類別將提取到的所述數(shù)據(jù)壓入對應(yīng)的管道中;
[0053]所述分發(fā)層實時或當(dāng)時查看管道中的預(yù)設(shè)存儲區(qū)中是否存在數(shù)據(jù),若所述管道中的預(yù)設(shè)緩沖區(qū)中存在數(shù)據(jù),則所述分發(fā)層從該管道的預(yù)設(shè)存儲區(qū)中讀取存儲的數(shù)據(jù)。具體的,所述分發(fā)層可以通過該層中的工作線程提取該管道預(yù)設(shè)緩沖區(qū)中的數(shù)據(jù),在提取到數(shù)據(jù)后,確定提取到的數(shù)據(jù)的類別,即該提取到的數(shù)據(jù)是哪個客戶端所發(fā)送的數(shù)據(jù),在確定提取到的數(shù)據(jù)的類別后,將該數(shù)據(jù)壓入對應(yīng)的管道中。所述分發(fā)層可以根據(jù)提取到的數(shù)據(jù)的類別建立管道,同一個類別的數(shù)據(jù)壓入相同的管道中,不同類別的數(shù)據(jù)壓入不同數(shù)據(jù)類別相對應(yīng)的管道中。所述分發(fā)層根據(jù)提取的數(shù)據(jù)每確定一個新的類別時,就新創(chuàng)建一個管道,以供該類別的數(shù)據(jù)能壓入到對應(yīng)的管道中。
[0054]步驟S30,所述處理層對各個管道中的數(shù)據(jù)進行相應(yīng)的處理。
[0055]由于每個管道都對應(yīng)著一個遠(yuǎn)程的客戶端,因此,所述處理層可以對各個客戶端發(fā)送的數(shù)據(jù)進行處理。
[0056]具體地,所述步驟S30包括:所述處理層為各個管道分配一個工作線程,以通過所述工作線程對管道中的數(shù)據(jù)進行相應(yīng)的處理。
[0057]所述處理層為各個管道中分配一個工作線程,通過該工作線程對管道中的數(shù)據(jù)進行讀取,存放,處理,及回應(yīng)等操作。同時,由于各個管道中都分配了一個工作線程,故在對各個管道中的數(shù)據(jù)進行處理操作時的暫時中斷不會影響其他客戶端的數(shù)據(jù)的處理及回應(yīng)。
[0058]本實施例通過所述1層在接收到各個客戶端發(fā)送的數(shù)據(jù)時,將接收到的數(shù)據(jù)存儲于預(yù)設(shè)的緩沖區(qū)中;所述分發(fā)層從所述預(yù)設(shè)的緩沖區(qū)中提取存儲的數(shù)據(jù),并根據(jù)提取到的數(shù)據(jù)的類別將提取到的所述數(shù)據(jù)壓入對應(yīng)的管道中;所述處理層對各個管道中的數(shù)據(jù)進行相應(yīng)的處理。采用多層處理的方式對客戶端的請求進行處理,使得對客戶端請求中的讀取請求及處理請求不再同一層進行處理,避免了當(dāng)接收到多個客戶端的讀取請求的代碼與處理請求的代碼由于在同一層中可能引起的代碼邏輯上的混亂,同時通過多個層對客戶端的數(shù)據(jù)進行處理,提高了對客戶端數(shù)據(jù)處理的效率。
[0059]進一步地,參照圖2,圖2為本發(fā)明客戶端數(shù)據(jù)處理方法的第二實施例的流程示意圖?;谏鲜隹蛻舳藬?shù)據(jù)處理方法的第一實施例,所述步驟SlO包括:
[0060]步驟Sll,所述1層在接收到各個客戶端發(fā)送的數(shù)據(jù)時,獲取發(fā)送所述數(shù)據(jù)的客戶端的地址信息;
[0061]步驟S12,所述1層將所述地址信息添加至接收到的所述數(shù)據(jù)的頭部;
[0062]步驟S13,所述1層將包含有頭部信息的所述數(shù)據(jù)存儲于預(yù)設(shè)的緩沖區(qū)。
[0063]由于所述1層接收到各個客戶端發(fā)送的數(shù)據(jù)中不包含地址信息,即接收到的數(shù)據(jù)中不包含發(fā)送該數(shù)據(jù)的客戶端的地址信息,所述地址信息包括客戶端的本地地址及端口號,例如,本地地址:192.168.1.99,端口號:2400。因此,為了對各個客戶端發(fā)送的數(shù)據(jù)進行分類區(qū)別,需要在接收到各個客戶端發(fā)送的數(shù)據(jù)時,獲取發(fā)送該數(shù)據(jù)的客戶端的地址信息,即獲取發(fā)送該數(shù)據(jù)的客戶端的本地地址及端口號,所述1層可以通過客戶端與服務(wù)器進行通訊創(chuàng)建的套接字中獲取發(fā)送所述數(shù)據(jù)的客戶端的地址信息。所述1層在獲取到發(fā)送所述數(shù)據(jù)的客戶端的地址信息后,將所述地址信息添加至接收到的所述數(shù)據(jù)的頭部,使得接收到的數(shù)據(jù)都包含有數(shù)據(jù)源的地址信息,從而為分發(fā)層對該接收到數(shù)據(jù)進行轉(zhuǎn)發(fā)處理提高了必要的識別信息。1層在將地址信息添加至接收到的數(shù)據(jù)的頭部后,將該包含有頭部的所述數(shù)據(jù)存儲于預(yù)設(shè)的緩沖區(qū)。
[0064]本實施例通過所述1層在接收到各個客戶端發(fā)送的數(shù)據(jù)時,獲取發(fā)送所述數(shù)據(jù)的客戶端的地址信息,并將所述地址信息添加至接收到的所述數(shù)據(jù)的頭部,從而為所述分發(fā)層對該接收到數(shù)據(jù)進行轉(zhuǎn)發(fā)處理提高了必要的識別信息,使得所述分發(fā)層能夠準(zhǔn)確的將各個客戶端發(fā)送的數(shù)據(jù)分發(fā)至各請求處理線程中。
[0065]進一步地,參照圖3,圖3為本發(fā)明客戶端數(shù)據(jù)處理方法的第三實施例的流程示意圖?;谏鲜隹蛻舳藬?shù)據(jù)處理方法的第二實施例,所述步驟S20包括:
[0066]步驟S21,所述分發(fā)層從所述預(yù)設(shè)的緩沖區(qū)中提取存儲的數(shù)據(jù),并根據(jù)提取到的數(shù)據(jù)的頭部信息對提取到的所述數(shù)據(jù)進行分類;
[0067]步驟S22,所述分發(fā)層根據(jù)提取到的所述數(shù)據(jù)的類別建立對應(yīng)的管道;
[0068]步驟S23,所述分發(fā)層將提取到的所述數(shù)據(jù)壓入對應(yīng)的管道中。
[0069]所述分發(fā)層在從所述預(yù)設(shè)的緩沖區(qū)中提取到存儲的數(shù)據(jù)后,對所述提取到的數(shù)據(jù)進行分類。具體的,所述分發(fā)層根據(jù)提取到的數(shù)據(jù)的頭部信息進行分類,由于提取到的數(shù)據(jù)的頭部信息為客戶端的地址信息,故在對各個提取到的數(shù)據(jù)進行分類時,將頭部信息一致的數(shù)據(jù)分為一類,頭部信息不一致的數(shù)據(jù)分為不同的類別。在將提取到的數(shù)據(jù)進行分類后,所述分發(fā)層根據(jù)數(shù)據(jù)的類別建立對應(yīng)的管道,每一類的數(shù)據(jù)建立一個管道,存在多少個類別的數(shù)據(jù)就建立多少個管道,例如提取到的數(shù)據(jù)總共存在8類,則需要建立8個管道。所述分發(fā)層在建立管道時,可以在沒發(fā)現(xiàn)一個新類別的數(shù)據(jù)就建立一個新的管道,若確定該提取的數(shù)據(jù)是已有類別的數(shù)據(jù),則不需要再建立管道。分發(fā)層在建立管道后,即可將各個類別的數(shù)據(jù)分別壓入與其類別相對應(yīng)的管道中。
[0070]本實施例通過為每類數(shù)據(jù)都建立一個對應(yīng)的管道,使得對各個客戶端數(shù)據(jù)的處理更加及時,準(zhǔn)確,不會產(chǎn)生混亂。
[0071]進一步地,參照圖4,圖4為本發(fā)明客戶端數(shù)據(jù)處理方法的第四實施例的流程示意圖?;谏鲜隹蛻舳藬?shù)據(jù)處理方法的第三實施例,所述步驟S23之前,還包括:
[0072]步驟S24,所述分發(fā)層將提取到的所述數(shù)據(jù)的頭部信息移除。
[0073]所述分發(fā)層在根據(jù)提取到的數(shù)據(jù)的類別建立對應(yīng)的管道之后,由于提取到的數(shù)據(jù)的頭部信息為客戶端的地址信息,該信息的作用僅為分發(fā)層根據(jù)該信息確定將提取到的數(shù)據(jù)壓入到哪個管道中,故在確定提取到的數(shù)據(jù)需要壓入的管道后,為了節(jié)省存儲空間,則在將該提取到的數(shù)據(jù)壓入管道之前,可以將該提取到的數(shù)據(jù)的頭部信息移除,以便處理層對該數(shù)據(jù)進行處理。進一步地,所述分發(fā)層將提取到的所述數(shù)據(jù)的頭部信息移除的步驟也可以由所述處理層執(zhí)行,即當(dāng)所述處理層對管道中的數(shù)據(jù)處理之前,首先將待處理數(shù)據(jù)的頭部移除,然后再對該數(shù)據(jù)進行相應(yīng)的處理。
[0074]本實施例通過在將提取到的數(shù)據(jù)壓入對應(yīng)的管道之前,將該數(shù)據(jù)的頭部信息移除,從而節(jié)省存儲空間。
[0075]本發(fā)明進一步提供一種客戶端數(shù)據(jù)處理裝置。
[0076]參照圖5,圖5為本發(fā)明客戶端數(shù)據(jù)處理裝置的第一實施例的功能模塊示意圖。
[0077]在本實施例中,所述客戶端數(shù)據(jù)處理裝置包括:存儲模塊10、壓入模塊20及處理模塊30。
[0078]所述存儲模塊10,,用于在接收到各個客戶端發(fā)送的數(shù)據(jù)時,將接收到的數(shù)據(jù)存儲于預(yù)設(shè)的緩沖區(qū)中;
[0079]本發(fā)明的技術(shù)方案與現(xiàn)有的技術(shù)方案的區(qū)別在于采用分層處理的方式對客戶端的數(shù)據(jù)進行處理,可以提高對客戶端的數(shù)據(jù)的處理效率。具體的,本發(fā)明中的服務(wù)器邏輯上可以分為三層,分別為1層、分發(fā)層及處理層。所述1層是基于完成端口的,1完成端口是一種機制,通過這個機制,應(yīng)用程序在啟動時會首先創(chuàng)建一個線程池,然后該應(yīng)用程序使用線程池處理異步I/O請求。這些線程被創(chuàng)建的唯一目的就是用于處理I/O請求。對于處理大量并發(fā)異步I/o請求的應(yīng)用程序來說,相比于在I/O請求發(fā)生時創(chuàng)建線程來說,使用完成端口就可以做的更快且更有效率。由于所述1層是基于完成端口的,因此,所述1層在接收到各個客戶端發(fā)送的數(shù)據(jù)時,即接收到各個客戶端的I/o請求時,可以立刻采用該1層中的多個線程讀取客戶端發(fā)送的數(shù)據(jù),每個線程讀取一個客戶端的I/o請求,在接收到客戶端發(fā)送的數(shù)據(jù)后將該接收到的數(shù)據(jù)存儲于預(yù)設(shè)的緩沖區(qū)。所述預(yù)設(shè)的緩沖區(qū)為所述1層的工作線程預(yù)先建立的管道緩沖區(qū)的末尾的存儲區(qū)間。即每次1層在將接收到的數(shù)據(jù)存入管道中時,都是將數(shù)據(jù)存儲于管道緩沖區(qū)中的剩余存儲區(qū)間的最末尾的存儲區(qū)間中。在本實施例中,所述1層只接收各個客戶端發(fā)送的數(shù)據(jù),而不對各個客戶端發(fā)送的數(shù)據(jù)進行處理,SP1層中的工作線程只對各個客戶端的I/o請求進行讀取,而不對各個客戶端的請求進行處理。
[0080]所述壓入模塊20,用于從所述預(yù)設(shè)的緩沖區(qū)中提取存儲的數(shù)據(jù),并根據(jù)提取到的數(shù)據(jù)的類別將提取到的所述數(shù)據(jù)壓入對應(yīng)的管道中;
[0081]所述分發(fā)層實時或當(dāng)時查看管道中的預(yù)設(shè)存儲區(qū)中是否存在數(shù)據(jù),若所述管道中的預(yù)設(shè)緩沖區(qū)中存在數(shù)據(jù),則所述分發(fā)層從該管道的預(yù)設(shè)存儲區(qū)中讀取存儲的數(shù)據(jù)。具體的,所述分發(fā)層可以通過該層中的工作線程提取該管道預(yù)設(shè)緩沖區(qū)中的數(shù)據(jù),在提取到數(shù)據(jù)后,確定提取到的數(shù)據(jù)的類別,即該提取到的數(shù)據(jù)是哪個客戶端所發(fā)送的數(shù)據(jù),在確定提取到的數(shù)據(jù)的類別后,將該數(shù)據(jù)壓入對應(yīng)的管道中。所述分發(fā)層可以根據(jù)提取到的數(shù)據(jù)的類別建立管道,同一個類別的數(shù)據(jù)壓入相同的管道中,不同類別的數(shù)據(jù)壓入不同數(shù)據(jù)類別相對應(yīng)的管道中。所述分發(fā)層根據(jù)提取的數(shù)據(jù)每確定一個新的類別時,就新創(chuàng)建一個管道,以供該類別的數(shù)據(jù)能壓入到對應(yīng)的管道中。
[0082]所述處理模塊30,用于對各個管道中的數(shù)據(jù)進行相應(yīng)的處理。
[0083]由于每個管道都對應(yīng)著一個遠(yuǎn)程的客戶端,因此,所述處理層可以對各個客戶端發(fā)送的數(shù)據(jù)進行處理。
[0084]具體地,所述處理模塊30,還用于為各個管道分配一個工作線程,以通過所述工作線程對管道中的數(shù)據(jù)進行相應(yīng)的處理。
[0085]所述處理層為各個管道中分配一個工作線程,通過該工作線程對管道中的數(shù)據(jù)進行讀取,存放,處理,及回應(yīng)等操作。同時,由于各個管道中都分配了一個工作線程,故在對各個管道中的數(shù)據(jù)進行處理操作時的暫時中斷不會影響其他客戶端的數(shù)據(jù)的處理及回應(yīng)。
[0086]本實施例通過所述1層在接收到各個客戶端發(fā)送的數(shù)據(jù)時,將接收到的數(shù)據(jù)存儲于預(yù)設(shè)的緩沖區(qū)中;所述分發(fā)層從所述預(yù)設(shè)的緩沖區(qū)中提取存儲的數(shù)據(jù),并根據(jù)提取到的數(shù)據(jù)的類別將提取到的所述數(shù)據(jù)壓入對應(yīng)的管道中;所述處理層對各個管道中的數(shù)據(jù)進行相應(yīng)的處理。采用多層處理的方式對客戶端的請求進行處理,使得對客戶端請求中的讀取請求及處理請求不再同一層進行處理,避免了當(dāng)接收到多個客戶端的讀取請求的代碼與處理請求的代碼由于在同一層中可能引起的代碼邏輯上的混亂,同時通過多個層對客戶端的數(shù)據(jù)進行處理,提高了對客戶端數(shù)據(jù)處理的效率。
[0087]進一步地,參照圖6,圖6為本發(fā)明客戶端數(shù)據(jù)處理裝置的第二實施例的功能模塊示意圖?;谏鲜隹蛻舳藬?shù)據(jù)處理裝置的第一實施例,所述存儲模塊10包括:獲取單元11、添加單元12及存儲單元13。
[0088]所述獲取單元11,用于在接收到各個客戶端發(fā)送的數(shù)據(jù)時,獲取發(fā)送所述數(shù)據(jù)的客戶端的地址信息;
[0089]所述添加單元12,用于將所述地址信息添加至接收到的所述數(shù)據(jù)的頭部;
[0090]所述存儲單元13,用于將包含有頭部信息的所述數(shù)據(jù)存儲于預(yù)設(shè)的緩沖區(qū)。
[0091]由于所述1層接收到各個客戶端發(fā)送的數(shù)據(jù)中不包含地址信息,即接收到的數(shù)據(jù)中不包含發(fā)送該數(shù)據(jù)的客戶端的地址信息,所述地址信息包括客戶端的本地地址及端口號,例如,本地地址:192.168.1.99,端口號:2400。因此,為了對各個客戶端發(fā)送的數(shù)據(jù)進行分類區(qū)別,需要在接收到各個客戶端發(fā)送的數(shù)據(jù)時,獲取發(fā)送該數(shù)據(jù)的客戶端的地址信息,即獲取發(fā)送該數(shù)據(jù)的客戶端的本地地址及端口號,所述1層可以通過客戶端與服務(wù)器進行通訊創(chuàng)建的套接字中獲取發(fā)送所述數(shù)據(jù)的客戶端的地址信息。所述1層在獲取到發(fā)送所述數(shù)據(jù)的客戶端的地址信息后,將所述地址信息添加至接收到的所述數(shù)據(jù)的頭部,使得接收到的數(shù)據(jù)都包含有數(shù)據(jù)源的地址信息,從而為分發(fā)層對該接收到數(shù)據(jù)進行轉(zhuǎn)發(fā)處理提高了必要的識別信息。1層在將地址信息添加至接收到的數(shù)據(jù)的頭部后,將該包含有頭部的所述數(shù)據(jù)存儲于預(yù)設(shè)的緩沖區(qū)。
[0092]本實施例通過所述1層在接收到各個客戶端發(fā)送的數(shù)據(jù)時,獲取發(fā)送所述數(shù)據(jù)的客戶端的地址信息,并將所述地址信息添加至接收到的所述數(shù)據(jù)的頭部,從而為所述分發(fā)層對該接收到數(shù)據(jù)進行轉(zhuǎn)發(fā)處理提高了必要的識別信息,使得所述分發(fā)層能夠準(zhǔn)確的將各個客戶端發(fā)送的數(shù)據(jù)分發(fā)至各請求處理線程中。
[0093]進一步地,參照圖7,圖7為本發(fā)明客戶端數(shù)據(jù)處理裝置的第三實施例的功能模塊示意圖?;谏鲜隹蛻舳藬?shù)據(jù)處理裝置的第二實施例,所述壓入模塊20包括:分類單元21、建立單元22及壓入單元23。
[0094]所述分類單元21,用于從所述預(yù)設(shè)的緩沖區(qū)中提取存儲的數(shù)據(jù),并根據(jù)提取到的數(shù)據(jù)的頭部信息對提取到的所述數(shù)據(jù)進行分類;
[0095]所述建立單元22,用于根據(jù)提取到的所述數(shù)據(jù)的類別建立對應(yīng)的管道;
[0096]所述壓入單元23,用于將提取到的所述數(shù)據(jù)壓入對應(yīng)的管道中。
[0097]所述分發(fā)層在從所述預(yù)設(shè)的緩沖區(qū)中提取到存儲的數(shù)據(jù)后,對所述提取到的數(shù)據(jù)進行分類。具體的,所述分發(fā)層根據(jù)提取到的數(shù)據(jù)的頭部信息進行分類,由于提取到的數(shù)據(jù)的頭部信息為客戶端的地址信息,故在對各個提取到的數(shù)據(jù)進行分類時,將頭部信息一致的數(shù)據(jù)分為一類,頭部信息不一致的數(shù)據(jù)分為不同的類別。在將提取到的數(shù)據(jù)進行分類后,所述分發(fā)層根據(jù)數(shù)據(jù)的類別建立對應(yīng)的管道,每一類的數(shù)據(jù)建立一個管道,存在多少個類別的數(shù)據(jù)就建立多少個管道,例如提取到的數(shù)據(jù)總共存在8類,則需要建立8個管道。所述分發(fā)層在建立管道時,可以在沒發(fā)現(xiàn)一個新類別的數(shù)據(jù)就建立一個新的管道,若確定該提取的數(shù)據(jù)是已有類別的數(shù)據(jù),則不需要再建立管道。分發(fā)層在建立管道后,即可將各個類別的數(shù)據(jù)分別壓入與其類別相對應(yīng)的管道中。
[0098]本實施例通過為每類數(shù)據(jù)都建立一個對應(yīng)的管道,使得對各個客戶端數(shù)據(jù)的處理更加及時,準(zhǔn)確,不會產(chǎn)生混亂。
[0099]進一步地,參照圖8,圖8為本發(fā)明客戶端數(shù)據(jù)處理裝置的第四實施例的功能模塊示意圖?;谏鲜隹蛻舳藬?shù)據(jù)處理裝置的第三實施例,所述壓入模塊20還包括:移除單元24。
[0100]所述移除單元24,用于將提取到的所述數(shù)據(jù)的頭部信息移除。
[0101]所述分發(fā)層在根據(jù)提取到的數(shù)據(jù)的類別建立對應(yīng)的管道之后,由于提取到的數(shù)據(jù)的頭部信息為客戶端的地址信息,該信息的作用僅為分發(fā)層根據(jù)該信息確定將提取到的數(shù)據(jù)壓入到哪個管道中,故在確定提取到的數(shù)據(jù)需要壓入的管道后,為了節(jié)省存儲空間,則在將該提取到的數(shù)據(jù)壓入管道之前,可以將該提取到的數(shù)據(jù)的頭部信息移除,以便處理層對該數(shù)據(jù)進行處理。進一步地,所述分發(fā)層將提取到的所述數(shù)據(jù)的頭部信息移除的步驟也可以由所述處理層執(zhí)行,即當(dāng)所述處理層對管道中的數(shù)據(jù)處理之前,首先將待處理數(shù)據(jù)的頭部移除,然后再對該數(shù)據(jù)進行相應(yīng)的處理。
[0102]本實施例通過在將提取到的數(shù)據(jù)壓入對應(yīng)的管道之前,將該數(shù)據(jù)的頭部信息移除,從而節(jié)省存儲空間。
[0103]上述本發(fā)明實施例序號僅僅為了描述,不代表實施例的優(yōu)劣。通過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到上述實施例方法可借助軟件加必需的通用硬件平臺的方式來實現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者是更佳的實施方式。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)(如R0M/RAM、磁碟、光盤)中,包括若干指令用以使得一臺終端設(shè)備(可以是手機,計算機,服務(wù)器,空調(diào)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述的方法。
[0104]以上僅為本發(fā)明的優(yōu)選實施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運用在其他相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護范圍內(nèi)。
【主權(quán)項】
1.一種客戶端數(shù)據(jù)處理方法,應(yīng)用于服務(wù)器中,其特征在于,所述服務(wù)器包括10層、分發(fā)層及處理層,所述客戶端數(shù)據(jù)處理方法包括以下步驟: 所述1層在接收到各個客戶端發(fā)送的數(shù)據(jù)時,將接收到的數(shù)據(jù)存儲于預(yù)設(shè)的緩沖區(qū)中; 所述分發(fā)層從所述預(yù)設(shè)的緩沖區(qū)中提取存儲的數(shù)據(jù),并根據(jù)提取到的數(shù)據(jù)的類別將提取到的所述數(shù)據(jù)壓入對應(yīng)的管道中; 所述處理層對各個管道中的數(shù)據(jù)進行相應(yīng)的處理。2.如權(quán)利要求1所述的客戶端數(shù)據(jù)處理方法,其特征在于,所述1層在接收到各個客戶端發(fā)送的數(shù)據(jù)時,將接收到的數(shù)據(jù)存儲于預(yù)設(shè)的緩沖區(qū)中的步驟包括: 所述1層在接收到各個客戶端發(fā)送的數(shù)據(jù)時,獲取發(fā)送所述數(shù)據(jù)的客戶端的地址信息; 所述1層將所述地址信息添加至接收到的所述數(shù)據(jù)的頭部; 所述1層將包含有頭部信息的所述數(shù)據(jù)存儲于預(yù)設(shè)的緩沖區(qū)。3.如權(quán)利要求2所述的客戶端數(shù)據(jù)處理方法,其特征在于,所述分發(fā)層從所述預(yù)設(shè)的緩沖區(qū)中提取存儲的數(shù)據(jù),并根據(jù)提取到的數(shù)據(jù)的類別將提取到的所述數(shù)據(jù)壓入對應(yīng)的管道中的步驟包括: 所述分發(fā)層從所述預(yù)設(shè)的緩沖區(qū)中提取存儲的數(shù)據(jù),并根據(jù)提取到的數(shù)據(jù)的頭部信息對提取到的所述數(shù)據(jù)進行分類; 所述分發(fā)層根據(jù)提取到的所述數(shù)據(jù)的類別建立對應(yīng)的管道; 所述分發(fā)層將提取到的所述數(shù)據(jù)壓入對應(yīng)的管道中。4.如權(quán)利要求3所述的客戶端數(shù)據(jù)處理方法,其特征在于,所述分發(fā)層將提取到的所述數(shù)據(jù)壓入對應(yīng)的管道中的步驟之前,還包括: 所述分發(fā)層將提取到的所述數(shù)據(jù)的頭部信息移除。5.如權(quán)利要求1至4任一項所述的客戶端數(shù)據(jù)處理方法,其特征在于,所述處理層對各個管道中的數(shù)據(jù)進行相應(yīng)的處理的步驟包括: 所述處理層為各個管道分配一個工作線程,以通過所述工作線程對管道中的數(shù)據(jù)進行相應(yīng)的處理。6.一種客戶端數(shù)據(jù)處理裝置,其特征在于,所述客戶端數(shù)據(jù)處理裝置包括; 存儲模塊,用于在接收到各個客戶端發(fā)送的數(shù)據(jù)時,將接收到的數(shù)據(jù)存儲于預(yù)設(shè)的緩沖區(qū)中; 壓入模塊,用于從所述預(yù)設(shè)的緩沖區(qū)中提取存儲的數(shù)據(jù),并根據(jù)提取到的數(shù)據(jù)的類別將提取到的所述數(shù)據(jù)壓入對應(yīng)的管道中; 處理模塊,用于對各個管道中的數(shù)據(jù)進行相應(yīng)的處理。7.如權(quán)利要求6所述的客戶端數(shù)據(jù)處理裝置,其特征在于,所述存儲模塊包括: 獲取單元,用于在接收到各個客戶端發(fā)送的數(shù)據(jù)時,獲取發(fā)送所述數(shù)據(jù)的客戶端的地址信息; 添加單元,用于將所述地址信息添加至接收到的所述數(shù)據(jù)的頭部; 存儲單元,用于將包含有頭部信息的所述數(shù)據(jù)存儲于預(yù)設(shè)的緩沖區(qū)。8.如權(quán)利要求7所述的客戶端數(shù)據(jù)處理裝置,其特征在于,所述壓入模塊包括: 分類單元,用于從所述預(yù)設(shè)的緩沖區(qū)中提取存儲的數(shù)據(jù),并根據(jù)提取到的數(shù)據(jù)的頭部信息對提取到的所述數(shù)據(jù)進行分類; 建立單元,用于根據(jù)提取到的所述數(shù)據(jù)的類別建立對應(yīng)的管道; 壓入單元,用于將提取到的所述數(shù)據(jù)壓入對應(yīng)的管道中。9.如權(quán)利要求7所述的客戶端數(shù)據(jù)處理裝置,其特征在于,所述壓入模塊還包括: 移除單元,用于將提取到的所述數(shù)據(jù)的頭部信息移除。10.如權(quán)利要求6支9任一項所述的客戶端數(shù)據(jù)處理裝置,其特征在于,所述處理模塊,還用于為各個管道分配一個工作線程,以通過所述工作線程對管道中的數(shù)據(jù)進行相應(yīng)的處理。
【文檔編號】G06F9/54GK106095597SQ201610370451
【公開日】2016年11月9日
【申請日】2016年5月30日
【發(fā)明人】許永昌, 盛閣
【申請人】深圳市鼎盛智能科技有限公司