專(zhuān)利名稱(chēng):一種動(dòng)態(tài)共享連接的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于網(wǎng)絡(luò)技術(shù)領(lǐng)域,具體來(lái)說(shuō)是提供實(shí)現(xiàn)服務(wù)器集群負(fù)載均衡的動(dòng)態(tài)共享連接方法和系統(tǒng)。
背景技術(shù):
隨著各類(lèi)應(yīng)用系統(tǒng)訪問(wèn)量的不斷增加,只部署一臺(tái)服務(wù)器的系統(tǒng)已經(jīng)不能滿(mǎn)足要求,多數(shù)系統(tǒng)通過(guò)增加相同功能的多臺(tái)服務(wù)器配合適當(dāng)?shù)呢?fù)載均衡機(jī)制來(lái)擴(kuò)大系統(tǒng)容量,提升系統(tǒng)性能。已知的負(fù)載均衡方案有許多種,例如通過(guò)DNS的輪詢(xún)機(jī)制實(shí)現(xiàn)、基于應(yīng)用軟件的實(shí)現(xiàn)等等,最常用的方法是采用專(zhuān)門(mén)的負(fù)載均衡器。負(fù)載均衡方案雖然解決了服務(wù)器集群的流量分配,會(huì)話(huà)保持等問(wèn)題,但并不能解決服務(wù)器擴(kuò)容帶來(lái)的所有問(wèn)題,共享連接就是一類(lèi)。
當(dāng)負(fù)載均衡組網(wǎng)下的服務(wù)器集群和其他外部系統(tǒng)交互時(shí)需要建立連接,如果僅僅是按照上述方案,那么服務(wù)器集群中的所有服務(wù)器是對(duì)等的,每個(gè)服務(wù)器應(yīng)用都會(huì)和外部系統(tǒng)建立連接,但在實(shí)際中外部系統(tǒng)往往出于組網(wǎng)、安全等方面的考慮只接收有限數(shù)目、特定地址的連接,如圖1所示,在實(shí)際環(huán)境中部分短消息網(wǎng)關(guān)或短消息中心就對(duì)接入的物理連接數(shù)量類(lèi)型做限制,此時(shí)就會(huì)出現(xiàn)與外部系統(tǒng)連接建立失敗的情況。
目前,現(xiàn)有技術(shù)是在服務(wù)器集群和外部系統(tǒng)之間增加一個(gè)代理服務(wù)器,如圖2所示,服務(wù)器集群與代理服務(wù)器通過(guò)私有協(xié)議交互,而代理服務(wù)器負(fù)責(zé)與外部系統(tǒng)連接。這樣僅由代理服務(wù)器與外部系統(tǒng)交互,避免了由服務(wù)器組中服務(wù)器的數(shù)目不確定帶來(lái)的與外部系統(tǒng)建立多條連接的問(wèn)題。
顯然,由于多增加一臺(tái)代理服務(wù)器,增加了軟件成本和硬件成本;需要專(zhuān)門(mén)維護(hù)服務(wù)器集群和代理服務(wù)器之間的接口協(xié)議;可靠性不強(qiáng),如果代理服務(wù)器無(wú)法正常工作,就會(huì)使整個(gè)系統(tǒng)癱瘓,無(wú)法體現(xiàn)負(fù)載均衡系統(tǒng)的高可靠性。
發(fā)明內(nèi)容
為了解決以上問(wèn)題,本發(fā)明提供了一種動(dòng)態(tài)共享連接的方法,該方法包含以下步驟服務(wù)器集群中的各個(gè)服務(wù)器保存所述集群中所有服務(wù)器的信息;服務(wù)器集群中的各個(gè)服務(wù)器共同選舉產(chǎn)生主節(jié)點(diǎn)服務(wù)器和次節(jié)點(diǎn)服務(wù)器;服務(wù)器集群中的被選舉為主節(jié)點(diǎn)的服務(wù)器與外部系統(tǒng)建立連接;服務(wù)器集群中的次節(jié)點(diǎn)服務(wù)器當(dāng)需要與外部系統(tǒng)連接時(shí),各個(gè)次節(jié)點(diǎn)服務(wù)器通過(guò)主節(jié)點(diǎn)服務(wù)器,與外部系統(tǒng)建立連接。
其中,所述所有服務(wù)器的信息包括服務(wù)器集群中所有服務(wù)器的句柄。
所述服務(wù)器集群中的次節(jié)點(diǎn)服務(wù)器當(dāng)需要與外部系統(tǒng)連接時(shí),各個(gè)次節(jié)點(diǎn)服務(wù)器通過(guò)主節(jié)點(diǎn)服務(wù)器,與外部系統(tǒng)建立連接的步驟中進(jìn)一步包括,次節(jié)點(diǎn)服務(wù)器獲取主節(jié)點(diǎn)服務(wù)器上的句柄,調(diào)用主節(jié)點(diǎn)服務(wù)器遠(yuǎn)程接口創(chuàng)建連接。
所述調(diào)用主節(jié)點(diǎn)服務(wù)器遠(yuǎn)程接口是通過(guò)交互單元編程語(yǔ)言平臺(tái)J2EE的Java管理擴(kuò)展JMX服務(wù)實(shí)現(xiàn)的,或者通過(guò)J2EE的Java消息服務(wù)JMS、Enterprise JavaBean技術(shù)實(shí)現(xiàn)。
所述服務(wù)器集群中的各個(gè)服務(wù)器根據(jù)所述信息共同選舉產(chǎn)生主節(jié)點(diǎn)服務(wù)器和次節(jié)點(diǎn)服務(wù)器的步驟中,服務(wù)器集群中的各個(gè)服務(wù)器比較各自的IP地址和/或交互單元編程語(yǔ)言平臺(tái)J2EE的Java管理擴(kuò)展JMX端口的大小來(lái)選舉主、次節(jié)點(diǎn)服務(wù)器。
選舉產(chǎn)生主節(jié)點(diǎn)服務(wù)器和次節(jié)點(diǎn)服務(wù)器的過(guò)程如下A.遍歷各個(gè)服務(wù)器保存的所有服務(wù)器的信息;判斷是否已經(jīng)選舉出了正式的主節(jié)點(diǎn)服務(wù)器,如果是則選舉結(jié)束,返回當(dāng)前主節(jié)點(diǎn);如果否,則繼續(xù)以下步驟;B.判斷是否存在臨時(shí)主節(jié)點(diǎn)服務(wù)器;C.如果臨時(shí)主節(jié)點(diǎn)服務(wù)器不存在,則將第一個(gè)節(jié)點(diǎn)作為臨時(shí)主節(jié)點(diǎn);D.如果臨時(shí)主節(jié)點(diǎn)存在且當(dāng)前節(jié)點(diǎn)不是最后一個(gè)節(jié)點(diǎn),則比較當(dāng)前節(jié)點(diǎn)和臨時(shí)主節(jié)點(diǎn)的IP地址,如果當(dāng)前節(jié)點(diǎn)IP地址比臨時(shí)主節(jié)點(diǎn)IP地址小,則由當(dāng)前節(jié)點(diǎn)作為臨時(shí)主節(jié)點(diǎn),進(jìn)入下一次循環(huán),執(zhí)行步驟A;如果臨時(shí)主節(jié)點(diǎn)存在且當(dāng)前節(jié)點(diǎn)是最后一個(gè)節(jié)點(diǎn),則比較當(dāng)前節(jié)點(diǎn)和臨時(shí)主節(jié)點(diǎn)的IP地址,如果當(dāng)前節(jié)點(diǎn)IP地址比臨時(shí)主節(jié)點(diǎn)IP地址小,則由當(dāng)前節(jié)點(diǎn)作為正式主節(jié)點(diǎn),其他節(jié)點(diǎn)為次節(jié)點(diǎn),否則由臨時(shí)主節(jié)點(diǎn)作為正式主節(jié)點(diǎn),其他節(jié)點(diǎn)為次節(jié)點(diǎn)。
E.遍歷服務(wù)器集群中的所有服務(wù)器后,選舉結(jié)束,將主節(jié)點(diǎn)和各個(gè)次節(jié)點(diǎn)的信息記錄到各個(gè)服務(wù)器中。
本發(fā)明還提供了一種在負(fù)載均衡體系中動(dòng)態(tài)共享連接的系統(tǒng),所述服務(wù)器集群中的各個(gè)服務(wù)器進(jìn)一步包括節(jié)點(diǎn)管理模塊,各個(gè)節(jié)點(diǎn)管理模塊共同選舉產(chǎn)生主節(jié)點(diǎn)服務(wù)器和次節(jié)點(diǎn)服務(wù)器,次節(jié)點(diǎn)服務(wù)器通過(guò)主節(jié)點(diǎn)服務(wù)器與外部網(wǎng)絡(luò)建立連接。
主節(jié)點(diǎn)服務(wù)器由IP地址最小和/或交互單元編程語(yǔ)言平臺(tái)J2EE的Java管理擴(kuò)展JMX端口最小的服務(wù)器來(lái)?yè)?dān)任。
所述節(jié)點(diǎn)管理模塊保存了服務(wù)器集群中的所有節(jié)點(diǎn)服務(wù)器包括主、次節(jié)點(diǎn)服務(wù)器的句柄。
所述次節(jié)點(diǎn)服務(wù)器上的節(jié)點(diǎn)管理模塊獲取主節(jié)點(diǎn)服務(wù)器上的句柄,調(diào)用主節(jié)點(diǎn)服務(wù)器遠(yuǎn)程接口創(chuàng)建連接。
所述調(diào)用主節(jié)點(diǎn)服務(wù)器遠(yuǎn)程接口是通過(guò)交互單元編程語(yǔ)言平臺(tái)J2EE的Java管理擴(kuò)展JMX服務(wù)實(shí)現(xiàn)的,或者通過(guò)J2EE的Java消息服務(wù)JMS、Enterprise JavaBean技術(shù)實(shí)現(xiàn)。
本發(fā)明提出了一種如何在服務(wù)器集群中選出一個(gè)或多個(gè)主節(jié)點(diǎn)建立共享連接與外部系統(tǒng)交互的方法和系統(tǒng),以解決現(xiàn)有技術(shù)中存在的由于外部系統(tǒng)的限制而導(dǎo)致的服務(wù)器集群與外部系統(tǒng)連接建立失敗,以及依靠代理服務(wù)器解決連接建立失敗問(wèn)題時(shí)產(chǎn)生的軟硬件成本上升、維護(hù)難度大、可靠性不強(qiáng)的技術(shù)問(wèn)題。
圖1是本發(fā)明所述背景技術(shù)系統(tǒng)結(jié)構(gòu)圖;圖2是本發(fā)明所述現(xiàn)有技術(shù)系統(tǒng)結(jié)構(gòu)圖;圖3是本發(fā)明所述系統(tǒng)結(jié)構(gòu)圖。
具體實(shí)施方法為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步地詳細(xì)描述。
圖3是本實(shí)施例系統(tǒng)結(jié)構(gòu)圖,如圖3所示,在一個(gè)支持負(fù)載均衡體系的服務(wù)器集群系統(tǒng)中,存在服務(wù)器1、服務(wù)器2、....、服務(wù)器n等多臺(tái)服務(wù)器,每一臺(tái)服務(wù)器上都安裝了節(jié)點(diǎn)管理模塊,每一臺(tái)服務(wù)器都有向外部系統(tǒng)——短消息服務(wù)中心發(fā)出服務(wù)請(qǐng)求的需求。
實(shí)施例一短消息服務(wù)中心對(duì)所述服務(wù)器集群系統(tǒng)只開(kāi)放了一個(gè)鏈接,即在某一時(shí)刻,只允許服務(wù)器集群系統(tǒng)中的一臺(tái)服務(wù)器與短消息服務(wù)中心建立連接,其他服務(wù)器的連接請(qǐng)求將被拒絕。短消息服務(wù)中心首先將允許所述服務(wù)器集群系統(tǒng)的連接數(shù)量消息發(fā)送至服務(wù)器集群系統(tǒng)的網(wǎng)關(guān)節(jié)點(diǎn),網(wǎng)關(guān)節(jié)點(diǎn)將該消息廣播到服務(wù)器集群系統(tǒng)中的所有服務(wù)器,各個(gè)服務(wù)器上的節(jié)點(diǎn)管理模塊接收該消息,并存儲(chǔ)其中的數(shù)量信息,將該信息作為服務(wù)器集群系統(tǒng)中主節(jié)點(diǎn)個(gè)數(shù)的依據(jù)。
服務(wù)器集群系統(tǒng)開(kāi)始選舉主節(jié)點(diǎn)服務(wù)器和次節(jié)點(diǎn)服務(wù)器(在集群系統(tǒng)中各個(gè)服務(wù)器的IP地址都是在一個(gè)子網(wǎng)中的),具體選舉過(guò)程如下A.各個(gè)服務(wù)器上的節(jié)點(diǎn)管理模塊首先遍歷服務(wù)器狀態(tài)表(所有服務(wù)器中的狀態(tài)表的內(nèi)容是一致的,該表記錄服務(wù)器集群中服務(wù)器的服務(wù)器編號(hào)、名稱(chēng)、IP地址、是否為主次節(jié)點(diǎn)等信息),判斷是否已經(jīng)選舉出了正式的主節(jié)點(diǎn)服務(wù)器,如果是則選舉結(jié)束,返回當(dāng)前主節(jié)點(diǎn);B.如果沒(méi)有正式的主節(jié)點(diǎn)服務(wù)器則進(jìn)行主節(jié)點(diǎn)的選舉首先遍歷各個(gè)服務(wù)器保存的所有服務(wù)器的信息,如果臨時(shí)主節(jié)點(diǎn)服務(wù)器不存在則說(shuō)明還沒(méi)有選舉過(guò),這時(shí)將服務(wù)器1作為臨時(shí)主節(jié)點(diǎn)服務(wù)器,服務(wù)器1發(fā)送廣播告知其他服務(wù)器這一消息,其他服務(wù)器將這一消息記錄在各自節(jié)點(diǎn)管理模塊上的狀態(tài)表中,然后執(zhí)行步驟C;C.作為臨時(shí)主節(jié)點(diǎn)服務(wù)器的服務(wù)器1將包含其IP地址(210.0.0.10 255.255.255.0)的信息轉(zhuǎn)發(fā)給服務(wù)器2(210.0.0.8 255.255.255.0),服務(wù)器2將本地IP地址和服務(wù)器1的IP地址進(jìn)行比較,因?yàn)榉?wù)器2的IP地址比服務(wù)器1的IP地址小,則服務(wù)器1失去作為主節(jié)點(diǎn)服務(wù)器的條件,服務(wù)器2將作為臨時(shí)主節(jié)點(diǎn)服務(wù)器,服務(wù)器2發(fā)送廣播告知其他服務(wù)器這一消息,其他服務(wù)器將這一消息記錄到各自節(jié)點(diǎn)管理模塊上的狀態(tài)表,系統(tǒng)進(jìn)入下一次循環(huán),服務(wù)器2將與服務(wù)器3按照上述步驟進(jìn)行比較;D.服務(wù)器集群中編號(hào)兩兩相鄰的所有服務(wù)器按步驟C的方法比較完畢后,選舉結(jié)束,這時(shí),各個(gè)節(jié)點(diǎn)管理模塊的狀態(tài)表中記錄的主節(jié)點(diǎn)服務(wù)器就是選舉到的主節(jié)點(diǎn)服務(wù)器,其他服務(wù)器自動(dòng)被設(shè)定為次節(jié)點(diǎn)服務(wù)器,同時(shí)節(jié)點(diǎn)管理模塊保存了服務(wù)器集群中的所有節(jié)點(diǎn)服務(wù)器包括主、次節(jié)點(diǎn)服務(wù)器的句柄。
本例中,假設(shè)服務(wù)器2被選舉為主節(jié)點(diǎn)服務(wù)器,則服務(wù)器2將與短消息服務(wù)中心建立連接,服務(wù)器2上的節(jié)點(diǎn)管理模塊啟動(dòng)自身的遠(yuǎn)程調(diào)用服務(wù)端接口,偵聽(tīng)來(lái)自次節(jié)點(diǎn)服務(wù)器的連接請(qǐng)求,若服務(wù)器1有與短消息服務(wù)中心的連接需求,則服務(wù)器1上的節(jié)點(diǎn)管理模塊將啟動(dòng)遠(yuǎn)程調(diào)用客戶(hù)端接口(所述服務(wù)端和客戶(hù)端接口是通過(guò)交互單元編程語(yǔ)言平臺(tái)J2EE的Java管理擴(kuò)展JMX服務(wù)實(shí)現(xiàn)的,或者通過(guò)J2EE的Java消息服務(wù)JMS、Enterprise JavaBean技術(shù)實(shí)現(xiàn)),與服務(wù)器2建立連接后,通過(guò)服務(wù)器2向短消息服務(wù)中心發(fā)送請(qǐng)求,如果短消息服務(wù)中心是根據(jù)與其連接的IP地址來(lái)限制連接數(shù)量,在主節(jié)點(diǎn)服務(wù)器選舉成功后,主節(jié)點(diǎn)管理模塊將向短消息服務(wù)中心注冊(cè)自身的IP地址,服務(wù)器2上的節(jié)點(diǎn)管理模塊將服務(wù)器1發(fā)來(lái)的數(shù)據(jù)包的源地址字段修改為服務(wù)器2的IP地址后再向短消息服務(wù)中心發(fā)送,服務(wù)器2記錄服務(wù)器1與短消息服務(wù)中心的映射關(guān)系。服務(wù)器2將短消息服務(wù)中心發(fā)來(lái)的響應(yīng)消息轉(zhuǎn)發(fā)給服務(wù)器1。
實(shí)施例二短消息服務(wù)中心對(duì)所述服務(wù)器集群系統(tǒng)開(kāi)放了三個(gè)鏈接,即在某一時(shí)刻,允許服務(wù)器集群系統(tǒng)中三臺(tái)服務(wù)器與短消息服務(wù)中心建立連接,其他服務(wù)器的連接請(qǐng)求將被拒絕。短消息服務(wù)中心首先將允許所述服務(wù)器集群系統(tǒng)的連接數(shù)量消息發(fā)送至服務(wù)器集群系統(tǒng)的網(wǎng)關(guān)節(jié)點(diǎn),網(wǎng)關(guān)節(jié)點(diǎn)將該消息廣播到服務(wù)器集群系統(tǒng)中的所有服務(wù)器,各個(gè)服務(wù)器上的節(jié)點(diǎn)管理模塊接收該消息,并存儲(chǔ)其中的數(shù)量信息,將該信息作為服務(wù)器集群系統(tǒng)中主節(jié)點(diǎn)個(gè)數(shù)的依據(jù)。
服務(wù)器集群系統(tǒng)開(kāi)始選舉主節(jié)點(diǎn)服務(wù)器和次節(jié)點(diǎn)服務(wù)器,具體選舉過(guò)程如下E.各個(gè)服務(wù)器上的節(jié)點(diǎn)管理模塊首先遍歷其收集的節(jié)點(diǎn)服務(wù)器狀態(tài)表(所有節(jié)點(diǎn)管理模塊中的狀態(tài)表的內(nèi)容是一致的,該表記錄服務(wù)器集群中服務(wù)器的服務(wù)器編號(hào)、名稱(chēng)、IP地址、是否為主次節(jié)點(diǎn)等信息),判斷是否已經(jīng)選舉出了正式的主節(jié)點(diǎn)服務(wù)器,如果是則選舉結(jié)束,返回當(dāng)前主節(jié)點(diǎn),如果主節(jié)點(diǎn)服務(wù)器不存在則說(shuō)明還沒(méi)有選舉過(guò),則執(zhí)行步驟F;F.將服務(wù)器1作為臨時(shí)主節(jié)點(diǎn)服務(wù)器,服務(wù)器1發(fā)送廣播告知其他服務(wù)器這一消息,其他服務(wù)器將這一消息記錄到各自節(jié)點(diǎn)管理模塊上的狀態(tài)表,然后執(zhí)行步驟G;G.作為臨時(shí)主節(jié)點(diǎn)服務(wù)器的服務(wù)器1將包含其JMX端口號(hào)的信息轉(zhuǎn)發(fā)給服務(wù)器2,服務(wù)器2將本地JMX端口號(hào)和服務(wù)器1的JMX端口號(hào)進(jìn)行比較,若服務(wù)器2的JMX端口號(hào)比服務(wù)器1的JMX端口號(hào)小,則服務(wù)器1失去作為臨時(shí)主節(jié)點(diǎn)服務(wù)器的條件,服務(wù)器2將作為臨時(shí)主節(jié)點(diǎn)服務(wù)器,服務(wù)器2發(fā)送廣播告知其他服務(wù)器這一消息,其他服務(wù)器將這一消息記錄到各自節(jié)點(diǎn)管理模塊上的狀態(tài)表,系統(tǒng)進(jìn)入下一次循環(huán),服務(wù)器2將與服務(wù)器3按照上述步驟進(jìn)行比較;
H.服務(wù)器集群中編號(hào)兩兩相鄰的所有服務(wù)器按步驟G的方法比較完畢后,第一次選舉結(jié)束,這時(shí),各個(gè)節(jié)點(diǎn)管理模塊的狀態(tài)表中記錄的主節(jié)點(diǎn)服務(wù)器就是選舉到的第一個(gè)主節(jié)點(diǎn)服務(wù)器,該主節(jié)點(diǎn)服務(wù)器讀取自身節(jié)點(diǎn)管理模塊中存儲(chǔ)的主節(jié)點(diǎn)數(shù)量信息,若數(shù)量不為1,則將其減1后重新存入節(jié)點(diǎn)管理模塊中,并將修改后的數(shù)值廣播到其他服務(wù)器,其他服務(wù)器的節(jié)點(diǎn)管理模塊接收該數(shù)值后,用該值修改原來(lái)存儲(chǔ)在本模塊的數(shù)量信息。
I.除了選舉出來(lái)的主節(jié)點(diǎn)服務(wù)器外,其他服務(wù)器上的節(jié)點(diǎn)管理模塊查詢(xún)主節(jié)點(diǎn)數(shù)量信息,若數(shù)值不為1,則開(kāi)始其他主節(jié)點(diǎn)選舉,已經(jīng)選舉出來(lái)的主節(jié)點(diǎn)服務(wù)器不參加選舉,默認(rèn)除已經(jīng)選舉出來(lái)的主節(jié)點(diǎn)服務(wù)器外的編號(hào)最靠前的服務(wù)器為臨時(shí)主節(jié)點(diǎn)服務(wù)器;J.循環(huán)執(zhí)行如F、G、H、I所述步驟,直至按照短消息服務(wù)中心允許的主節(jié)點(diǎn)數(shù)量信息,把所有主節(jié)點(diǎn)服務(wù)器選舉出來(lái),各個(gè)節(jié)點(diǎn)管理模塊保存了服務(wù)器集群中的所有節(jié)點(diǎn)服務(wù)器包括主、次節(jié)點(diǎn)服務(wù)器的句柄,選舉過(guò)程結(jié)束。
本例中,假設(shè)服務(wù)器1、2、3被選舉為主節(jié)點(diǎn)服務(wù)器,則服務(wù)器1、2、3將與短消息服務(wù)中心建立連接,服務(wù)器1、2、3上的節(jié)點(diǎn)管理模塊啟動(dòng)自身的遠(yuǎn)程調(diào)用服務(wù)端接口,偵聽(tīng)來(lái)自次節(jié)點(diǎn)服務(wù)器的連接請(qǐng)求,若服務(wù)器6有與短消息服務(wù)中心的連接需求,則服務(wù)器6上的節(jié)點(diǎn)管理模塊將啟動(dòng)遠(yuǎn)程調(diào)用客戶(hù)端接口(所述服務(wù)端和客戶(hù)端接口是通過(guò)交互單元編程語(yǔ)言平臺(tái)J2EE的Java管理擴(kuò)展JMX服務(wù)實(shí)現(xiàn)的,或者通過(guò)J2EE的Java消息服務(wù)JMS、Enterprise JavaBean技術(shù)實(shí)現(xiàn)),判斷服務(wù)器集群中主節(jié)點(diǎn)服務(wù)器1、2、3的負(fù)載情況,選擇當(dāng)前遠(yuǎn)程調(diào)用進(jìn)程數(shù)最低的主節(jié)點(diǎn)服務(wù)器2作為向短消息服務(wù)中心發(fā)送請(qǐng)求的通道,與服務(wù)器2建立連接后,通過(guò)服務(wù)器2向短消息服務(wù)中心發(fā)送請(qǐng)求,如果短消息服務(wù)中心是根據(jù)與其連接的節(jié)點(diǎn)的IP地址來(lái)限制連接數(shù)量,在主節(jié)點(diǎn)服務(wù)器選舉成功后,主節(jié)點(diǎn)管理模塊將向短消息服務(wù)中心注冊(cè)自身的IP地址,服務(wù)器2上的節(jié)點(diǎn)管理模塊將服務(wù)器6發(fā)來(lái)的數(shù)據(jù)包的源地址字段修改為服務(wù)器2的IP地址后再向短消息服務(wù)中心發(fā)送,服務(wù)器2記錄服務(wù)器1與短消息服務(wù)中心的映射關(guān)系。服務(wù)器2將短消息服務(wù)中心發(fā)來(lái)的響應(yīng)消息轉(zhuǎn)發(fā)給服務(wù)器1。
實(shí)施例三一個(gè)正在運(yùn)行的支持負(fù)載均衡的服務(wù)器集群系統(tǒng),包括一個(gè)主節(jié)點(diǎn)服務(wù)器2和若干個(gè)次節(jié)點(diǎn)服務(wù)器1、3、......、n,主節(jié)點(diǎn)服務(wù)器2是因其IP地址最小而當(dāng)選為主節(jié)點(diǎn)服務(wù)器的,其IP地址為192.168.0.10,獲得IP地址的方法,可以是網(wǎng)絡(luò)管理員手工設(shè)置,也可以是由DHCP服務(wù)器動(dòng)態(tài)分配,由于業(yè)務(wù)發(fā)展需要,服務(wù)器集群中增加了一個(gè)新的節(jié)點(diǎn)服務(wù)器m,IP地址為192.168.0.6,節(jié)點(diǎn)服務(wù)器m上的節(jié)點(diǎn)管理模塊根據(jù)IP地址最小者,即為主節(jié)點(diǎn)服務(wù)器的原則,查詢(xún)自身的節(jié)點(diǎn)狀態(tài)表,該表在服務(wù)器m剛剛接入服務(wù)器集群系統(tǒng)時(shí),從其他相鄰服務(wù)器的節(jié)點(diǎn)管理模塊中復(fù)制而來(lái),節(jié)點(diǎn)服務(wù)器m判斷自身的IP地址小于當(dāng)前主節(jié)點(diǎn)服務(wù)器2的IP地址,則節(jié)點(diǎn)服務(wù)器m獲得主節(jié)點(diǎn)服務(wù)器的地位,原主節(jié)點(diǎn)服務(wù)器2成為次節(jié)點(diǎn)服務(wù)器,并將該結(jié)果廣播給其他節(jié)點(diǎn)服務(wù)器,所有節(jié)點(diǎn)服務(wù)器的狀態(tài)表被刷新,原主節(jié)點(diǎn)服務(wù)器2斷開(kāi)與短消息服務(wù)中心的連接,并將斷開(kāi)連接消息發(fā)送給正在通過(guò)服務(wù)器2與短消息服務(wù)中心連接的次節(jié)點(diǎn)服務(wù)器,所述次節(jié)點(diǎn)服務(wù)器將停止與短消息服務(wù)中心的連接,等待新的主節(jié)點(diǎn)服務(wù)器m與短消息服務(wù)中心建立連接;服務(wù)器m與短消息服務(wù)中心建立連接后,將連接可用狀態(tài)廣播給服務(wù)器集群系統(tǒng)中的所有服務(wù)器,服務(wù)器m上的節(jié)點(diǎn)管理模塊啟動(dòng)自身的遠(yuǎn)程調(diào)用服務(wù)端接口,偵聽(tīng)來(lái)自次節(jié)點(diǎn)服務(wù)器的連接請(qǐng)求,若服務(wù)器1有與短消息服務(wù)中心的連接需求,則服務(wù)器1上的節(jié)點(diǎn)管理模塊將啟動(dòng)遠(yuǎn)程調(diào)用客戶(hù)端接口(所述服務(wù)端和客戶(hù)端接口是通過(guò)交互單元編程語(yǔ)言平臺(tái)J2EE的Java管理擴(kuò)展JMX服務(wù)實(shí)現(xiàn)的,或者通過(guò)J2EE的Java消息服務(wù)JMS、Enterprise JavaBean技術(shù)實(shí)現(xiàn)),與服務(wù)器m建立連接后,通過(guò)服務(wù)器m向短消息服務(wù)中心發(fā)送請(qǐng)求,如果短消息服務(wù)中心是根據(jù)與其連接的IP地址來(lái)限制連接數(shù)量,在主節(jié)點(diǎn)服務(wù)器選舉成功后,主節(jié)點(diǎn)管理模塊將向短消息服務(wù)中心注冊(cè)自身的IP地址,刪除原主節(jié)點(diǎn)服務(wù)器2在短消息服務(wù)中心注冊(cè)的IP地址,服務(wù)器m上的節(jié)點(diǎn)管理模塊將服務(wù)器1發(fā)來(lái)的數(shù)據(jù)包的源地址字段修改為服務(wù)器m的IP地址后再向短消息服務(wù)中心發(fā)送。
實(shí)施例四一個(gè)正在運(yùn)行的支持負(fù)載均衡的服務(wù)器集群系統(tǒng),包括一個(gè)主節(jié)點(diǎn)服務(wù)器1和若干個(gè)次節(jié)點(diǎn)服務(wù)器2、3、......、n,主節(jié)點(diǎn)服務(wù)器1是因其IP地址最小并且JMX端口號(hào)最小而當(dāng)選為主節(jié)點(diǎn)服務(wù)器的,其IP地址為192.168.0.10,獲得IP地址的方法,可以是網(wǎng)絡(luò)管理員手工設(shè)置,也可以是由DHCP服務(wù)器動(dòng)態(tài)分配,由于網(wǎng)絡(luò)故障,主節(jié)點(diǎn)服務(wù)器1與服務(wù)器集群系統(tǒng)分離,其他次節(jié)點(diǎn)服務(wù)器上的節(jié)點(diǎn)管理模塊中的檢測(cè)出當(dāng)前無(wú)主節(jié)點(diǎn)服務(wù)器可用,便開(kāi)始在次節(jié)點(diǎn)服務(wù)器中選舉新的主節(jié)點(diǎn)服務(wù)器,通過(guò)比較IP地址大小和JMX端口號(hào),原次節(jié)點(diǎn)服務(wù)器2因IP地址最小并且JMX端口號(hào)最小被選舉為主節(jié)點(diǎn)服務(wù)器,原主節(jié)點(diǎn)服務(wù)器1的網(wǎng)絡(luò)故障排除后,將按照實(shí)施例三中新節(jié)點(diǎn)服務(wù)器接入服務(wù)器集群系統(tǒng)的方法處理。
新主節(jié)點(diǎn)服務(wù)器2與短消息服務(wù)中心建立連接后,將連接可用狀態(tài)廣播給服務(wù)器集群系統(tǒng)中的所有服務(wù)器,服務(wù)器2上的節(jié)點(diǎn)管理模塊啟動(dòng)自身的遠(yuǎn)程調(diào)用服務(wù)端接口,偵聽(tīng)來(lái)自次節(jié)點(diǎn)服務(wù)器的連接請(qǐng)求,若服務(wù)器3有與短消息服務(wù)中心的連接需求,則服務(wù)器3上的節(jié)點(diǎn)管理模塊將啟動(dòng)遠(yuǎn)程調(diào)用客戶(hù)端接口(所述服務(wù)端和客戶(hù)端接口是通過(guò)交互單元編程語(yǔ)言平臺(tái)J2EE的Java管理擴(kuò)展JMX服務(wù)實(shí)現(xiàn)的,或者通過(guò)J2EE的Java消息服務(wù)JMS、Enterprise JavaBean技術(shù)實(shí)現(xiàn)),與服務(wù)器2建立連接后,通過(guò)服務(wù)器2向短消息服務(wù)中心發(fā)送請(qǐng)求,如果短消息服務(wù)中心是根據(jù)與其連接的IP地址來(lái)限制連接數(shù)量,在主節(jié)點(diǎn)服務(wù)器選舉成功后,其節(jié)點(diǎn)管理模塊將向短消息服務(wù)中心注冊(cè)自身的IP地址,刪除原主節(jié)點(diǎn)服務(wù)器1在短消息服務(wù)中心注冊(cè)的IP地址,服務(wù)器2上的節(jié)點(diǎn)管理模塊將服務(wù)器3發(fā)來(lái)的數(shù)據(jù)包的原地址字段修改為服務(wù)器2的IP地址后再向短消息服務(wù)中心發(fā)送。服務(wù)器2記錄服務(wù)器1與短消息服務(wù)中心的映射關(guān)系。服務(wù)器2將短消息服務(wù)中心發(fā)來(lái)的響應(yīng)消息轉(zhuǎn)發(fā)給服務(wù)器1。
顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若對(duì)本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
權(quán)利要求
1.一種動(dòng)態(tài)共享連接的方法,其特征在于,該方法包含以下步驟服務(wù)器集群中的各個(gè)服務(wù)器保存所述集群中所有服務(wù)器的信息;服務(wù)器集群中的各個(gè)服務(wù)器根據(jù)所述信息共同選舉產(chǎn)生主節(jié)點(diǎn)服務(wù)器和次節(jié)點(diǎn)服務(wù)器;服務(wù)器集群中的被選舉為主節(jié)點(diǎn)的服務(wù)器與外部系統(tǒng)建立連接;服務(wù)器集群中的次節(jié)點(diǎn)服務(wù)器當(dāng)需要與外部系統(tǒng)連接時(shí),各個(gè)次節(jié)點(diǎn)服務(wù)器通過(guò)主節(jié)點(diǎn)服務(wù)器,與外部系統(tǒng)建立連接。
2.如權(quán)利要求1所述的動(dòng)態(tài)共享連接的方法,其特征在于,所述所有服務(wù)器的信息包括服務(wù)器集群中所有服務(wù)器的句柄。
3.如權(quán)利要求2所述的動(dòng)態(tài)共享連接的方法,其特征在于,所述服務(wù)器集群中的次節(jié)點(diǎn)服務(wù)器當(dāng)需要與外部系統(tǒng)連接時(shí),各個(gè)次節(jié)點(diǎn)服務(wù)器通過(guò)主節(jié)點(diǎn)服務(wù)器,與外部系統(tǒng)建立連接的步驟進(jìn)一步包括,次節(jié)點(diǎn)服務(wù)器獲取主節(jié)點(diǎn)服務(wù)器上的句柄,調(diào)用主節(jié)點(diǎn)服務(wù)器遠(yuǎn)程接口創(chuàng)建與外部系統(tǒng)的連接。
4.如權(quán)利要求2所述的動(dòng)態(tài)共享連接的方法,其特征在于,所述服務(wù)器集群中的各個(gè)服務(wù)器根據(jù)所述信息共同選舉產(chǎn)生主節(jié)點(diǎn)服務(wù)器和次節(jié)點(diǎn)服務(wù)器的步驟中,服務(wù)器集群中的各個(gè)服務(wù)器比較各自的IP地址和/或交互單元編程語(yǔ)言平臺(tái)J2EE的Java管理擴(kuò)展JMX端口的大小來(lái)選舉主節(jié)點(diǎn)服務(wù)器和次節(jié)點(diǎn)服務(wù)器。
5.如權(quán)利要求3所述的動(dòng)態(tài)共享連接的方法,其特征在于,所述調(diào)用主節(jié)點(diǎn)服務(wù)器遠(yuǎn)程接口是通過(guò)交互單元編程語(yǔ)言平臺(tái)J2EE的Java管理擴(kuò)展JMX服務(wù)實(shí)現(xiàn)的,或者通過(guò)J2EE的Java消息服務(wù)JMS、Enterprise JavaBean技術(shù)實(shí)現(xiàn)。
6.如權(quán)利要求4所述的動(dòng)態(tài)共享連接的方法,其特征在于,選舉產(chǎn)生主節(jié)點(diǎn)服務(wù)器和次節(jié)點(diǎn)服務(wù)器的過(guò)程如下A.遍歷各個(gè)服務(wù)器保存的所述所有服務(wù)器的信息,判斷是否已經(jīng)選舉出了正式的主節(jié)點(diǎn)服務(wù)器,如果是則選舉結(jié)束,返回當(dāng)前主節(jié)點(diǎn);如果否,則繼續(xù)以下步驟;B.判斷是否存在臨時(shí)主節(jié)點(diǎn)服務(wù)器;C.如果臨時(shí)主節(jié)點(diǎn)服務(wù)器不存在,則將第一個(gè)節(jié)點(diǎn)作為臨時(shí)主節(jié)點(diǎn);D.如果臨時(shí)主節(jié)點(diǎn)存在且當(dāng)前節(jié)點(diǎn)不是最后一個(gè)節(jié)點(diǎn),則比較當(dāng)前節(jié)點(diǎn)和臨時(shí)主節(jié)點(diǎn)的IP地址和/或JMX端口號(hào),如果當(dāng)前節(jié)點(diǎn)IP地址比臨時(shí)主節(jié)點(diǎn)IP地址小并且/或當(dāng)前節(jié)點(diǎn)的JMX端口號(hào)比臨時(shí)主節(jié)點(diǎn)的JMX端口號(hào)小,則由當(dāng)前節(jié)點(diǎn)作為臨時(shí)主節(jié)點(diǎn),進(jìn)入下一次循環(huán),執(zhí)行步驟A;如果臨時(shí)主節(jié)點(diǎn)存在且當(dāng)前節(jié)點(diǎn)是最后一個(gè)節(jié)點(diǎn),則比較當(dāng)前節(jié)點(diǎn)和臨時(shí)主節(jié)點(diǎn)的IP地址和/或JMX端口號(hào),如果當(dāng)前節(jié)點(diǎn)IP地址和/或JMX端口號(hào)比臨時(shí)主節(jié)點(diǎn)IP地址和/或JMX端口號(hào)小,則由當(dāng)前節(jié)點(diǎn)作為正式主節(jié)點(diǎn),其他節(jié)點(diǎn)為次節(jié)點(diǎn),否則由臨時(shí)主節(jié)點(diǎn)作為正式主節(jié)點(diǎn),其他節(jié)點(diǎn)為次節(jié)點(diǎn);E.遍歷服務(wù)器集群中的所有服務(wù)器后,選舉結(jié)束,將主節(jié)點(diǎn)和各個(gè)次節(jié)點(diǎn)的信息記錄到各個(gè)服務(wù)器中。
7.一種動(dòng)態(tài)共享連接系統(tǒng),包含服務(wù)器集群,其特征在于所述服務(wù)器集群中的各個(gè)服務(wù)器進(jìn)一步包括節(jié)點(diǎn)管理模塊,各個(gè)節(jié)點(diǎn)管理模塊共同選舉產(chǎn)生主節(jié)點(diǎn)服務(wù)器和次節(jié)點(diǎn)服務(wù)器,次節(jié)點(diǎn)服務(wù)器通過(guò)主節(jié)點(diǎn)服務(wù)器與外部網(wǎng)絡(luò)建立連接。
8.如權(quán)利要求7所述的動(dòng)態(tài)共享連接系統(tǒng),其特征在于,所述節(jié)點(diǎn)管理模塊保存了服務(wù)器集群中的所有節(jié)點(diǎn)服務(wù)器的句柄。
9.如權(quán)利要求8所述的動(dòng)態(tài)共享連接系統(tǒng),其特征在于,所述次節(jié)點(diǎn)服務(wù)器上的節(jié)點(diǎn)管理模塊獲取主節(jié)點(diǎn)服務(wù)器上的句柄,調(diào)用主節(jié)點(diǎn)服務(wù)器遠(yuǎn)程接口創(chuàng)建連接。
10.如權(quán)利要求9所述的動(dòng)態(tài)共享連接系統(tǒng),其特征在于,所述調(diào)用主節(jié)點(diǎn)服務(wù)器遠(yuǎn)程接口是通過(guò)企業(yè)版萬(wàn)維網(wǎng)交互單元編程語(yǔ)言平臺(tái)J2EE的Java管理擴(kuò)展JMX服務(wù)實(shí)現(xiàn)的,或者通過(guò)J2EE的Java消息服務(wù)JMS、Enterprise JavaBean技術(shù)實(shí)現(xiàn)。
11.如權(quán)利要求7所述的動(dòng)態(tài)共享連接系統(tǒng),其特征在于,主節(jié)點(diǎn)服務(wù)器由IP地址最小和/或JMX端口最小的服務(wù)器來(lái)?yè)?dān)任。
全文摘要
本發(fā)明公開(kāi)了一種動(dòng)態(tài)共享連接的方法,該方法包含以下步驟服務(wù)器集群中的各個(gè)服務(wù)器保存所述集群中所有服務(wù)器的信息;服務(wù)器集群中的各個(gè)服務(wù)器根據(jù)所述信息共同選舉產(chǎn)生主節(jié)點(diǎn)服務(wù)器和次節(jié)點(diǎn)服務(wù)器;服務(wù)器集群中的被選舉為主節(jié)點(diǎn)的服務(wù)器與外部系統(tǒng)建立連接;服務(wù)器集群中的次節(jié)點(diǎn)服務(wù)器當(dāng)需要與外部系統(tǒng)連接時(shí),各個(gè)次節(jié)點(diǎn)服務(wù)器通過(guò)主節(jié)點(diǎn)服務(wù)器,與外部系統(tǒng)建立連接。本發(fā)明還公開(kāi)了一種動(dòng)態(tài)共享連接系統(tǒng),包含服務(wù)器集群,其特征在于,所述服務(wù)器集群中的各個(gè)服務(wù)器進(jìn)一步包括節(jié)點(diǎn)管理模塊,各個(gè)節(jié)點(diǎn)管理模塊共同選舉產(chǎn)生主節(jié)點(diǎn)服務(wù)器和次節(jié)點(diǎn)服務(wù)器,次節(jié)點(diǎn)服務(wù)器通過(guò)主節(jié)點(diǎn)服務(wù)器與外部網(wǎng)絡(luò)建立連接。
文檔編號(hào)H04L12/58GK101043398SQ200610061398
公開(kāi)日2007年9月26日 申請(qǐng)日期2006年6月28日 優(yōu)先權(quán)日2006年6月28日
發(fā)明者張磊, 龔華, 張婧 申請(qǐng)人:華為技術(shù)有限公司