一種基于連接池的服務(wù)器連接方法和裝置制造方法
【專利摘要】本發(fā)明提供了一種基于連接池的服務(wù)器連接方法和裝置,其中連接方法包括:實(shí)時(shí)監(jiān)控服務(wù)器集群中的各臺(tái)服務(wù)器,獲取在線服務(wù)器信息;接收業(yè)務(wù)系統(tǒng)發(fā)送的與服務(wù)器建立連接的請(qǐng)求;依據(jù)所述請(qǐng)求,選擇一個(gè)選擇服務(wù)器的策略;依據(jù)策略與在線服務(wù)器信息選擇一臺(tái)在線服務(wù)器;判斷是否保存了所選擇的服務(wù)器的未被占用的連接實(shí)例;若保存了,則直接選擇連接實(shí)例;若未保存,則獲取一個(gè)新的連接實(shí)例,建立與所選擇的在線服務(wù)器的連接,添加連接對(duì)應(yīng)的套接字句柄至新的連接實(shí)例并選擇該連接實(shí)例;針對(duì)建立連接的請(qǐng)求將套接字句柄通過(guò)相應(yīng)的接口返回給業(yè)務(wù)系統(tǒng),建立業(yè)務(wù)系統(tǒng)與所選擇的服務(wù)器的連接。通過(guò)本發(fā)明,能夠合理的利用服務(wù)器資源,建立可靠的連接。
【專利說(shuō)明】一種基于連接池的服務(wù)器連接方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及網(wǎng)絡(luò)通信【技術(shù)領(lǐng)域】,特別是涉及一種基于連接池的服務(wù)器連接方法和裝置。
【背景技術(shù)】
[0002]互聯(lián)網(wǎng)行業(yè)數(shù)據(jù)流量在不斷的激增,廣告投放系統(tǒng)在收到大批量的用戶頁(yè)面請(qǐng)求后,需要對(duì)每個(gè)用戶都執(zhí)行不同的廣告投放策略。對(duì)于如此大的請(qǐng)求流量,廣告投放系統(tǒng)需要達(dá)到快速、可靠的在各模塊間進(jìn)行數(shù)據(jù)交互,就必須實(shí)現(xiàn)基于TCP (TransmissionControl Protocol,傳輸控制協(xié)議)的高并發(fā)、低延遲的網(wǎng)絡(luò)通信。而這種網(wǎng)絡(luò)通信可以通過(guò)在廣告投放系統(tǒng)中的各個(gè)模塊中集成連接池來(lái)實(shí)現(xiàn),即通過(guò)連接池為數(shù)據(jù)交互快速的提供連接,實(shí)現(xiàn)高并發(fā)、低延遲的網(wǎng)絡(luò)通信。
[0003]連接池基本的思想是在業(yè)務(wù)系統(tǒng)初始化的時(shí)候,將服務(wù)器連接作為對(duì)象存儲(chǔ)在連接池中,當(dāng)業(yè)務(wù)系統(tǒng)需要與服務(wù)器建立連接時(shí),業(yè)務(wù)系統(tǒng)并不需要與服務(wù)器集群中的某一服務(wù)器建立一個(gè)新的連接,而是從連接池中取出一個(gè)已建立的空閑連接對(duì)象。使用完畢后,業(yè)務(wù)系統(tǒng)也并非撤銷連接,而是將連接放回連接池中,以供下一個(gè)請(qǐng)求訪問(wèn)使用。
[0004]而現(xiàn)有的連接池在設(shè)計(jì)時(shí),只是將指定的服務(wù)器信息配置到連接池中,并且僅考慮了連接資源的分配問(wèn)題。也就說(shuō)是,在業(yè)務(wù)系統(tǒng)的連接池中存儲(chǔ)有與所配置的服務(wù)器的連接,當(dāng)業(yè)務(wù)系統(tǒng)請(qǐng)求連接時(shí),從連接池中隨機(jī)取出一個(gè)服務(wù)器的連接,將此連接提供給業(yè)務(wù)系統(tǒng)。
[0005]可見(jiàn),采用現(xiàn)有基于連接池的服務(wù)器連接方法在建立業(yè)務(wù)系統(tǒng)與服務(wù)器間的連接時(shí),只是簡(jiǎn)單的進(jìn)行連接資源的分配提供給業(yè)務(wù)系統(tǒng)連接,而當(dāng)配置到連接池中的服務(wù)器出現(xiàn)問(wèn)題時(shí),依然會(huì)將出現(xiàn)問(wèn)題的服務(wù)器的連接提供給業(yè)務(wù)系統(tǒng),無(wú)法保證連接的可靠性。同時(shí),現(xiàn)有的這種建立連接的方法也不能結(jié)合各個(gè)服務(wù)器的現(xiàn)狀來(lái)分配連接,只是隨機(jī)的從連接池中取出連接,選擇提取的連接對(duì)應(yīng)的服務(wù)器提供給業(yè)務(wù)系統(tǒng),不能合理的利用服務(wù)器資源。
【發(fā)明內(nèi)容】
[0006]本發(fā)明提供了一種基于連接池的服務(wù)器連接方法和裝置,以解決現(xiàn)有的連接方法無(wú)法合理的利用服務(wù)器資源以及所建立的連接可靠性差的問(wèn)題。
[0007]為了解決上述問(wèn)題,本發(fā)明公開(kāi)了一種基于連接池的服務(wù)器連接方法,包括:實(shí)時(shí)監(jiān)控服務(wù)器集群中的各臺(tái)服務(wù)器,獲取在線服務(wù)器信息;接收業(yè)務(wù)系統(tǒng)發(fā)送的與服務(wù)器建立連接的請(qǐng)求;依據(jù)所述建立連接的請(qǐng)求,選擇一個(gè)選擇服務(wù)器的策略;依據(jù)所述策略與所述在線服務(wù)器信息選擇一臺(tái)在線服務(wù)器;判斷是否保存了所選擇的在線服務(wù)器的未被占用的連接實(shí)例;若保存了所述連接實(shí)例,則直接選擇所述連接實(shí)例,其中,保存了的每個(gè)所述連接實(shí)例對(duì)應(yīng)有套接字句柄;若未保存所述連接實(shí)例,則獲取一個(gè)新的連接實(shí)例,通過(guò)所述新的連接實(shí)例建立與所選擇的在線服務(wù)器的連接,添加所述連接對(duì)應(yīng)的套接字句柄至所述新的連接實(shí)例;選擇添加了所述套接字句柄的新的連接實(shí)例;針對(duì)所述建立連接的請(qǐng)求將所選擇的連接實(shí)例對(duì)應(yīng)的套接字句柄通過(guò)相應(yīng)的接口返回給所述業(yè)務(wù)系統(tǒng),依據(jù)所述套接字句柄建立所述業(yè)務(wù)系統(tǒng)與所選擇的在線服務(wù)器的連接。
[0008]優(yōu)選地,在所述實(shí)時(shí)監(jiān)控服務(wù)器集群中的各臺(tái)服務(wù)器,獲取在線服務(wù)器信息步驟之后,還包括:按照設(shè)定規(guī)則檢測(cè)各臺(tái)在線服務(wù)器是否可用,刪除不可用的在線服務(wù)器對(duì)應(yīng)的服務(wù)器信息。
[0009]優(yōu)選地,所述服務(wù)器信息包括:中央處理器負(fù)載、剩余內(nèi)存;所述依據(jù)所述建立連接的請(qǐng)求,選擇一個(gè)選擇服務(wù)器的策略步驟包括:依據(jù)所述建立連接的請(qǐng)求,選擇一個(gè)選擇中央處理器負(fù)載最小、剩余內(nèi)存最大的服務(wù)器的策略;所述依據(jù)所述策略與所述在線服務(wù)器信息選擇一臺(tái)在線服務(wù)器的步驟包括:依據(jù)所述策略與所述在線服務(wù)器信息選擇一臺(tái)在線的且中央處理器負(fù)載最小、剩余內(nèi)存最大的服務(wù)器。
[0010]優(yōu)選地,所述判斷是否保存了所選擇的在線服務(wù)器的未被占用的連接實(shí)例步驟包括:判斷是否保存了所選擇的在線服務(wù)器的連接實(shí)例;若保存了所述連接實(shí)例,則進(jìn)一步判斷所述連接實(shí)例是否已被與所述業(yè)務(wù)系統(tǒng)建立的其他連接占用;若所述連接實(shí)例未被占用,則判斷結(jié)果為保存了所選擇的在線服務(wù)器的未被占用的連接實(shí)例。
[0011]優(yōu)選地,在所述實(shí)時(shí)監(jiān)控服務(wù)器集群中的各臺(tái)服務(wù)器,獲取在線服務(wù)器信息步驟之前,還包括:接收所述業(yè)務(wù)系統(tǒng)輸入的長(zhǎng)連接或短連接的連接指令,依據(jù)所述連接指令建立相應(yīng)類型的連接。
[0012]優(yōu)選地,在所述依據(jù)所述套接字句柄建立所述業(yè)務(wù)系統(tǒng)與所選擇的在線服務(wù)器的連接步驟之后,還包括:當(dāng)斷開(kāi)與所選擇的在線服務(wù)器的連接時(shí),刪除所述所選擇的連接實(shí)例中的套接字句柄,獲得一個(gè)新的連接實(shí)例。
[0013]為了解決上述問(wèn)題,本發(fā)明還公開(kāi)了一種基于連接池的服務(wù)器連接裝置,包括:集群監(jiān)控模塊,用于實(shí)時(shí)監(jiān)控服務(wù)器集群中的各臺(tái)服務(wù)器,獲取在線服務(wù)器信息;連接管理模塊,用于接收業(yè)務(wù)系統(tǒng)發(fā)送的與服務(wù)器建立連接的請(qǐng)求;策略管理模塊,用于依據(jù)所述建立連接的請(qǐng)求,選擇一個(gè)選擇服務(wù)器的策略;集群管理模塊,用于依據(jù)所述策略與所述在線服務(wù)器信息選擇一臺(tái)在線服務(wù)器;所述集群管理模塊,還用于判斷是否保存了所選擇的在線服務(wù)器的未被占用的連接實(shí)例;若保存了所述連接實(shí)例,則直接選擇所述連接實(shí)例,其中,保存了的每個(gè)所述連接實(shí)例對(duì)應(yīng)有套接字句柄;若未保存所述連接實(shí)例,則獲取一個(gè)新的連接實(shí)例,通過(guò)所述新的連接實(shí)例建立與所選擇的在線服務(wù)器的連接,添加所述連接對(duì)應(yīng)的套接字句柄至所述新的連接實(shí)例;選擇添加了所述套接字句柄的新的連接實(shí)例;所述連接管理模塊,還用于針對(duì)所述建立連接的請(qǐng)求將所選擇的連接實(shí)例對(duì)應(yīng)的套接字句柄通過(guò)相應(yīng)的接口返回給所述業(yè)務(wù)系統(tǒng),依據(jù)所述套接字句柄建立所述業(yè)務(wù)系統(tǒng)與所選擇的在線服務(wù)器的連接。
[0014]優(yōu)選地,基于連接池的服務(wù)器連接裝置還包括:健康檢測(cè)模塊,用于在所述集群監(jiān)控模塊獲取在線服務(wù)器信息之后,按照設(shè)定規(guī)則檢測(cè)各臺(tái)在線的服務(wù)器是否可用,刪除不可用的在線服務(wù)器對(duì)應(yīng)的服務(wù)器信息。
[0015]優(yōu)選地,所述服務(wù)器信息包括:中央處理器負(fù)載、剩余內(nèi)存;所述策略管理模塊依據(jù)所述建立連接的請(qǐng)求,選擇一個(gè)選擇服務(wù)器的策略時(shí):依據(jù)所述建立連接的請(qǐng)求,選擇一個(gè)選擇中央處理器負(fù)載最小、剩余內(nèi)存最大的服務(wù)器的策略;所述集群管理模塊依據(jù)所述策略與所述在線服務(wù)器信息選擇一臺(tái)在線服務(wù)器時(shí):依據(jù)所述策略與所述在線的服務(wù)器信息選擇一臺(tái)在線的且中央處理器負(fù)載最小、剩余內(nèi)存最大的服務(wù)器。
[0016]優(yōu)選地,所述集群管理模塊,還用于在所述集群監(jiān)控模塊實(shí)時(shí)監(jiān)控服務(wù)器中的各臺(tái)服務(wù)器,獲取在線服務(wù)器信息之前,接收所述業(yè)務(wù)系統(tǒng)輸入的長(zhǎng)連接或短連接的連接指令,依據(jù)所述連接指令建立相應(yīng)類型的連接;所述集群管理模塊,還用于在所述連接管理模塊建立所述業(yè)務(wù)系統(tǒng)與所述在線服務(wù)器的連接之后,當(dāng)斷開(kāi)與所述在線的服務(wù)器的連接時(shí),刪除所述所選擇的連接實(shí)例中的套接字句柄獲得一個(gè)新的連接實(shí)例,并將獲得的所述新的連接實(shí)例歸還給所述連接管理模塊;所述連接管理模塊,還用于接收所述集群管理模塊歸還的所述新的連接實(shí)例。
[0017]與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點(diǎn):
[0018]本發(fā)明提供的基于連接池的服務(wù)器連接方案,實(shí)時(shí)監(jiān)控服務(wù)器集群,并獲取在線服務(wù)器的信息,然后從在線的服務(wù)器中選擇一個(gè)服務(wù)器與業(yè)務(wù)系統(tǒng)建立連接,保證了提供給業(yè)務(wù)系統(tǒng)的服務(wù)器都是在線的,避免了現(xiàn)有的連接方案中將出現(xiàn)問(wèn)題的服務(wù)器提供給業(yè)務(wù)系統(tǒng)的問(wèn)題,進(jìn)而保證了連接的可靠性。本發(fā)明提供的建立連接的方案,依據(jù)選擇策略以及在線服務(wù)器信息選擇與業(yè)務(wù)系統(tǒng)建立連接的服務(wù)器,能夠根據(jù)各在線的服務(wù)器的現(xiàn)狀合理分配連接任務(wù),避免了現(xiàn)有的連接方式中存在的將多個(gè)連接任務(wù)分配給同一臺(tái)服務(wù)器,而其他服務(wù)器空閑的問(wèn)題。通過(guò)本發(fā)明提供的連接方案不僅能夠保證連接的可靠性,還能夠合理的利用各臺(tái)服務(wù)器的資源。
【專利附圖】
【附圖說(shuō)明】
[0019]圖1是根據(jù)本發(fā)明實(shí)施例一的一種基于連接池的服務(wù)器連接方法的步驟流程圖;
[0020]圖2是根據(jù)本發(fā)明實(shí)施例二的一種基于連接池的服務(wù)器連接方法的步驟流程圖;
[0021]圖3是根據(jù)本發(fā)明實(shí)施例三的一種基于連接池的服務(wù)器連接裝置的結(jié)構(gòu)框圖;
[0022]圖4是一種安裝有基于連接池的服務(wù)器連接裝置的系統(tǒng)的結(jié)構(gòu)框圖。
【具體實(shí)施方式】
[0023]為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和【具體實(shí)施方式】對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說(shuō)明。
[0024]實(shí)施例一
[0025]參照?qǐng)D1,示出了根據(jù)本發(fā)明實(shí)施例一的一種基于連接池的服務(wù)器連接方法的步驟流程圖。
[0026]本實(shí)施例的服務(wù)器連接方法的步驟包括:
[0027]步驟S102:連接池實(shí)時(shí)監(jiān)控服務(wù)器集群中的各臺(tái)服務(wù)器,獲取在線服務(wù)器信息。
[0028]本實(shí)施例中的連接池是一個(gè)通過(guò)封裝而成的靜態(tài)庫(kù),是基于TCP協(xié)議的高并發(fā)低延遲的網(wǎng)絡(luò)通信模塊,可以應(yīng)用于業(yè)務(wù)系統(tǒng)中的各模塊,例如:廣告投放系統(tǒng)中的各模塊。連接池通過(guò)對(duì)服務(wù)器集群中的各臺(tái)服務(wù)器進(jìn)行監(jiān)控,獲得在線的服務(wù)器信息,從在線的服務(wù)器中選擇一臺(tái)服務(wù)器與業(yè)務(wù)系統(tǒng)建立連接。
[0029]其中,服務(wù)器信息可以包括:服務(wù)器標(biāo)號(hào)、中央處理器負(fù)載、剩余內(nèi)存等一種或多種信息。本領(lǐng)域技術(shù)人員可以根據(jù)實(shí)際需求設(shè)置需要獲取的服務(wù)器信息所包含的具體內(nèi)容,例如:可以通過(guò)設(shè)置只獲取服務(wù)器的標(biāo)號(hào);或者只獲取服務(wù)器的標(biāo)號(hào)和剩余內(nèi)存信息。在獲取了在線服務(wù)器信息后連接池能夠自動(dòng)的對(duì)信息進(jìn)行更新。
[0030]步驟S104:連接池接收業(yè)務(wù)系統(tǒng)發(fā)送的與服務(wù)器建立連接的請(qǐng)求。
[0031]業(yè)務(wù)系統(tǒng)需要與某一臺(tái)服務(wù)器建立連接時(shí),向連接池發(fā)送建立連接的請(qǐng)求,連接池依據(jù)業(yè)務(wù)系統(tǒng)發(fā)送的建立連接請(qǐng)求提供給業(yè)務(wù)系統(tǒng)一個(gè)相應(yīng)的連接。
[0032]步驟S106:連接池依據(jù)業(yè)務(wù)系統(tǒng)發(fā)送的與服務(wù)器建立連接的請(qǐng)求,選擇一個(gè)選擇服務(wù)器的策略。
[0033]封裝成靜態(tài)庫(kù)的連接池中包含多種選擇服務(wù)器的策略,例如:隨機(jī)選取一臺(tái)服務(wù)的策略;選擇剩余內(nèi)存最大的服務(wù)器的策略;或是按照服務(wù)器標(biāo)號(hào)大小選擇服務(wù)器標(biāo)號(hào)最大的服務(wù)器的策略等多種選擇策略。當(dāng)連接池應(yīng)用到具體的業(yè)務(wù)系統(tǒng)中時(shí),需要選擇一種選擇策略,并且該連接池在后序選擇服務(wù)器時(shí)都要依據(jù)該策略對(duì)服務(wù)器進(jìn)行選擇。
[0034]步驟S108:連接池依據(jù)選擇策略與在線服務(wù)器信息選擇一臺(tái)在線服務(wù)器。
[0035]連接池在應(yīng)用到業(yè)務(wù)系統(tǒng)中時(shí),已經(jīng)對(duì)應(yīng)了一種選擇服務(wù)器的策略,連接池獲取該選擇策略,同時(shí)依據(jù)獲得的在線的服務(wù)器信息選擇一臺(tái)與業(yè)務(wù)系統(tǒng)建立連接的服務(wù)器。例如:如果連接池在應(yīng)用到業(yè)務(wù)系統(tǒng)中時(shí),對(duì)應(yīng)的選擇服務(wù)器的策略為:按照服務(wù)器標(biāo)號(hào)大小選擇服務(wù)器標(biāo)號(hào)最大的服務(wù)器的策略,那么連接池在選擇服務(wù)器時(shí),從在線服務(wù)器信息中查找服務(wù)器標(biāo)號(hào)最大的服務(wù)器作為與業(yè)務(wù)系統(tǒng)建立連接的服務(wù)器。
[0036]步驟SllO:連接池判斷是否保存了所選擇的在線服務(wù)器的未被占用的連接實(shí)例;若保存了,則執(zhí)行步驟S112 ;若未保存,則執(zhí)行步驟S114。
[0037]連接池中保存了的每個(gè)連接實(shí)例對(duì)應(yīng)有套接字句柄,一個(gè)套接字句柄對(duì)應(yīng)一個(gè)與服務(wù)器間的連接。當(dāng)連接池為業(yè)務(wù)系統(tǒng)提供了連接,業(yè)務(wù)系統(tǒng)使用完連接后會(huì)將該連接返回給連接池,連接池會(huì)繼續(xù)保存該連接對(duì)應(yīng)的套接字句柄,也就是說(shuō)會(huì)繼續(xù)保存套接字句柄對(duì)應(yīng)的連接實(shí)例,會(huì)繼續(xù)維護(hù)與服務(wù)器間的這個(gè)連接。
[0038]連接池在選擇了 一個(gè)與業(yè)務(wù)系統(tǒng)建立連接的服務(wù)器之后,會(huì)進(jìn)一步的判斷是否保存了該服務(wù)器對(duì)應(yīng)的連接實(shí)例,如果連接池中保存了一個(gè)或多個(gè)該服務(wù)器對(duì)應(yīng)的連接實(shí)例,那么進(jìn)一步的判斷各個(gè)連接實(shí)例是否被業(yè)務(wù)系統(tǒng)的其他連接所占用,如果存在未被其他連接占用的連接實(shí)例,則判斷連接池中存在未被占用的連接實(shí)例,如果連接池中保存的所有的與該服務(wù)器間的連接實(shí)例均被業(yè)務(wù)系統(tǒng)的其他連接所占用,則判斷連接池中不存在未被占用的連接實(shí)例。
[0039]步驟S112:若保存了未被占用的連接實(shí)例,連接池則直接選擇未被占用的連接實(shí)例。
[0040]步驟S114:若未保存未被占用的連接實(shí)例,連接池則獲取一個(gè)新的連接實(shí)例,通過(guò)新的連接實(shí)例建立與所選擇的在線服務(wù)器的連接,添加該連接對(duì)應(yīng)的套接字句柄至新的連接實(shí)例;選擇添加了套接字句柄的新的連接實(shí)例。
[0041]連接池會(huì)一直保存新建的這個(gè)連接實(shí)例,直至連接池與在線的服務(wù)器間的這個(gè)連接斷開(kāi)。
[0042]步驟S116:連接池針對(duì)業(yè)務(wù)系統(tǒng)發(fā)送的與服務(wù)器建立連接的請(qǐng)求將所選擇的連接實(shí)例對(duì)應(yīng)的套接字句柄通過(guò)相應(yīng)的接口返回給業(yè)務(wù)系統(tǒng),依據(jù)該套接字句柄建立業(yè)務(wù)系統(tǒng)與所選擇的在線服務(wù)器的連接。[0043]通過(guò)本實(shí)施例提供的基于連接池的服務(wù)器連接方法,實(shí)時(shí)監(jiān)控服務(wù)器集群,并獲取在線服務(wù)器的信息,然后從在線的服務(wù)器中選擇一個(gè)服務(wù)器與業(yè)務(wù)系統(tǒng)建立連接,保證了提供給業(yè)務(wù)系統(tǒng)的服務(wù)器都是在線的,避免了現(xiàn)有的連接方案中將出現(xiàn)問(wèn)題的服務(wù)器提供給業(yè)務(wù)系統(tǒng)的問(wèn)題,進(jìn)而保證了連接的可靠性。本實(shí)施例提供的建立連接的方法,依據(jù)選擇策略以及在線服務(wù)器信息選擇與業(yè)務(wù)系統(tǒng)建立連接的服務(wù)器,能夠根據(jù)各在線的服務(wù)器的現(xiàn)狀合理分配連接任務(wù),避免了現(xiàn)有的連接方式中存在的將多個(gè)連接任務(wù)分配給同一臺(tái)服務(wù)器,而其他服務(wù)器空閑的問(wèn)題。通過(guò)本實(shí)施例提供的連接方法不僅能夠保證連接的可靠性,還能夠合理的利用各臺(tái)服務(wù)器的資源。
[0044]實(shí)施例二
[0045]參照?qǐng)D2,示出了根據(jù)本發(fā)明實(shí)施例二的一種基于連接池的服務(wù)器連接方法的步驟流程圖。
[0046]本實(shí)施例的服務(wù)器連接方法的具體步驟包括:
[0047]步驟S202:連接池接收業(yè)務(wù)系統(tǒng)輸入的長(zhǎng)連接或短連接的連接指令,依據(jù)連接指令建立相應(yīng)類型的連接。
[0048]連接池在封裝成靜態(tài)庫(kù)時(shí)被封裝了兩種建立連接的類型,一種為長(zhǎng)連接另一種為短連接。連接池在應(yīng)用到業(yè)務(wù)系統(tǒng)中時(shí),本領(lǐng)域技術(shù)人員可以根據(jù)業(yè)務(wù)場(chǎng)景選擇連接池在后序建立連接的類型,即是長(zhǎng)連接還是短連接。但是,需要說(shuō)明的是,在選擇完一種類型后連接池在后序建立連接時(shí)都只能遵循一種類型。
[0049]其中,長(zhǎng)連接為:業(yè)務(wù)系統(tǒng)使用完連接池提供的一個(gè)連接后會(huì)返還該連接給連接池,連接池會(huì)繼續(xù)保持與服務(wù)器間的連接;業(yè)務(wù)系統(tǒng)再次請(qǐng)求連接時(shí),當(dāng)連接池選擇的服務(wù)器還是同一臺(tái)服務(wù)器時(shí),會(huì)直接將業(yè)務(wù)系統(tǒng)上次返還的連接提供給業(yè)務(wù)系統(tǒng)。短連接為:業(yè)務(wù)系統(tǒng)使用完連接池提供的一個(gè)連接后會(huì)返還該連接給連接池,連接池?cái)嚅_(kāi)與服務(wù)器間的這個(gè)連接;業(yè)務(wù)系統(tǒng)再次請(qǐng)求連接時(shí),當(dāng)連接池選擇的服務(wù)器還是同一臺(tái)服務(wù)器時(shí),連接池還要重新與服務(wù)器間建立連接,然后才能將連接提供給業(yè)務(wù)系統(tǒng)。
[0050]本實(shí)施例中以連接池建立長(zhǎng)連接為例對(duì)后序的步驟進(jìn)行說(shuō)明。
[0051]步驟S204:連接池實(shí)時(shí)監(jiān)控服務(wù)器集群中的各臺(tái)服務(wù)器,獲取在線服務(wù)器信息。
[0052]本實(shí)施例中連接池是通過(guò)對(duì)服務(wù)器集群中的各臺(tái)服務(wù)器進(jìn)行實(shí)時(shí)監(jiān)控來(lái)獲取在線服務(wù)器的。本領(lǐng)域技術(shù)人員應(yīng)該明了,連接池中的服務(wù)器可以通過(guò)固定IP (InternetProtocol,互聯(lián)網(wǎng)協(xié)議)地址配置到連接池中,還可以一部分通過(guò)固定IP地址配置到連接池中,另一部分通過(guò)對(duì)服務(wù)器集群進(jìn)行監(jiān)控獲得。
[0053]本實(shí)施例中,連接池在實(shí)時(shí)監(jiān)控服務(wù)器集群中的各臺(tái)服務(wù)器,獲取在線服務(wù)器信息的同時(shí)還會(huì)對(duì)各服務(wù)器信息進(jìn)行更新,本實(shí)施例中獲取的在線服務(wù)器信息包括:中央處理器負(fù)載、剩余內(nèi)存。
[0054]步驟S206:連接池按照設(shè)定規(guī)則檢測(cè)各臺(tái)在線服務(wù)器是否可用,刪除不可用的在線服務(wù)器對(duì)應(yīng)的服務(wù)器信息。
[0055]連接池在獲取了在線服務(wù)器信息后,會(huì)實(shí)時(shí)或者每隔設(shè)定時(shí)間間隔的對(duì)個(gè)臺(tái)在線的服務(wù)器進(jìn)行檢測(cè)。檢測(cè)時(shí)可以通過(guò)事先與各在線的服務(wù)器建立連接的方式來(lái)判斷各臺(tái)在線的服務(wù)器是否可用,如果能夠成功建立連接則判定服務(wù)器可用,如果不能成功的建立連接,則判定服務(wù)器不可用,連接池會(huì)刪除不能夠成功建立連接的服務(wù)器對(duì)應(yīng)的服務(wù)器信息。[0056]本領(lǐng)域技術(shù)人員可以根據(jù)實(shí)際需求設(shè)定對(duì)在線的服務(wù)器進(jìn)行檢測(cè)的時(shí)間間隔,可以設(shè)置成每隔10分鐘進(jìn)行一次檢測(cè),也可以設(shè)置成每隔5分鐘進(jìn)行一次檢測(cè),還可以設(shè)置成其他的時(shí)間間隔,在此不做具體限制。
[0057]步驟S208:連接池依據(jù)業(yè)務(wù)系統(tǒng)發(fā)送的與服務(wù)器建立連接的請(qǐng)求,選擇一個(gè)選擇中央處理器負(fù)載最小、剩余內(nèi)存最大的服務(wù)器的策略。
[0058]連接池中包含有多種選擇服務(wù)器的策略,在應(yīng)用到業(yè)務(wù)系統(tǒng)中時(shí)需要選擇一種策略。本實(shí)施例中的連接池在應(yīng)用到業(yè)務(wù)系統(tǒng)中時(shí)選擇了選擇中央處理器負(fù)載最小、剩余內(nèi)存最大的處理器的策略。因此,在接收到業(yè)務(wù)系統(tǒng)發(fā)送的與服務(wù)器建立連接的請(qǐng)求后,連接池提供一個(gè)選擇中央處理器負(fù)載最小、剩余內(nèi)存最大的服務(wù)器的策略。
[0059]步驟S210:連接池依據(jù)選擇的策略與在線服務(wù)器信息選擇一臺(tái)在線的且中央處理器負(fù)載最小、剩余內(nèi)存最大的服務(wù)器。
[0060]由于連接池在應(yīng)用到業(yè)務(wù)系統(tǒng)中后所對(duì)應(yīng)的選擇服務(wù)器的策略為選擇一臺(tái)在線的且中央處理器負(fù)載最小、剩余內(nèi)存最大的服務(wù)器,因此,在選擇服務(wù)器時(shí),就要依據(jù)該策略從在線服務(wù)器信息中選擇一個(gè)臺(tái)符合條件的服務(wù)器。
[0061]步驟S212:連接池判斷是否保存了所選擇的在線服務(wù)器的連接實(shí)例;若未保存,則直接執(zhí)行步驟S218 ;若保存了,則執(zhí)行步驟S214。
[0062]連接池在選擇了服務(wù)器之后,會(huì)進(jìn)一步的判斷在連接池中是否保存了該服務(wù)器的連接實(shí)例,其中連接實(shí)例可以是一個(gè)也可以是多個(gè)。每臺(tái)服務(wù)器可以同時(shí)建立多個(gè)連接,但是每一個(gè)連接都只對(duì)應(yīng)一個(gè)連接實(shí)例。
[0063]步驟S214:當(dāng)連接池中保存了所選擇的在線服務(wù)器的連接實(shí)例時(shí),連接池則進(jìn)一步判斷保存的所選擇的在線服務(wù)器的連接實(shí)例是否已被與業(yè)務(wù)系統(tǒng)建立的其他連接占用;若未被占用,則執(zhí)行步驟S216 ;若已被占用,則執(zhí)行步驟S218。
[0064]連接池中保存了的每個(gè)連接實(shí)例對(duì)應(yīng)有連接信息,其中,連接信息包括:套接字句柄、連接狀態(tài)、連接的服務(wù)器標(biāo)號(hào)。連接池中保存的連接實(shí)例也相當(dāng)于連接池中保存了該連接實(shí)例對(duì)應(yīng)的與服務(wù)器間的連接。連接池中可能保存有所選擇的在線服務(wù)器的一個(gè)連接實(shí)例,也可能保存有多個(gè)連接實(shí)例,那么在進(jìn)行判斷時(shí),要判斷每個(gè)連接實(shí)例是否都被與業(yè)務(wù)系統(tǒng)間的其他連接所占用,如果保存的所選擇的那臺(tái)服務(wù)器對(duì)應(yīng)的所有連接實(shí)例均被占用,則要執(zhí)行步驟S218,如果保存的所選擇的那臺(tái)服務(wù)器對(duì)應(yīng)的連接實(shí)例均存在未被占用的,則執(zhí)行步驟S216。
[0065]步驟S216:當(dāng)連接池中保存的所選擇的在線服務(wù)器的連接實(shí)例未被占用時(shí),則直接選擇所述連接實(shí)例,執(zhí)行步驟S220。
[0066]步驟S218:若未保存所選擇的在線的服務(wù)器的連接實(shí)例,或保存的連接實(shí)例已被占用時(shí),連接池則獲取一個(gè)新的連接實(shí)例,通過(guò)新的連接實(shí)例建立與所選擇的在線服務(wù)器的連接,添加該連接對(duì)應(yīng)的套接字句柄至新的連接實(shí)例;選擇添加了該套接字句柄的新的連接實(shí)例,執(zhí)行步驟S220。
[0067]連接池通過(guò)新的連接實(shí)例建立與所選擇的在線服務(wù)器的連接時(shí),采用半異步方式,即先非阻塞連接,若失敗,則變?yōu)樽枞竭B接。其中,非阻塞的與選擇的在線服務(wù)器間建立連接是指,連接池在與所選擇的在線服務(wù)器建立連接時(shí),無(wú)論連接是否建立完成,連接池還可以進(jìn)行其他操作,例如:與其他服務(wù)器建立其他連接。阻塞式的與在線服務(wù)器間建立連接是指,連接池在與所選擇的在線服務(wù)器建立連接時(shí),只有在連接建立完成后連接池才可以進(jìn)行其他操作。
[0068]連接池與所選擇的在線服務(wù)器的連接建立完成后,連接池能夠獲取該連接對(duì)應(yīng)的套接字句柄,并將該套接字句柄保存到對(duì)應(yīng)的連接實(shí)例中,將該套接字句柄返回給業(yè)務(wù)系統(tǒng)建立業(yè)務(wù)系統(tǒng)與所選擇的服務(wù)器間的連接。
[0069]步驟S220:連接池針對(duì)業(yè)務(wù)系統(tǒng)發(fā)送的與服務(wù)器建立連接的請(qǐng)求將所選擇的連接實(shí)例對(duì)應(yīng)的套接字句柄通過(guò)相應(yīng)的接口返回給業(yè)務(wù)系統(tǒng),依據(jù)該套接字句柄建立業(yè)務(wù)系統(tǒng)與所選擇的在線服務(wù)器的連接。
[0070]在建立了業(yè)務(wù)系統(tǒng)與所選擇的在線服務(wù)器的連接后,連接池還會(huì)提供相應(yīng)的接收、發(fā)送接口供業(yè)務(wù)系統(tǒng)與所選擇的在線服務(wù)器間進(jìn)行消息交互。業(yè)務(wù)系統(tǒng)通過(guò)套接字句柄調(diào)用連接池中提供的接收、發(fā)送接口。連接池提供的供業(yè)務(wù)系統(tǒng)與所選擇的在線服務(wù)器間進(jìn)行消息交互接口采用半異步發(fā)送、接收機(jī)制,即先非阻塞發(fā)送或接收,若未完成,則改為阻塞式發(fā)送或接收。
[0071]業(yè)務(wù)系統(tǒng)在使用完該連接后會(huì)將連接返回給連接池,連接池會(huì)維護(hù)該連接并不會(huì)斷開(kāi)與所選擇的在線服務(wù)器信息間的連接,以供業(yè)務(wù)系統(tǒng)再次發(fā)起請(qǐng)求時(shí)使用。但是,如果服務(wù)器出現(xiàn)問(wèn)題或者是連接池不再需要與服務(wù)器間的這個(gè)連接時(shí),連接池?cái)嚅_(kāi)與所選擇的在線服務(wù)器的連接,連接池會(huì)刪除所選擇的連接實(shí)例中的套接字句柄,獲得一個(gè)新的連接實(shí)例。
[0072]通過(guò)本實(shí)施例提供的基于連接池的服務(wù)器連接方法,首先,可以實(shí)現(xiàn)對(duì)長(zhǎng)短連接的控制,其次,可以實(shí)時(shí)監(jiān)控服務(wù)器集群,獲取在線服務(wù)器的信息并對(duì)信息進(jìn)行更新,與此同時(shí)實(shí)時(shí)或者按照設(shè)定時(shí)間間隔對(duì)各在線的服務(wù)器進(jìn)行檢測(cè),將不能滿足連接標(biāo)準(zhǔn)的服務(wù)器所對(duì)應(yīng)的服務(wù)器信息刪除,保證了提供給業(yè)務(wù)系統(tǒng)的服務(wù)器都是在線的且可用的,避免了現(xiàn)有的連接方案中將出現(xiàn)問(wèn)題的服務(wù)器提供給業(yè)務(wù)系統(tǒng)的問(wèn)題,進(jìn)而保證了連接的可靠性。本實(shí)施例提供的連接方法,依據(jù)選擇策略以及在線服務(wù)器信息選擇與業(yè)務(wù)系統(tǒng)建立連接的服務(wù)器,能夠根據(jù)各在線的服務(wù)器的現(xiàn)狀合理分配連接任務(wù),避免了現(xiàn)有的連接方式中存在的將多個(gè)連接任務(wù)分配給同一臺(tái)服務(wù)器,而其他服務(wù)器空閑的問(wèn)題,通過(guò)本實(shí)施例提供的連接方法不僅能夠保證連接的可靠性,還能夠合理的利用各臺(tái)服務(wù)器的資源。同時(shí),在通過(guò)本實(shí)施例中提供的連接方法在與所選擇的服務(wù)器建立連接時(shí),采用半異步方式先阻塞連接,若失敗則變?yōu)樽枞竭B接,提高了連接效率;采用半異步發(fā)送、接收機(jī)制提高了發(fā)送、接收消息的效率。
[0073]實(shí)施例三
[0074]參照?qǐng)D3,示出了本發(fā)明實(shí)施例三中的一種基于連接池的服務(wù)器連接裝置的結(jié)構(gòu)框圖。
[0075]本實(shí)施例的基于連接池的服務(wù)器連接裝置包括:集群監(jiān)控模塊302,用于實(shí)時(shí)監(jiān)控服務(wù)器集群中的各臺(tái)服務(wù)器,獲取在線服務(wù)器信息;連接管理模塊304,用于接收業(yè)務(wù)系統(tǒng)發(fā)送的與服務(wù)器建立連接的請(qǐng)求;還用于為集群管理模塊308提供新的連接實(shí)例;策略管理模塊306,用于依據(jù)業(yè)務(wù)系統(tǒng)發(fā)送的與服務(wù)器建立連接的請(qǐng)求,選擇一個(gè)選擇服務(wù)器的策略;集群管理模塊308,用于依據(jù)選擇的策略與在線服務(wù)器信息選擇一臺(tái)在線服務(wù)器;集群管理模塊308,還用于判斷是否保存了所選擇的在線服務(wù)器的未被占用的連接實(shí)例;若保存了所選擇的在線服務(wù)器的未被占用的連接實(shí)例,則直接選擇該連接實(shí)例,其中,保存了的每個(gè)連接實(shí)例對(duì)應(yīng)有套接字句柄;若未保存所選擇的在線服務(wù)器的未被占用的連接實(shí)例,則獲取一個(gè)新的連接實(shí)例,通過(guò)新的連接實(shí)例建立與所選擇的在線服務(wù)器的連接,添加該連接對(duì)應(yīng)的套接字句柄至新的連接實(shí)例;選擇添加了該套接字句柄的新的連接實(shí)例;連接管理模塊304,還用于針對(duì)業(yè)務(wù)系統(tǒng)發(fā)送的與服務(wù)器建立連接的請(qǐng)求將所選擇的連接實(shí)例對(duì)應(yīng)的套接字句柄通過(guò)相應(yīng)的接口返回給業(yè)務(wù)系統(tǒng),依據(jù)該套接字句柄建立業(yè)務(wù)系統(tǒng)與所選擇的在線服務(wù)器的連接。
[0076]優(yōu)選地,基于連接池的服務(wù)器連接裝置還包括:健康檢測(cè)模塊310,用于在集群監(jiān)控模塊302獲取在線服務(wù)器信息之后,按照設(shè)定規(guī)則檢測(cè)各臺(tái)在線的服務(wù)器是否可用,刪除不可用的在線服務(wù)器對(duì)應(yīng)的服務(wù)器信息。
[0077]優(yōu)選地,服務(wù)器信息包括:中央處理器負(fù)載、剩余內(nèi)存;策略管理模塊306依據(jù)業(yè)務(wù)系統(tǒng)發(fā)送的與服務(wù)器建立連接的請(qǐng)求,選擇一個(gè)選擇服務(wù)器的策略時(shí):依據(jù)業(yè)務(wù)系統(tǒng)發(fā)送的與服務(wù)器建立連接的請(qǐng)求,選擇一個(gè)選擇中央處理器負(fù)載最小、剩余內(nèi)存最大的服務(wù)器的策略;集群管理模塊308依據(jù)選擇策略與所選擇的在線服務(wù)器信息選擇一臺(tái)在線服務(wù)器時(shí):依據(jù)選擇的策略與所選擇的在線的服務(wù)器信息選擇一臺(tái)在線的且中央處理器負(fù)載最小、剩余內(nèi)存最大的服務(wù)器。
[0078]優(yōu)選地,集群管理模塊308還用于在集群監(jiān)控模塊302實(shí)時(shí)監(jiān)控服務(wù)器中的各臺(tái)服務(wù)器,獲取在線服務(wù)器信息之前,接收業(yè)務(wù)系統(tǒng)輸入的長(zhǎng)連接或短連接的連接指令,依據(jù)連接指令建立相應(yīng)類型的連接;集群管理模塊308,還用于在連接管理模塊建立業(yè)務(wù)系統(tǒng)與所選擇的在線服務(wù)器的連接之后,當(dāng)斷開(kāi)與所選擇的在線的服務(wù)器的連接時(shí),刪除所選擇的連接實(shí)例中的套接字句柄獲得一個(gè)新的連接實(shí)例,并將獲得的新的連接實(shí)例歸還給連接管理模塊304 ;連接管理模塊304,還用于接收集群管理模塊歸還的新的連接實(shí)例。
[0079]本實(shí)施例的基于連接池的服務(wù)器連接裝置用于實(shí)現(xiàn)前述多個(gè)方法實(shí)施例中相應(yīng)的服務(wù)器連接方法,并且具有相應(yīng)的方法實(shí)施的有益效果,在此不再贅述。
[0080]下面結(jié)合具體的應(yīng)用場(chǎng)景以一具體的實(shí)例對(duì)本申請(qǐng)中的基于連接池的服務(wù)器連接裝置以及該裝置應(yīng)用到業(yè)務(wù)系統(tǒng)中后為業(yè)務(wù)系統(tǒng)建立與服務(wù)器間的連接的具體過(guò)程進(jìn)行一下介紹。
[0081]如圖4所示,基于連接池的服務(wù)器連接裝置為一個(gè)連接池402其應(yīng)用到了業(yè)務(wù)系統(tǒng)404中,連接池402分為5個(gè)模塊:連接管理模塊4022、集群管理模塊4024、健康檢測(cè)模塊4026、策略管理模塊4028、集群監(jiān)控模塊40210。業(yè)務(wù)系統(tǒng)所對(duì)應(yīng)的服務(wù)器集群406由集群監(jiān)控模塊40210監(jiān)控,業(yè)務(wù)系統(tǒng)通過(guò)連接管理模塊4022所提供的相應(yīng)的接口與服務(wù)器進(jìn)行消息的交互。
[0082]本實(shí)例中的連接池既可支持長(zhǎng)連接,也可支持短連接,并且所提供的線程是安全的。本實(shí)例中的連接池是通過(guò)封裝形成的靜態(tài)庫(kù),可供廣告投放系統(tǒng)各模塊使用具有通用性。在對(duì)連接池提供服務(wù)器連接的具體過(guò)程進(jìn)行介紹之前,先對(duì)連接池中的各個(gè)模塊的作用進(jìn)行以下簡(jiǎn)單的說(shuō)明。
[0083]策略管理模塊4028:在策略管理模塊中設(shè)置有多種選擇服務(wù)器的策略,其主要實(shí)現(xiàn)Server (服務(wù)器)集群中Server的選擇策略。業(yè)務(wù)系統(tǒng)向Server集群中的Serve發(fā)送請(qǐng)求時(shí),策略管理模塊408提供一個(gè)選擇服務(wù)器的策略以供連接池選擇某一個(gè)合適的Server。
[0084]健康檢測(cè)模塊4026:主要實(shí)現(xiàn)對(duì)Server集群中各Server的健康狀態(tài)進(jìn)行檢查,以判斷某一 Server是否可用,并修改集群管理模塊404中管理的該Server的狀態(tài),將不可用的Server對(duì)應(yīng)的服務(wù)器信息從集群管理模塊404中刪除。
[0085]集群管理模塊4024:主要實(shí)現(xiàn)Server集群中對(duì)各Server的狀態(tài)管理。連接某Server時(shí),增加該Server的該連接對(duì)應(yīng)的連接信息到相應(yīng)的連接實(shí)例中,并將該連接實(shí)例增加到集群管理模塊4024中;斷開(kāi)與某Server的連接時(shí),刪除該連接對(duì)應(yīng)的連接實(shí)例中的連接信息,并歸還刪除連接信息后的連接實(shí)例即新的連接實(shí)例到連接管理模塊4022。其中,連接信息保存在連接實(shí)例中,連接信息包括:socket句柄、連接狀態(tài)、連接的server信息,連接的server信息包括:服務(wù)器的標(biāo)號(hào)。
[0086]連接管理模塊4022:主要實(shí)現(xiàn)集群管理模塊4024中新的連接實(shí)例的獲取與歸還以及消息發(fā)送接收接口的封裝。集群管理模塊4024需要獲取與服務(wù)器間的連接時(shí),則從連接管理器4022中獲取一個(gè)新的連接實(shí)例,用以保存與服務(wù)器間的連接對(duì)應(yīng)的連接信息,如socket (套接字)句柄、連接狀態(tài)、連接的server信息等;集群管理模塊4024釋放與某一服務(wù)器間的連接時(shí),則將該連接對(duì)應(yīng)的連接實(shí)例重置后,歸還到連接管理模塊4022。其中,重置連接實(shí)例也就是說(shuō)將連接實(shí)例中的連接信息刪除,生成一個(gè)新的連接實(shí)例。
[0087]集群監(jiān)控模塊40210:監(jiān)控Server集群中各臺(tái)在線的Server,并負(fù)責(zé)更新集群管理模塊4024中獲取的在線Server的服務(wù)器信息。
[0088]在介紹完連接池中包含的各個(gè)模塊的具體功能后,下面介紹一下應(yīng)用了該連接池的業(yè)務(wù)系統(tǒng)在與服務(wù)器建立連接時(shí)的整體思想:當(dāng)業(yè)務(wù)系統(tǒng)要給Server集群發(fā)送請(qǐng)求時(shí),先向連接池請(qǐng)求一個(gè)連接,連接池返回給業(yè)務(wù)系統(tǒng)一個(gè)可用連接對(duì)應(yīng)的套接字句柄,由業(yè)務(wù)系統(tǒng)通過(guò)套接字句柄調(diào)用連接池的發(fā)送、接收接口進(jìn)行消息交互。下面介紹一下與服務(wù)器建立連接的具體的過(guò)程:
[0089]S1:集群管理模塊4024可以配置指定的Server信息,或通過(guò)集群監(jiān)控模塊獲取在線Server的服務(wù)器信息,并更新在線Server的服務(wù)器信息。
[0090]S2:健康檢測(cè)模塊4026每隔設(shè)定時(shí)間間隔,對(duì)集群管理模塊4024中的各臺(tái)Server進(jìn)行狀態(tài)檢查,enable (啟用)新上線的可用Server, disable (刪除)下線或異常的 Server。
[0091]S3:業(yè)務(wù)系統(tǒng)通過(guò)連接管理模塊4022提供的接口向連接池發(fā)送與服務(wù)器建立連接的請(qǐng)求。
[0092]S4:連接管理模塊4022將業(yè)務(wù)系統(tǒng)發(fā)送的建立連接的請(qǐng)求發(fā)送至集群管理模塊4024向集群管理模塊4024請(qǐng)求一個(gè)可用Server的可用連接。
[0093]S5:集群管理模塊4024通過(guò)策略管理模塊408提供的選擇服務(wù)器的策略選擇一個(gè)合適的Server。
[0094]S6:判斷集群管理模塊4024中是否維護(hù)了該Server的連接信息,也就是判斷是否保存了該Server對(duì)應(yīng)的連接實(shí)例,在連接實(shí)例中存儲(chǔ)有該Server的連接信息。
[0095]S7:如果沒(méi)有可用的連接實(shí)例,集群管理模塊4024則從連接管理模塊402中獲取一個(gè)新的連接實(shí)例,通過(guò)獲取的新的連接實(shí)例建立與該Server間的連接,并交給集群管理模塊4024管理該連接實(shí)例;如果有空閑可用的連接實(shí)例,則使用現(xiàn)成的連接實(shí)例。[0096]其中,空閑可用的連接實(shí)例相當(dāng)于在連接管理模塊中存儲(chǔ)的該Server的未被占用的連接實(shí)例。集群管理模塊4024通過(guò)獲取的新的連接實(shí)例建立與該Server間的連接時(shí)采用半異步方式,先非阻塞連接,若失敗,則變?yōu)樽枞竭B接。
[0097]S8:連接管理模塊4022將連接實(shí)例對(duì)應(yīng)的套接字句柄通過(guò)相應(yīng)的接口返回給業(yè)務(wù)系統(tǒng)。
[0098]S9:業(yè)務(wù)系統(tǒng)通過(guò)連接管理模塊4022提供的套接字句柄調(diào)用連接管理模塊4022中的發(fā)送、接收接口進(jìn)行消息的發(fā)送、接收。
[0099]連接管理模塊4022中的發(fā)送、接收接口采用半異步發(fā)送、接收機(jī)制,即先非阻塞發(fā)送或接收,若未完成,則改為阻塞式發(fā)送或接收。
[0100]當(dāng)業(yè)務(wù)系統(tǒng)使用完與服務(wù)器的連接后,業(yè)務(wù)系統(tǒng)歸還連接給連接池;集群管理模塊4024將用完的連接對(duì)應(yīng)的連接實(shí)例重置后生成的新的連接實(shí)例,并將用完重置后生成的新的連接實(shí)例歸還連接管理模塊4022 ;連接管理模塊4022維護(hù)集群管理模塊4024用完重置后生成的新的連接實(shí)例,以便集群管理模塊4024再次向連接管理模塊獲取新的連接,節(jié)省輸入輸出開(kāi)支。
[0101]本實(shí)例中將整個(gè)連接池封裝成靜態(tài)庫(kù),采用連接池的思想,節(jié)省套接字資源;設(shè)計(jì)出區(qū)分長(zhǎng)、短連接,實(shí)現(xiàn)對(duì)Server集群監(jiān)控及自定義選擇服務(wù)器決策的連接池,并且在連接池中封裝了發(fā)送、接收接口。本實(shí)例中的連接池采用半異步方式,先非阻塞連接,若失敗,則變?yōu)樽枞竭B接,提高了連接效率;采用半異步發(fā)送、接收機(jī)制,即先非阻塞發(fā)送或接收,若未完成,則改為阻塞式發(fā)送或接收,提高了發(fā)送、接收消息的效率。通過(guò)本實(shí)例中連接池能夠高并發(fā)、高性能的前提下,實(shí)現(xiàn)長(zhǎng)短連接控制、集群監(jiān)控,使用更加方便、快捷,功能更強(qiáng)大。
[0102]本說(shuō)明書(shū)中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見(jiàn)即可。對(duì)于裝置實(shí)施例而言,由于其與方法實(shí)施例基本相似,所以描述的比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法實(shí)施例的部分說(shuō)明即可。
[0103]以上對(duì)本發(fā)明所提供的基于連接池的服務(wù)器連接方法和裝置進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說(shuō)明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在【具體實(shí)施方式】及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說(shuō)明書(shū)內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。
【權(quán)利要求】
1.一種基于連接池的服務(wù)器連接方法,其特征在于,包括: 實(shí)時(shí)監(jiān)控服務(wù)器集群中的各臺(tái)服務(wù)器,獲取在線服務(wù)器信息; 接收業(yè)務(wù)系統(tǒng)發(fā)送的與服務(wù)器建立連接的請(qǐng)求; 依據(jù)所述建立連接的請(qǐng)求,選擇一個(gè)選擇服務(wù)器的策略; 依據(jù)所述策略與所述在線服務(wù)器信息選擇一臺(tái)在線服務(wù)器; 判斷是否保存了所選擇的在線服務(wù)器的未被占用的連接實(shí)例; 若保存了所述連接實(shí)例,則直接選擇所述連接實(shí)例,其中,保存了的每個(gè)所述連接實(shí)例對(duì)應(yīng)有套接字句柄; 若未保存所述連接實(shí)例,則獲取一個(gè)新的連接實(shí)例,通過(guò)所述新的連接實(shí)例建立與所選擇的在線服務(wù)器的連接,添加所述連接對(duì)應(yīng)的套接字句柄至所述新的連接實(shí)例;選擇添加了所述套接字句柄的新的連接實(shí)例; 針對(duì)所述建立連接的請(qǐng)求將所選擇的連接實(shí)例對(duì)應(yīng)的套接字句柄通過(guò)相應(yīng)的接口返回給所述業(yè)務(wù)系統(tǒng),依據(jù)所述套接字句柄建立所述業(yè)務(wù)系統(tǒng)與所選擇的在線服務(wù)器的連接。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,在所述實(shí)時(shí)監(jiān)控服務(wù)器集群中的各臺(tái)服務(wù)器,獲取在線服務(wù)器信息步驟之后,還包括: 按照設(shè)定規(guī)則檢測(cè)各臺(tái)在線服務(wù)器是否可用,刪除不可用的在線服務(wù)器對(duì)應(yīng)的服務(wù)器信息。
3.根據(jù)權(quán)利要求1或2任一項(xiàng)所述的方法,其特征在于,所述服務(wù)器信息包括:中央處理器負(fù)載、剩余內(nèi)存;所述依據(jù)所述建立連接的請(qǐng)求,選擇一個(gè)選擇服務(wù)器的策略步驟包括: 依據(jù)所述建立連接的請(qǐng)求,選擇一個(gè)選擇中央處理器負(fù)載最小、剩余內(nèi)存最大的服務(wù)器的策略; 所述依據(jù)所述策略與所述在線服務(wù)器信息選擇一臺(tái)在線服務(wù)器的步驟包括: 依據(jù)所述策略與所述在線服務(wù)器信息選擇一臺(tái)在線的且中央處理器負(fù)載最小、剩余內(nèi)存最大的服務(wù)器。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述判斷是否保存了所選擇的在線服務(wù)器的未被占用的連接實(shí)例步驟包括: 判斷是否保存了所選擇的在線服務(wù)器的連接實(shí)例;若保存了所述連接實(shí)例,則進(jìn)一步判斷所述連接實(shí)例是否已被與所述業(yè)務(wù)系統(tǒng)建立的其他連接占用;若所述連接實(shí)例未被占用,則判斷結(jié)果為保存了所選擇的在線服務(wù)器的未被占用的連接實(shí)例。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,在所述實(shí)時(shí)監(jiān)控服務(wù)器集群中的各臺(tái)服務(wù)器,獲取在線服務(wù)器信息步驟之前,還包括: 接收所述業(yè)務(wù)系統(tǒng)輸入的長(zhǎng)連接或短連接的連接指令,依據(jù)所述連接指令建立相應(yīng)類型的連接。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,在所述依據(jù)所述套接字句柄建立所述業(yè)務(wù)系統(tǒng)與所選擇的在線服務(wù)器的連接步驟之后,還包括: 當(dāng)斷開(kāi)與所選擇的在線服務(wù)器的連接時(shí),刪除所述所選擇的連接實(shí)例中的套接字句柄,獲得一個(gè)新的連接實(shí)例。
7.一種基于連接池的服務(wù)器連接裝置,其特征在于,包括: 集群監(jiān)控模塊,用于實(shí)時(shí)監(jiān)控服務(wù)器集群中的各臺(tái)服務(wù)器,獲取在線服務(wù)器信息; 連接管理模塊,用于接收業(yè)務(wù)系統(tǒng)發(fā)送的與服務(wù)器建立連接的請(qǐng)求;策略管理模塊,用于依據(jù)所述建立連接的請(qǐng)求,選擇一個(gè)選擇服務(wù)器的策略; 集群管理模塊,用于依據(jù)所述策略與所述在線服務(wù)器信息選擇一臺(tái)在線服務(wù)器;所述集群管理模塊,還用于判斷是否保存了所選擇的在線服務(wù)器的未被占用的連接實(shí)例;若保存了所述連接實(shí)例,則直接選擇所述連接實(shí)例,其中,保存了的每個(gè)所述連接實(shí)例對(duì)應(yīng)有套接字句柄;若未保存所述連接實(shí)例,則獲取一個(gè)新的連接實(shí)例,通過(guò)所述新的連接實(shí)例建立與所選擇的在線服務(wù)器的連接,添加所述連接對(duì)應(yīng)的套接字句柄至所述新的連接實(shí)例;選擇添加了所述套接字句柄的新的連接實(shí)例; 所述連接管理模塊,還用于針對(duì)所述建立連接的請(qǐng)求將所選擇的連接實(shí)例對(duì)應(yīng)的套接字句柄通過(guò)相應(yīng)的接口返回給所述業(yè)務(wù)系統(tǒng),依據(jù)所述套接字句柄建立所述業(yè)務(wù)系統(tǒng)與所選擇的在線服務(wù)器的連接。
8.根據(jù)權(quán)利要求 7所述的裝置,其特征在于,所述裝置還包括: 健康檢測(cè)模塊,用于在所述集群監(jiān)控模塊獲取在線服務(wù)器信息之后,按照設(shè)定規(guī)則檢測(cè)各臺(tái)在線的服務(wù)器是否可用,刪除不可用的在線服務(wù)器對(duì)應(yīng)的服務(wù)器信息。
9.根據(jù)權(quán)利要求7或8任一項(xiàng)所述的裝置,其特征在于,所述服務(wù)器信息包括:中央處理器負(fù)載、剩余內(nèi)存; 所述策略管理模塊依據(jù)所述建立連接的請(qǐng)求,選擇一個(gè)選擇服務(wù)器的策略時(shí):依據(jù)所述建立連接的請(qǐng)求,選擇一個(gè)選擇中央處理器負(fù)載最小、剩余內(nèi)存最大的服務(wù)器的策略; 所述集群管理模塊依據(jù)所述策略與所述在線服務(wù)器信息選擇一臺(tái)在線服務(wù)器時(shí):依據(jù)所述策略與所述在線的服務(wù)器信息選擇一臺(tái)在線的且中央處理器負(fù)載最小、剩余內(nèi)存最大的服務(wù)器。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于, 所述集群管理模塊,還用于在所述集群監(jiān)控模塊實(shí)時(shí)監(jiān)控服務(wù)器中的各臺(tái)服務(wù)器,獲取在線服務(wù)器信息之前,接收所述業(yè)務(wù)系統(tǒng)輸入的長(zhǎng)連接或短連接的連接指令,依據(jù)所述連接指令建立相應(yīng)類型的連接; 所述集群管理模塊,還用于在所述連接管理模塊建立所述業(yè)務(wù)系統(tǒng)與所述在線服務(wù)器的連接之后,當(dāng)斷開(kāi)與所述在線的服務(wù)器的連接時(shí),刪除所述所選擇的連接實(shí)例中的套接字句柄獲得一個(gè)新的連接實(shí)例,并將獲得的所述新的連接實(shí)例歸還給所述連接管理模塊; 所述連接管理模塊,還用于接收所述集群管理模塊歸還的所述新的連接實(shí)例。
【文檔編號(hào)】H04L12/24GK103795569SQ201410030973
【公開(kāi)日】2014年5月14日 申請(qǐng)日期:2014年1月22日 優(yōu)先權(quán)日:2014年1月22日
【發(fā)明者】羅峰, 黃蘇支, 李娜 申請(qǐng)人:億贊普(北京)科技有限公司