一種數(shù)據(jù)處理方法及裝置的制造方法
【技術(shù)領域】
[0001 ]本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領域,特別涉及一種數(shù)據(jù)處理方法及裝置。
【背景技術(shù)】
[0002]采用網(wǎng)絡互聯(lián)設備可實現(xiàn)兩種不同類型的網(wǎng)絡的互訪與通信,并能夠協(xié)調(diào)不同網(wǎng)絡的速率與帶寬的差別。常見的網(wǎng)絡互聯(lián)設備有中繼器、網(wǎng)橋、路由器、接入設備、網(wǎng)關(guān)等。由于網(wǎng)絡的普遍應用,網(wǎng)絡類型越來越多,為了在更大范圍內(nèi)實現(xiàn)相互通信和資源共享,網(wǎng)絡之間的互聯(lián)便成為一種信息快速傳達的最好方式,在網(wǎng)絡互聯(lián)時,則需要用到網(wǎng)絡互聯(lián)設備。例如,各類服務器與訪問該服務器的各類客戶端之間通常都采用網(wǎng)絡互聯(lián)設備實現(xiàn)服務器與客戶端之間的互聯(lián)。
[0003]然而,在服務器和客戶端進行互聯(lián)時,網(wǎng)絡互聯(lián)設備在接收到客戶端的連接請求后,會為每個客戶端創(chuàng)建一個新的線程進行鏈路處理,當客戶端訪問量增加后,服務端的線程個數(shù)和客戶端成正比關(guān)系,當線程數(shù)膨脹后,系統(tǒng)同時處理的線程數(shù)過大,因而,系統(tǒng)的性能將急劇下降,隨著并發(fā)訪問量的繼續(xù)增大,系統(tǒng)會發(fā)生線程堆棧溢出、新線程創(chuàng)建失敗等問題,并最終導致進程宕機或者僵死,不能對外提供服務,因而,如何解決并發(fā)訪問量過大而導致的問題,提高服務器與客戶端之間的通信能力,成為一亟待解決的技術(shù)問題。
【發(fā)明內(nèi)容】
[0004]本發(fā)明提供一種數(shù)據(jù)處理方法及裝置,用以提高服務器與客戶端的通信能力。
[0005]本發(fā)明提供一種數(shù)據(jù)處理方法,包括:
[0006]通過套接字接口與預設客戶端建立第一通信渠道并通過網(wǎng)絡服務接口與預設服務器建立第二通訊渠道;
[0007]檢測所述第一通信渠道和所述第二通信渠道中是否存在處于就緒狀態(tài)的數(shù)據(jù);
[0008]當檢測到所述第一通信渠道中存在處于就緒狀態(tài)的數(shù)據(jù)時,讀取所述第一通信渠道中處于就緒狀態(tài)的數(shù)據(jù);
[0009]將從所述第一通信渠道中讀取到的數(shù)據(jù)寫入本地緩沖池中用于存儲從客戶端發(fā)送到服務器的數(shù)據(jù)的第一數(shù)據(jù)隊列的隊尾;
[0010]當檢測到所述第二通信渠道中存在處于就緒狀態(tài)的數(shù)據(jù)時,讀取所述第二通信渠道中處于就緒狀態(tài)的數(shù)據(jù);
[0011]將從所述第二通信渠道中讀取到的數(shù)據(jù)寫入本地緩沖池中用于存儲從服務器發(fā)送到客戶端的數(shù)據(jù)的第二數(shù)據(jù)隊列的隊尾。
[0012]本發(fā)明的有益效果在于:由于增加了本地緩沖池,使系統(tǒng)在讀取到數(shù)據(jù)之后,不必立即處理,而是將讀取到的數(shù)據(jù)寫入本地緩沖池中相應的數(shù)據(jù)隊列的隊尾,從而,降低了同時處理的數(shù)據(jù)數(shù)目,降低了線程的并發(fā)數(shù),保證了在并發(fā)訪問量過大時,系統(tǒng)性能的穩(wěn)定性,提高了服務器與客戶端之間的通信能力,提升了服務器與客戶端之間的通信效果。
[0013]在一個實施例中,所述方法還包括:
[0014]輪詢所述緩沖池中第一數(shù)據(jù)隊列的隊首;
[0015]當所述第一數(shù)據(jù)隊列的隊首有處于就緒狀態(tài)的數(shù)據(jù)時,讀取所述處于就緒狀態(tài)的數(shù)據(jù);
[0016]判斷所述讀取到的數(shù)據(jù)的類型是否屬于所述預設服務器支持的數(shù)據(jù)類型;
[0017]當所述數(shù)據(jù)的類型屬于所述預設服務器支持的數(shù)據(jù)類型時,將所述讀取到的數(shù)據(jù)發(fā)送給預設服務器;
[0018]當所述數(shù)據(jù)的類型不屬于所述預設服務器支持的數(shù)據(jù)類型時,將所述數(shù)據(jù)的類型轉(zhuǎn)換為所述預設服務器支持的數(shù)據(jù)類型;
[0019]當轉(zhuǎn)換完成時,將轉(zhuǎn)換類型之后的數(shù)據(jù)發(fā)送給預設服務器。
[0020]本實施例的有益效果在于:輪詢緩沖池中第一數(shù)據(jù)隊列的隊首,當?shù)谝粩?shù)據(jù)隊列的隊首有處于就緒狀態(tài)的數(shù)據(jù)時,讀取處于就緒狀態(tài)的數(shù)據(jù),從而,由于存在第一數(shù)據(jù)隊列,使網(wǎng)絡互聯(lián)設備在接收到客戶端數(shù)據(jù)時無需立即處理,降低了線程的并發(fā)數(shù),其次,預先判斷該數(shù)據(jù)的類型是否屬于服務器支持的數(shù)據(jù)類型,當不屬于服務器支持的數(shù)據(jù)類型時,將該數(shù)據(jù)類型轉(zhuǎn)換為服務器支持的數(shù)據(jù)類型,從而保證了服務器與客戶端交互的有效性,進一步提高了服務器與客戶端之間的通信能力,提升了服務器與客戶端之間的通信效果O
[0021]在一個實施例中,所述第二數(shù)據(jù)隊列的數(shù)據(jù)中攜帶有接收所述數(shù)據(jù)的目標客戶端的客戶端標識,所述方法還包括:
[0022]輪詢所述緩沖池中第二數(shù)據(jù)隊列的隊首;
[0023]當所述第二數(shù)據(jù)隊列的隊首有處于就緒狀態(tài)的數(shù)據(jù)時,讀取所述處于就緒狀態(tài)的數(shù)據(jù);
[0024]根據(jù)所述讀取到的數(shù)據(jù)中攜帶的客戶端標識確定所述客戶端標識對應的客戶端支持的數(shù)據(jù)類型;
[0025]判斷所述讀取到的數(shù)據(jù)的類型是否屬于所述客戶端標識對應的客戶端支持的數(shù)據(jù)類型;
[0026]當所述讀取到的數(shù)據(jù)的類型屬于所述客戶端標識對應的客戶端支持的數(shù)據(jù)類型時,將所述讀取到的數(shù)據(jù)發(fā)送給所述數(shù)據(jù)中攜帶的客戶端標識對應的客戶端;
[0027]當所述數(shù)據(jù)的類型不屬于所述客戶端標識對應的客戶端時,將所述數(shù)據(jù)的類型轉(zhuǎn)換為所述客戶端標識對應的客戶端支持的數(shù)據(jù)類型;
[0028]當轉(zhuǎn)換完成時,將轉(zhuǎn)換類型之后的數(shù)據(jù)發(fā)送給所述數(shù)據(jù)中攜帶的客戶端標識對應的客戶端。
[0029]本實施例的有益效果在于:輪詢緩沖池中第二數(shù)據(jù)隊列的隊首,當?shù)诙?shù)據(jù)隊列的隊首有處于就緒狀態(tài)的數(shù)據(jù)時,讀取處于就緒狀態(tài)的數(shù)據(jù),從而,由于存在第二數(shù)據(jù)隊列,使網(wǎng)絡互聯(lián)設備在接收到服務器的數(shù)據(jù)時無需立即處理,降低了線程的并發(fā)數(shù),其次,預先判斷該數(shù)據(jù)的類型是否屬于客戶端支持的數(shù)據(jù)類型,當不屬于客戶端支持的數(shù)據(jù)類型時,將該數(shù)據(jù)類型轉(zhuǎn)換為客戶端支持的數(shù)據(jù)類型,從而保證了服務器與客戶端交互的有效性,進一步提高了服務器與客戶端之間的通信能力,提升了服務器與客戶端之間的通信效果O
[0030]在一個實施例中,當所述預設客戶端為多個時,所述通過套接字接口與所述客戶端建立第一通信渠道,包括:
[0031]通過套接字接口與多個客戶端建立多個第一通信渠道,每個客戶端對應一個通信渠道;
[0032]所述方法還包括:
[0033]建立處理線程;
[0034]通過所述處理線程同時監(jiān)聽所述多個第一通信渠道。
[0035]本實施例的有益效果在于:當存在多個客戶端時,每個客戶端對應一個通信渠道,從而,使客戶端與通信渠道一一對應,避免了數(shù)據(jù)的紊亂,其次,能夠通過一個處理線程同時監(jiān)聽多個第一通信渠道,從而,降低了線程的并發(fā)數(shù),保證了系統(tǒng)性能的穩(wěn)定性。
[0036]在一個實施例中,所述多個第一通信渠道具有不同的優(yōu)先級,所述當檢測到所述第一通信渠道中存在處于就緒狀態(tài)的數(shù)據(jù)時,讀取所述第一通信渠道中處于就緒狀態(tài)的數(shù)據(jù),包括:
[0037]當檢測到多個第一通信渠道中存在處于就緒狀態(tài)的數(shù)據(jù)時,獲取所述第一通信渠道的優(yōu)先級;
[0038]根據(jù)所述第一通信渠道的優(yōu)先級從高到低的順序?qū)λ龅谝煌ㄐ徘赖臄?shù)據(jù)進行依次讀取。
[0039]本實施例的有益效果在于,能夠根據(jù)通信渠道的優(yōu)先級從高到低的順序依次讀取第一通信渠道中的數(shù)據(jù),從而,在建立通信渠道時,可為重要的客戶端賦予較高的優(yōu)先級,避免緊急數(shù)據(jù)的讀取被延誤。
[0040]本發(fā)明還提供一種數(shù)據(jù)處理裝置,包括:
[0041]第一建立模塊,用于通過套接字接口與預設客戶端建立第一通信渠道并通過網(wǎng)絡服務接口與預設服務器建立第二通訊渠道;
[0042]檢測模塊,用于檢測所述第一通信渠道和所述第二通信渠道中是否存在處于就緒狀態(tài)的數(shù)據(jù);
[0043]第一讀取模塊,用于當檢測到所述第一通信渠道中存在處于就緒狀態(tài)的數(shù)據(jù)時,讀取所述第一通信渠道中處于就緒狀態(tài)的數(shù)據(jù);
[0044]第一寫入模塊,用于將從所述第一通信渠道中讀取到的數(shù)據(jù)寫入本地緩沖池中用于存儲從客戶端發(fā)送到服務器的數(shù)據(jù)的第一數(shù)據(jù)隊列的隊尾;
[0045]第二讀取模塊,用于當檢測到所述第二通信渠道中存在處于就緒狀態(tài)的數(shù)據(jù)時,讀取所述第二通信渠道中處于就緒狀態(tài)的數(shù)據(jù);
[0046]第二寫入模塊,用于將從所述第二通信渠道中讀取到的數(shù)據(jù)寫入本地緩沖池中用于存儲從服務器發(fā)送到客戶端的數(shù)據(jù)的第二數(shù)據(jù)隊列的隊尾。
[0047]在一個實施例中,所述裝置還包括:
[0048]第一輪詢模塊,用于輪詢所述緩沖池中第一數(shù)據(jù)隊列的隊首;
[0049]第三讀取模塊,用于當所述第一數(shù)據(jù)隊列的隊首有處于就緒狀態(tài)的數(shù)據(jù)時,讀取所述處于就緒狀態(tài)的數(shù)據(jù);
[0050]第一判斷模塊,用于判斷所述讀取到的數(shù)據(jù)的類型是否屬于所述預設服務器支持的數(shù)據(jù)類型;
[0051 ]第一發(fā)送模塊,用于當所述數(shù)據(jù)的類型屬于所述預設服務器支持的數(shù)據(jù)類型時,將所述讀取到的數(shù)據(jù)發(fā)送給預設服務器;
[0052]第一轉(zhuǎn)換模塊,用于當所述數(shù)據(jù)的類型不屬于所述預設服務器支持的數(shù)據(jù)類型時,將所述數(shù)據(jù)的類型轉(zhuǎn)換為所述預設服務器支持