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