一種基于網(wǎng)絡(luò)連接池化的網(wǎng)絡(luò)通信方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種基于網(wǎng)絡(luò)連接池化的網(wǎng)絡(luò)通信方法及系統(tǒng),所述的方法包括:創(chuàng)建一Hash表,并根據(jù)預(yù)定需求初始化N個網(wǎng)絡(luò)連接;采用Hash運算對每一個網(wǎng)絡(luò)連接創(chuàng)建對應(yīng)的key值,并根據(jù)key值將每一個網(wǎng)絡(luò)連接一一對應(yīng)存儲于Hash表中;當客戶端訪問服務(wù)器端時,根據(jù)客戶端標識作Hash運算后得到對應(yīng)的key值;根據(jù)對應(yīng)的key值從Hash表中獲取對應(yīng)的網(wǎng)絡(luò)連接,客戶端通過該網(wǎng)絡(luò)連接與服務(wù)器端進行網(wǎng)絡(luò)通信。通過本發(fā)明的方法,將網(wǎng)絡(luò)連接進行池化形成網(wǎng)絡(luò)連接資源池,實現(xiàn)網(wǎng)絡(luò)連接資源的可控性,按需將資源池中的網(wǎng)絡(luò)連接分配給客戶端,提高整個系統(tǒng)的吞吐量,資源池中的網(wǎng)絡(luò)連接可以復(fù)用,不會出現(xiàn)網(wǎng)絡(luò)連接資源耗盡的問題。
【專利說明】
一種基于網(wǎng)絡(luò)連接池化的網(wǎng)絡(luò)通信方法及系統(tǒng)
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及網(wǎng)絡(luò)通信技術(shù)領(lǐng)域,具體涉及一種基于網(wǎng)絡(luò)連接池化的網(wǎng)絡(luò)通信方法及系統(tǒng)。
【背景技術(shù)】
[0002]基于TCP/IP協(xié)議的阻塞式I/O網(wǎng)絡(luò)應(yīng)用程序,采用網(wǎng)絡(luò)套接字進行通信,如果服務(wù)器端處理速度緩慢,在高并發(fā)的情況下會出現(xiàn)客戶端網(wǎng)絡(luò)套接字資源耗盡的情況。例如:在I秒內(nèi)有100個用戶通過客戶端程序訪問服務(wù)器端,服務(wù)器端程序處理請求并做出響應(yīng)需要3秒鐘,客戶端在3秒內(nèi)就會產(chǎn)生300個客戶端套接字與服務(wù)器端建立連接,如果客戶端沒有設(shè)置快速回收套接字策略,客戶端就會存在很多處于TIME_WAIT狀態(tài)的連接,在這種場景下,客戶端的套接字資源就會耗盡,最終導(dǎo)致程序運行錯誤。
[0003]網(wǎng)絡(luò)套接字屬于系統(tǒng)資源,網(wǎng)絡(luò)套接字耗盡后會影響整個系統(tǒng)的負載量,導(dǎo)致大量處于等待的客戶端產(chǎn)生,使得整個系統(tǒng)的性能下降。
【發(fā)明內(nèi)容】
[0004]本發(fā)明所要解決的技術(shù)問題是提供一種基于網(wǎng)絡(luò)連接池化的網(wǎng)絡(luò)通信方法及系統(tǒng),能夠解決現(xiàn)有技術(shù)的不足。
[0005]本發(fā)明解決上述技術(shù)問題的技術(shù)方案如下:
[0006]—方面,本發(fā)明提供了一種基于網(wǎng)絡(luò)連接池化的網(wǎng)絡(luò)通信方法,包括:
[0007]S1、創(chuàng)建一Hash表,并根據(jù)預(yù)定需求初始化N個網(wǎng)絡(luò)連接,其中,N為正整數(shù);
[0008]S2、采用Hash運算每一個網(wǎng)絡(luò)連接創(chuàng)建對應(yīng)的key值,根據(jù)創(chuàng)建的key值將每一個網(wǎng)絡(luò)連接——對應(yīng)存儲于Hash表中,形成網(wǎng)絡(luò)連接資源池;
[0009]S3、當客戶端訪問服務(wù)器端時,根據(jù)客戶端標識作Hash運算后得到對應(yīng)的key值;
[0010]S4、根據(jù)對應(yīng)的key值從Hash表中獲取與客戶端對應(yīng)的網(wǎng)絡(luò)連接,客戶端通過該網(wǎng)絡(luò)連接與服務(wù)器端進行網(wǎng)絡(luò)通信。
[0011]另一方面,本發(fā)明提供了一種基于網(wǎng)絡(luò)連接池化的網(wǎng)絡(luò)通信系統(tǒng),包括:
[0012]Hash表創(chuàng)建單元,用于創(chuàng)建一Hash表;
[0013]初始化單元,用于根據(jù)預(yù)定需求初始化N個網(wǎng)絡(luò)連接,其中,N為正整數(shù);
[0014]存儲單元,用于采用Hash運算為每一個網(wǎng)絡(luò)連接創(chuàng)建對應(yīng)的key值,并根據(jù)創(chuàng)建的key值將每一個網(wǎng)絡(luò)連接一一對應(yīng)存儲于Hash表中,形成網(wǎng)絡(luò)連接資源池;
[0015]key值獲取單元,用于當客戶端訪問服務(wù)器端時,根據(jù)客戶端標識作Hash運算后得到對應(yīng)的key值;
[0016]網(wǎng)絡(luò)連接獲取單元,用于根據(jù)對應(yīng)的key值從Hash表中獲取與客戶端對應(yīng)的網(wǎng)絡(luò)連接;
[0017]網(wǎng)絡(luò)連接單元,用于通過獲取的所述網(wǎng)絡(luò)連接與服務(wù)器端進行網(wǎng)絡(luò)通信。
[0018]本發(fā)明提供的一種基于網(wǎng)絡(luò)連接池化的網(wǎng)絡(luò)通信方法及系統(tǒng),將網(wǎng)絡(luò)連接進行池化形成網(wǎng)絡(luò)連接資源池,實現(xiàn)網(wǎng)絡(luò)連接資源的可控性,按需將資源池中的網(wǎng)絡(luò)連接分配給客戶端,用以通過網(wǎng)絡(luò)連接與服務(wù)器端建立網(wǎng)絡(luò)通信連接,提高整個系統(tǒng)的吞吐量,資源池中的網(wǎng)絡(luò)連接可以復(fù)用,不會出現(xiàn)網(wǎng)絡(luò)連接資源耗盡的問題。
【附圖說明】
[0019]圖1為本發(fā)明實施例一的一種基于網(wǎng)絡(luò)連接池化的網(wǎng)絡(luò)通信方法流程圖;
[0020]圖2為建立的網(wǎng)絡(luò)連接資源池示意圖;
[0021]圖3為本發(fā)明實施例二的一種基于網(wǎng)絡(luò)連接池化的網(wǎng)絡(luò)通信系統(tǒng)示意圖。
【具體實施方式】
[0022]以下結(jié)合附圖對本發(fā)明的原理和特征進行描述,所舉實例只用于解釋本發(fā)明,并非用于限定本發(fā)明的范圍。
[0023]實施例一、一種基于網(wǎng)絡(luò)連接池化的網(wǎng)絡(luò)通信方法。下面結(jié)合圖1和圖2對本實施例提供的方法進行說明。
[0024]參見圖1,本實施例提供的方法包括:S1、創(chuàng)建一Hash表,并根據(jù)預(yù)定需求初始化N個網(wǎng)絡(luò)連接。
[0025]S2、采用Hash運算為每一個網(wǎng)絡(luò)連接創(chuàng)建對應(yīng)的key值,根據(jù)創(chuàng)建的key值將每一個網(wǎng)絡(luò)連接——對應(yīng)存儲于Hash表中,形成網(wǎng)絡(luò)連接資源池。
[0026]具體的,首先創(chuàng)建一張Hash表,然后根據(jù)預(yù)定需求初始化N個網(wǎng)絡(luò)套接字,其中,N為正整數(shù)。創(chuàng)建的Hash表用來存放初始化后的網(wǎng)絡(luò)連接,初始化的網(wǎng)絡(luò)連接的個數(shù)N的取值可由客戶端的數(shù)量來配置,其中,一個客戶端對應(yīng)一個網(wǎng)絡(luò)連接,客戶端上的一個網(wǎng)絡(luò)套接字與服務(wù)器端上的一個網(wǎng)絡(luò)套接字共同構(gòu)成一個網(wǎng)絡(luò)連接,即客戶端通過一條網(wǎng)絡(luò)連接與服務(wù)器端建立網(wǎng)絡(luò)通信連接。其中,網(wǎng)絡(luò)連接與服務(wù)器端的主機之間具有對應(yīng)關(guān)系,可以為一對一的對應(yīng)關(guān)系,也可以為多對一的對應(yīng)關(guān)系。
[0027]初始化N個網(wǎng)絡(luò)套接字后,采用Hash運算為每一個網(wǎng)絡(luò)連接創(chuàng)建對應(yīng)的key值,由于網(wǎng)絡(luò)連接與服務(wù)器端的主機之間具有對應(yīng)關(guān)系,因此,本實施例根據(jù)網(wǎng)絡(luò)連接對應(yīng)的主機標識,并做Hash運算,得到該網(wǎng)絡(luò)連接對應(yīng)的key值。將創(chuàng)建的key值作為網(wǎng)絡(luò)連接在Hash表中的存放地址,將每一個網(wǎng)絡(luò)連接對應(yīng)的存儲于Hash表中,形成網(wǎng)絡(luò)連接資源池。其中,網(wǎng)絡(luò)連接屬于系統(tǒng)資源,因此一個網(wǎng)絡(luò)連接資源池中的最大網(wǎng)絡(luò)連接數(shù)量是有限的。當客戶端的數(shù)量增加時,可以動態(tài)在網(wǎng)絡(luò)連接資源池中增加網(wǎng)絡(luò)連接的數(shù)量。
[0028]S3、當客戶端訪問服務(wù)器端時,根據(jù)客戶端標識作Hash運算后得到對應(yīng)的key值。
[0029]S4、根據(jù)對應(yīng)的key值從Hash表中獲取與客戶端對應(yīng)的網(wǎng)絡(luò)連接與服務(wù)器端建立網(wǎng)絡(luò)連接。
[0030]具體的,當客戶端需要訪問服務(wù)器端時,根據(jù)客戶端標識作Hash運算后得到對應(yīng)的key值,比如,當多個手機需要訪問服務(wù)器端時,可根據(jù)手機號碼做Hash運算得到各個手機號碼對應(yīng)的key值,并根據(jù)客戶端對應(yīng)的key值從Hah表中獲取與客戶端對應(yīng)的網(wǎng)絡(luò)連接,根據(jù)對應(yīng)的網(wǎng)絡(luò)連接,客戶端通過該網(wǎng)絡(luò)連接與服務(wù)器端建立網(wǎng)絡(luò)通信連接,可參見圖2。
[0031]在將網(wǎng)絡(luò)連接存儲于Hash表中后,按照預(yù)定時間間隔對Hash表中所有的網(wǎng)絡(luò)連接的連接狀態(tài)進行檢測,當檢測到網(wǎng)絡(luò)連接的連接狀態(tài)處于未連接狀態(tài)時,激活該網(wǎng)絡(luò)連接使其處于連接狀態(tài)。另外,對從Hash表中獲取的與客戶端對應(yīng)的網(wǎng)絡(luò)連接進行連接狀態(tài)的檢測,當客戶端通過該網(wǎng)絡(luò)連接與對應(yīng)的服務(wù)器端建立連接失敗時,客戶端繼續(xù)通過該網(wǎng)絡(luò)連接與對應(yīng)的服務(wù)器端重新建立連接。其中,當客戶端通過對應(yīng)的網(wǎng)絡(luò)連接與服務(wù)器端建立連接失敗時,客戶端使用其繼續(xù)通過該網(wǎng)絡(luò)連接與服務(wù)器端重新建立連接預(yù)定次數(shù)。
[0032]需要說明的是,多個手機號碼做Hash運算后得到的key值可能相同,比如,手機號A和手機號B作Hash運算后得到同一個key值,該key值對應(yīng)同一個網(wǎng)絡(luò)連接,因此,在不同時間,手機號A對應(yīng)的手機和手機號B對應(yīng)的手機均可以通過同一個網(wǎng)絡(luò)連接與服務(wù)器端建立網(wǎng)絡(luò)通信連接,實現(xiàn)網(wǎng)絡(luò)連接資源池中的網(wǎng)絡(luò)連接的復(fù)用,避免出現(xiàn)網(wǎng)絡(luò)連接資源耗盡的問題。
[0033]另外,服務(wù)器端很多時候會包含多個主機,比如,一個服務(wù)器端包括主機M、主機L和主機W,網(wǎng)絡(luò)連接a和網(wǎng)絡(luò)連接b均可連接至主機A,客戶端G可通過網(wǎng)絡(luò)連接a與主機A建立網(wǎng)絡(luò)連接,客戶端H可通過網(wǎng)絡(luò)連接b與主機A建立網(wǎng)絡(luò)連接,也就是說,在同一時間,客戶端G和客戶端H均能與主機A建立網(wǎng)絡(luò)連接,實現(xiàn)并行數(shù)據(jù)傳輸?shù)墓δ埽啾痊F(xiàn)有技術(shù)的串行數(shù)據(jù)傳輸,提高了數(shù)據(jù)傳輸?shù)乃俣取?br>[0034]實施例二、一種基于網(wǎng)絡(luò)連接池化的網(wǎng)絡(luò)通信系統(tǒng)。下面結(jié)合圖3對本實施例提供的系統(tǒng)進行描述。
[0035]參見圖3,本實施例提供的系統(tǒng)包括Hash表創(chuàng)建單元31、初始化單元32、存儲單元33、key值獲取單元34、連接狀態(tài)檢測單元35、激活單元36、網(wǎng)絡(luò)連接獲取單元37和網(wǎng)絡(luò)連接單元38。
[0036]其中,Hash表創(chuàng)建單元31,用于創(chuàng)建一Hash表。
[0037]初始化單元32,用于根據(jù)預(yù)定需求初始化N個網(wǎng)絡(luò)連接,其中,根據(jù)客戶端的數(shù)量確定N的取值。
[0038]存儲單元33,用于采用Hash運算為每一個網(wǎng)絡(luò)連接創(chuàng)建對應(yīng)的key值,并根據(jù)創(chuàng)建的key值將每一個網(wǎng)絡(luò)連接對應(yīng)存儲于Hash表中,形成網(wǎng)絡(luò)連接資源池。
[0039]key獲取單元34,用于當客戶端訪問服務(wù)器端時,根據(jù)客戶端標識作Hash運算后得到對應(yīng)的key值。
[0040]網(wǎng)絡(luò)連接獲取單元35,用于根據(jù)對應(yīng)的key值從Hash表中獲取與客戶端對應(yīng)的網(wǎng)絡(luò)連接。
[0041]網(wǎng)絡(luò)連接單元38,用于通過獲取的所述網(wǎng)絡(luò)連接與服務(wù)器端建立網(wǎng)絡(luò)通信連接。
[0042]本實施例提供的系統(tǒng)還包括連接狀態(tài)檢測單元35和激活單元36,所述連接狀態(tài)檢測單元35,用于按照預(yù)定時間間隔對Hash表中所有的網(wǎng)絡(luò)連接的連接狀態(tài)進行檢測。所述激活單元36,用于當連接狀態(tài)檢測單元35檢測到網(wǎng)絡(luò)連接的連接狀態(tài)處于未連接狀態(tài)時,激活該網(wǎng)絡(luò)連接使其處于連接狀態(tài)。
[0043]所述連接狀態(tài)檢測單元35還用于:
[0044]對從Hash表中獲取的與客戶端對應(yīng)的網(wǎng)絡(luò)連接進行連接狀態(tài)的檢測;
[0045]當客戶端通過該網(wǎng)絡(luò)連接與對應(yīng)的服務(wù)器端建立連接失敗時,客戶端繼續(xù)通過該網(wǎng)絡(luò)連接與對應(yīng)的服務(wù)器端重新建立連接。
[0046]所述網(wǎng)絡(luò)連接單元38還用于:
[0047]當客戶端通過對應(yīng)的網(wǎng)絡(luò)連接與服務(wù)器端建立連接失敗時,以供客戶端使用其繼續(xù)通過該網(wǎng)絡(luò)連接與服務(wù)器端重新建立連接預(yù)定次數(shù)。本發(fā)明提供的一種基于網(wǎng)絡(luò)連接池化的網(wǎng)絡(luò)通信方法及系統(tǒng),根據(jù)客戶端數(shù)量創(chuàng)建N個網(wǎng)絡(luò)連接,將網(wǎng)絡(luò)連接存儲于Hash表中進行池化形成網(wǎng)絡(luò)連接資源池,實現(xiàn)網(wǎng)絡(luò)連接資源的可控性,對網(wǎng)絡(luò)連接的數(shù)量進行控制,且將網(wǎng)絡(luò)連接資源池中的網(wǎng)絡(luò)連接按需分配給客戶端,以供客戶端通過網(wǎng)絡(luò)連接與服務(wù)器端建立網(wǎng)絡(luò)通信連接,提高整個系統(tǒng)的吞吐量;多個客戶端可通過同一個網(wǎng)絡(luò)連接與服務(wù)器端建立網(wǎng)絡(luò)通信,實現(xiàn)網(wǎng)絡(luò)連接資源池中的網(wǎng)絡(luò)連接的復(fù)用,避免出現(xiàn)網(wǎng)絡(luò)連接資源耗盡的問題;多個客戶端能同時與服務(wù)器端建立通信連接,實現(xiàn)并行數(shù)據(jù)傳輸?shù)墓δ?,相比現(xiàn)有技術(shù)的串行數(shù)據(jù)傳輸,提高了數(shù)據(jù)傳輸?shù)乃俣取?br>[0048]在本說明書的描述中,參考術(shù)語“實施例一”、“示例”、“具體示例”、或“一些示例”等的描述意指結(jié)合該實施例或示例描述的具體方法、裝置或者特點包含于本發(fā)明的至少一個實施例或示例中。在本說明書中,對上述術(shù)語的示意性表述不必須針對的是相同的實施例或示例。而且,描述的具體特征、方法、裝置或者特點可以在任一個或多個實施例或示例中以合適的方式結(jié)合。此外,在不相互矛盾的情況下,本領(lǐng)域的技術(shù)人員可以將本說明書中描述的不同實施例或示例以及不同實施例或示例的特征進行結(jié)合和組合。
[0049]以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
【主權(quán)項】
1.一種基于網(wǎng)絡(luò)連接池化的網(wǎng)絡(luò)通信方法,其特征在于,包括: 51、創(chuàng)建一Hash表,并根據(jù)預(yù)定需求初始化N個網(wǎng)絡(luò)連接,其中,1^為正整數(shù); 52、采用Hash運算為每一個網(wǎng)絡(luò)連接創(chuàng)建對應(yīng)的key值,根據(jù)創(chuàng)建的key值將每一個網(wǎng)絡(luò)連接——對應(yīng)存儲于Hash表中,形成網(wǎng)絡(luò)連接資源池; 53、當客戶端訪問服務(wù)器端時,根據(jù)客戶端標識作Hash運算后得到對應(yīng)的key值; 54、根據(jù)對應(yīng)的key值從Hash表中獲取與客戶端對應(yīng)的網(wǎng)絡(luò)連接,客戶端通過該網(wǎng)絡(luò)連接與服務(wù)器端進行網(wǎng)絡(luò)通信。2.如權(quán)利要求1所述的基于網(wǎng)絡(luò)連接池化的網(wǎng)絡(luò)通信方法,其特征在于,根據(jù)客戶端的數(shù)量確定N的取值。3.如權(quán)利要求1所述的基于網(wǎng)絡(luò)連接池化的網(wǎng)絡(luò)通信方法,其特征在于,還包括: 按照預(yù)定時間間隔對Hash表中所有的網(wǎng)絡(luò)連接的連接狀態(tài)進行檢測,當檢測到網(wǎng)絡(luò)連接的連接狀態(tài)處于未連接狀態(tài)時,激活該網(wǎng)絡(luò)連接使其處于連接狀態(tài)。4.如權(quán)利要求3所述的基于網(wǎng)絡(luò)連接池化的網(wǎng)絡(luò)通信方法,其特征在于,所述步驟S4還包括: 對從Hash表中獲取的與客戶端對應(yīng)的網(wǎng)絡(luò)連接的連接狀態(tài)進行檢測,當客戶端通過該網(wǎng)絡(luò)連接與對應(yīng)的服務(wù)器端建立連接失敗時,客戶端繼續(xù)通過該網(wǎng)絡(luò)連接與對應(yīng)的服務(wù)器端重新建立連接。5.如權(quán)利要求4所述的基于網(wǎng)絡(luò)連接池化的網(wǎng)絡(luò)通信方法,其特征在于,當客戶端通過對應(yīng)的網(wǎng)絡(luò)連接與服務(wù)器端建立連接失敗時,客戶端繼續(xù)通過該網(wǎng)絡(luò)連接與服務(wù)器端重新建立網(wǎng)絡(luò)連接預(yù)定次數(shù)。6.一種基于網(wǎng)絡(luò)連接池化的網(wǎng)絡(luò)通信系統(tǒng),其特征在于,包括: Hash表創(chuàng)建單元,用于創(chuàng)建一 Hash表; 初始化單元,用于根據(jù)預(yù)定需求初始化N個網(wǎng)絡(luò)連接,其中,N為正整數(shù); 存儲單元,用于采用Hash運算為每一個網(wǎng)絡(luò)連接創(chuàng)建對應(yīng)的key值,并根據(jù)創(chuàng)建的key值將每一個網(wǎng)絡(luò)連接一一對應(yīng)存儲于Hash表中,形成網(wǎng)絡(luò)連接資源池; key值獲取單元,用于當客戶端訪問服務(wù)器端時,根據(jù)客戶端標識作Hash運算后得到對應(yīng)的key值; 網(wǎng)絡(luò)連接獲取單元,用于根據(jù)對應(yīng)的key值從Hash表中獲取與客戶端對應(yīng)的網(wǎng)絡(luò)連接; 網(wǎng)絡(luò)連接單元,用于通過獲取的所述網(wǎng)絡(luò)連接與服務(wù)器端進行網(wǎng)絡(luò)通信。7.如權(quán)利要求6所述的基于網(wǎng)絡(luò)連接池化的網(wǎng)絡(luò)通信系統(tǒng),其特征在于,根據(jù)客戶端的數(shù)量確定N的取值。8.如權(quán)利要求6所述的基于網(wǎng)絡(luò)連接池化的網(wǎng)絡(luò)通信系統(tǒng),其特征在于,還包括: 連接狀態(tài)檢測單元,用于按照預(yù)定時間間隔對Hash表中所有的網(wǎng)絡(luò)連接的連接狀態(tài)進行檢測; 激活單元,用于當檢測到網(wǎng)絡(luò)連接的連接狀態(tài)處于未連接狀態(tài)時,激活該網(wǎng)絡(luò)連接使其處于連接狀態(tài)。9.如權(quán)利要求8所述的基于網(wǎng)絡(luò)連接池化的網(wǎng)絡(luò)通信系統(tǒng),其特征在于,所述連接狀態(tài)檢測單元還用于: 對從Hash表中獲取的與客戶端對應(yīng)的網(wǎng)絡(luò)連接的連接狀態(tài)進行檢測; 當客戶端通過該網(wǎng)絡(luò)連接與對應(yīng)的服務(wù)器端建立連接失敗時,客戶端繼續(xù)通過該網(wǎng)絡(luò)連接與對應(yīng)的服務(wù)器端重新建立連接。10.如權(quán)利要求9所述的基于網(wǎng)絡(luò)連接池化的網(wǎng)絡(luò)通信系統(tǒng),其特征在于,所述網(wǎng)絡(luò)連接單元還用于: 當客戶端通過對應(yīng)的網(wǎng)絡(luò)連接與服務(wù)器端建立連接失敗時,以供客戶端使用其繼續(xù)通過該網(wǎng)絡(luò)連接與服務(wù)器端重新建立連接預(yù)定次數(shù)。
【文檔編號】H04L29/12GK105933464SQ201610228328
【公開日】2016年9月7日
【申請日】2016年4月13日
【發(fā)明人】梁蕤
【申請人】北京思特奇信息技術(shù)股份有限公司