本申請涉及通信技術(shù)領(lǐng)域,尤其涉及一種用戶設(shè)備連接請求分配的方法及裝置。
背景技術(shù):
現(xiàn)階段負(fù)載均衡是指當(dāng)存在大量的用戶設(shè)備的連接請求時,將所述用戶設(shè)備的連接請求平均地分配到多臺服務(wù)器進(jìn)行處理,使每一臺服務(wù)器所承受的總負(fù)載水平保持平衡。
目前,負(fù)載均衡采用的策略為平均分配用戶設(shè)備的連接請求的方式,使得每一臺服務(wù)器上所分配到的用戶設(shè)備的連接請求的數(shù)量是平均的。
然而,當(dāng)加入新的服務(wù)器時,新加入的服務(wù)器與已經(jīng)在集群中工作的服務(wù)器所承受的負(fù)載存在很大的差距,若繼續(xù)采用現(xiàn)有技術(shù)中平均分配用戶設(shè)備的連接請求的方式,雖然在短連接的情況下,服務(wù)器與用戶設(shè)備之間所連接的用戶設(shè)備的連接請求會斷開,從而可以使各個服務(wù)器連接的來自于用戶設(shè)備的連接請求的數(shù)量達(dá)到平衡,即各個服務(wù)器的負(fù)載達(dá)到平衡。但是,在長連接的情況下,無法使得新加入的服務(wù)器的負(fù)載快速地與原有的在集群中工作的服務(wù)器的負(fù)載達(dá)到平衡,即使可以使每個服務(wù)器的負(fù)載達(dá)到平衡,也需要經(jīng)過長時間的迭代,才能使得每一服務(wù)器的負(fù)載達(dá)到平衡??梢?,現(xiàn)有技術(shù)中負(fù)載均衡的策略,即平均分配用戶設(shè)備的連接請求的方式并不適用于長連接的情況。
綜上所述,現(xiàn)有技術(shù)中用戶設(shè)備連接請求分配方法僅適用于短連接的情況下,在長連接的情況下,無法使得新加入的服務(wù)器的負(fù)載快速地與原有的在集群中工作的服務(wù)器的負(fù)載達(dá)到平衡。
技術(shù)實現(xiàn)要素:
本申請實施例提供了一種用戶設(shè)備連接請求分配的方法及裝置,用以在長連接情況下實現(xiàn)多個服務(wù)器負(fù)載的快速均衡。
本申請實施例提供的一種用戶設(shè)備連接請求分配的方法,包括:
接收多個服務(wù)器發(fā)送的用于表征本服務(wù)器當(dāng)前負(fù)載狀態(tài)值的數(shù)據(jù)以及用戶設(shè)備發(fā)送的連接請求;
根據(jù)每一所述服務(wù)器發(fā)送的用于表征本服務(wù)器當(dāng)前負(fù)載狀態(tài)值的數(shù)據(jù),對所述連接請求進(jìn)行分配。
本申請實施例,通過接收多個服務(wù)器發(fā)送的用于表征本服務(wù)器當(dāng)前負(fù)載狀態(tài)值的數(shù)據(jù),可實時得知多個服務(wù)器各自的負(fù)載狀態(tài),并根據(jù)所述多個服務(wù)器發(fā)送的用于表征本服務(wù)器當(dāng)前負(fù)載狀態(tài)值的數(shù)據(jù),對所述連接請求進(jìn)行分配,進(jìn)而實現(xiàn)所述多個服務(wù)器負(fù)載均衡,有效解決了長連接情況下多個服務(wù)器負(fù)載快速均衡的問題。
可選地,根據(jù)每一所述服務(wù)器發(fā)送的用于表征本服務(wù)器當(dāng)前負(fù)載狀態(tài)值的數(shù)據(jù),對所述連接請求進(jìn)行分配,具體包括:
針對任一所述服務(wù)器,根據(jù)該服務(wù)器發(fā)送的所述表征該服務(wù)器當(dāng)前負(fù)載狀態(tài)值的數(shù)據(jù),計算該服務(wù)器當(dāng)前負(fù)載狀態(tài)值占所述多個服務(wù)器當(dāng)前總負(fù)載狀態(tài)值的平均值的比例;
當(dāng)所述多個服務(wù)器中存在任一服務(wù)器對應(yīng)的當(dāng)前負(fù)載狀態(tài)值占所述多個服務(wù)器當(dāng)前總負(fù)載狀態(tài)值的平均值的比例不在預(yù)設(shè)的閾值范圍內(nèi)時,從所述多個服務(wù)器中確定出當(dāng)前負(fù)載最小的服務(wù)器;
將所述連接請求發(fā)送給所述負(fù)載最小的服務(wù)器。
從而,當(dāng)集群中的多個服務(wù)器中任意一個的負(fù)載與其他服務(wù)器差距較大時,通過上述方法,可實現(xiàn)集群中的多個服務(wù)器的負(fù)載快速均衡。當(dāng)有新的服務(wù)器加入集群后,實現(xiàn)了該新加入的服務(wù)器的負(fù)載快速地與原有的在集群中工作的服務(wù)器的負(fù)載達(dá)到平衡,提高了集群的性能。
可選地,所述多個服務(wù)器發(fā)送的用于表征本服務(wù)器當(dāng)前負(fù)載狀態(tài)值的數(shù)據(jù)為本服務(wù)器當(dāng)前已接收到的用戶設(shè)備的連接請求的總數(shù)量。
可選地,根據(jù)每一所述服務(wù)器發(fā)送的用于表征本服務(wù)器當(dāng)前負(fù)載狀態(tài)值的數(shù)據(jù),對所述連接請求進(jìn)行分配,還包括:
當(dāng)所述多個服務(wù)器對應(yīng)的該服務(wù)器當(dāng)前負(fù)載狀態(tài)值占所述多個服務(wù)器當(dāng)前總負(fù)載狀態(tài)值的平均值的比例,均在所述預(yù)設(shè)的閾值范圍內(nèi)時,平均分配來自于用戶設(shè)備的連接請求給所述多個服務(wù)器。
從而,當(dāng)所述多個服務(wù)器對應(yīng)的該服務(wù)器當(dāng)前負(fù)載狀態(tài)值占所述多個服務(wù)器當(dāng)前總負(fù)載狀態(tài)值的平均值的比例,均在所述預(yù)設(shè)的閾值范圍內(nèi)時,通過采用上述方式,可以省略確定負(fù)載最小的服務(wù)器的過程,進(jìn)而節(jié)省給所述多個服務(wù)器分配用戶設(shè)備的連接請求的時間。
可選地,將所述用戶設(shè)備的連接請求發(fā)送給所述負(fù)載最小的服務(wù)器之后,該方法還包括:
當(dāng)所述負(fù)載最小的服務(wù)器對應(yīng)的當(dāng)前負(fù)載狀態(tài)值占所述多個服務(wù)器當(dāng)前總負(fù)載狀態(tài)值的平均值的比例到達(dá)所述預(yù)設(shè)的閾值范圍內(nèi)時,停止向所述負(fù)載最小的服務(wù)器發(fā)送當(dāng)前來自于用戶設(shè)備的連接請求;
將所述用戶設(shè)備的連接請求采取平均分配的方式發(fā)送給所述多個服務(wù)器。
從而,有效避免了所述負(fù)載最小的服務(wù)器對應(yīng)的該服務(wù)器當(dāng)前負(fù)載狀態(tài)值占所述多個服務(wù)器當(dāng)前總負(fù)載狀態(tài)值的平均值的比例超出所述預(yù)設(shè)的閾值范圍,導(dǎo)致多個服務(wù)器負(fù)載不均衡。
可選地,所述接收多個服務(wù)器發(fā)送的用于表征本服務(wù)器當(dāng)前負(fù)載狀態(tài)值的數(shù)據(jù)是周期性地進(jìn)行的。
可選地,所述計算每一服務(wù)器當(dāng)前負(fù)載狀態(tài)值占所述多個服務(wù)器當(dāng)前總負(fù)載狀態(tài)值的平均值的比例是周期性地進(jìn)行的。
通過對所述多個服務(wù)器發(fā)送的用于表征本服務(wù)器當(dāng)前負(fù)載狀態(tài)值的數(shù)據(jù)進(jìn)行實時統(tǒng)計,有利于實時獲知所述多個服務(wù)器的負(fù)載狀況,及時采取最有效 的負(fù)載均衡方案。
可選地,將所述連接請求發(fā)送給所述負(fù)載最小的服務(wù)器,具體包括:
從本地文件的哈希表中獲取所述負(fù)載最小的服務(wù)器的IP地址;
根據(jù)所述IP地址,將所述連接請求發(fā)送給所述負(fù)載最小的服務(wù)器。
可選地,當(dāng)從所述多個服務(wù)器中確定出當(dāng)前負(fù)載最小的服務(wù)器的數(shù)量為多個時,從所述多個負(fù)載最小的服務(wù)器中隨機(jī)選取一個服務(wù)器,并將所述連接請求發(fā)送給該服務(wù)器。
可選地,在分配用戶設(shè)備連接請求前以及分配用戶設(shè)備連接請求之后,所述多個服務(wù)器與用戶設(shè)備之間建立連接的方式為長連接。
本申請實施例提供的一種用戶設(shè)備連接請求分配的裝置,包括:
接收單元,用于接收多個服務(wù)器發(fā)送的用于表征本服務(wù)器當(dāng)前負(fù)載狀態(tài)值的數(shù)據(jù)以及用戶設(shè)備發(fā)送的連接請求;
處理單元,用于根據(jù)每一所述服務(wù)器發(fā)送的用于表征本服務(wù)器當(dāng)前負(fù)載狀態(tài)值的數(shù)據(jù),對所述連接請求進(jìn)行分配。
可選地,所述處理單元具體用于:
針對任一所述服務(wù)器,根據(jù)該服務(wù)器發(fā)送的所述表征該服務(wù)器當(dāng)前負(fù)載狀態(tài)值的數(shù)據(jù),計算該服務(wù)器當(dāng)前負(fù)載狀態(tài)值占所述多個服務(wù)器當(dāng)前總負(fù)載狀態(tài)值的平均值的比例;
當(dāng)所述多個服務(wù)器中存在任一服務(wù)器對應(yīng)的當(dāng)前負(fù)載狀態(tài)值占所述多個服務(wù)器當(dāng)前總負(fù)載狀態(tài)值的平均值的比例不在預(yù)設(shè)的閾值范圍內(nèi)時,從所述多個服務(wù)器中確定出當(dāng)前負(fù)載最小的服務(wù)器;
將所述連接請求發(fā)送給所述負(fù)載最小的服務(wù)器。
可選地,所述接收單元接收的所述多個服務(wù)器發(fā)送的用于表征本服務(wù)器當(dāng)前負(fù)載狀態(tài)值的數(shù)據(jù)為本服務(wù)器當(dāng)前已接收到的用戶設(shè)備的連接請求的總數(shù)量。
可選地,所述處理單元具體還用于:
當(dāng)所述多個服務(wù)器對應(yīng)的該服務(wù)器當(dāng)前負(fù)載狀態(tài)值占所述多個服務(wù)器當(dāng)前總負(fù)載狀態(tài)值的平均值的比例,均在所述預(yù)設(shè)的閾值范圍內(nèi)時,平均分配來自于用戶設(shè)備的連接請求給所述多個服務(wù)器。
可選地,所述處理單元將所述用戶設(shè)備的連接請求發(fā)送給所述負(fù)載最小的服務(wù)器之后,還用于:
當(dāng)所述負(fù)載最小的服務(wù)器對應(yīng)的當(dāng)前負(fù)載狀態(tài)值占所述多個服務(wù)器當(dāng)前總負(fù)載狀態(tài)值的平均值的比例到達(dá)所述預(yù)設(shè)的閾值范圍內(nèi)時,停止向所述負(fù)載最小的服務(wù)器發(fā)送當(dāng)前來自于用戶設(shè)備的連接請求;
將所述用戶設(shè)備的連接請求采取平均分配的方式發(fā)送給所述多個服務(wù)器。
可選地,所述接收單元周期性地接收所述多個服務(wù)器發(fā)送的用于表征本服務(wù)器當(dāng)前負(fù)載狀態(tài)值的數(shù)據(jù)。
可選地,所述處理單元周期性地計算每一服務(wù)器當(dāng)前負(fù)載狀態(tài)值占所述多個服務(wù)器當(dāng)前總負(fù)載狀態(tài)值的平均值的比例。
可選地,所述處理單元將所述連接請求發(fā)送給所述負(fù)載最小的服務(wù)器時,具體用于:
從本地文件的哈希表中獲取所述負(fù)載最小的服務(wù)器的IP地址;
根據(jù)所述IP地址,將所述連接請求發(fā)送給所述負(fù)載最小的服務(wù)器。
可選地,所述處理單元當(dāng)從所述多個服務(wù)器中確定出當(dāng)前負(fù)載最小的服務(wù)器的數(shù)量為多個時,從所述多個負(fù)載最小的服務(wù)器中隨機(jī)選取一個服務(wù)器,并將所述連接請求發(fā)送給該服務(wù)器。
可選地,所述裝置在分配用戶設(shè)備連接請求前以及分配用戶設(shè)備連接請求之后,所述多個服務(wù)器與用戶設(shè)備之間建立連接的方式為長連接。
附圖說明
圖1為本申請實施例提供的一種用戶設(shè)備連接請求分配的方法的流程示意圖;
圖2a和圖2b為本申請實施例提供的系統(tǒng)架構(gòu)示意圖;
圖3為本申請實施例提供的另一用戶設(shè)備連接請求分配的方法流程示意圖;
圖4為本申請實施例提供的一種用戶設(shè)備連接請求分配的裝置的結(jié)構(gòu)示意圖。
具體實施方式
本申請實施例提供了一種用戶設(shè)備連接請求分配的方法及裝置,用以在長連接情況下實現(xiàn)多個服務(wù)器負(fù)載的快速均衡。
本申請實施例,通過周期性地接收多個服務(wù)器發(fā)送的用于表征本服務(wù)器當(dāng)前負(fù)載狀態(tài)值的數(shù)據(jù),并根據(jù)所接收到的多個服務(wù)器發(fā)送的用于表征本服務(wù)器當(dāng)前負(fù)載狀態(tài)值的數(shù)據(jù),計算和判斷每一服務(wù)器對應(yīng)的當(dāng)前負(fù)載狀態(tài)值占所述多個服務(wù)器當(dāng)前總負(fù)載狀態(tài)值的平均值的比例是否在預(yù)設(shè)的閾值范圍內(nèi)。當(dāng)所述多個服務(wù)器中存在任一服務(wù)器對應(yīng)的當(dāng)前負(fù)載狀態(tài)值占所述多個服務(wù)器當(dāng)前總負(fù)載狀態(tài)值的平均值的比例不在預(yù)設(shè)的閾值范圍內(nèi)時,從所述多個服務(wù)器中確定出當(dāng)前負(fù)載最小的服務(wù)器,并將當(dāng)前來自于用戶設(shè)備的連接請求發(fā)送給所述負(fù)載最小的服務(wù)器,實現(xiàn)多個服務(wù)器的負(fù)載快速達(dá)到平衡。當(dāng)所述多個服務(wù)器對應(yīng)的該服務(wù)器當(dāng)前負(fù)載狀態(tài)值占所述多個服務(wù)器當(dāng)前總負(fù)載狀態(tài)值的平均值的比例,均在所述預(yù)設(shè)的閾值范圍內(nèi)時,平均分配來自于用戶設(shè)備的連接請求給所述多個服務(wù)器,從而實現(xiàn)所述多個服務(wù)器的負(fù)載均衡。
下面結(jié)合附圖對本申請實施例進(jìn)行詳細(xì)地闡述。
在負(fù)載均衡服務(wù)器側(cè),參見圖1,本申請實施例提供了一種用戶設(shè)備連接請求分配的方法,包括:
S101、接收多個服務(wù)器發(fā)送的用于表征本服務(wù)器當(dāng)前負(fù)載狀態(tài)值的數(shù)據(jù)以及用戶設(shè)備發(fā)送的連接請求;
S102、根據(jù)每一所述服務(wù)器發(fā)送的用于表征本服務(wù)器當(dāng)前負(fù)載狀態(tài)值的數(shù) 據(jù),對所述連接請求進(jìn)行分配。
本申請實施例,通過接收多個服務(wù)器發(fā)送的用于表征本服務(wù)器當(dāng)前負(fù)載狀態(tài)值的數(shù)據(jù),可實時得知多個服務(wù)器各自的負(fù)載狀態(tài),并根據(jù)所述多個服務(wù)器發(fā)送的用于表征本服務(wù)器當(dāng)前負(fù)載狀態(tài)值的數(shù)據(jù),對所述連接請求進(jìn)行分配,有效解決了長連接情況下多個服務(wù)器負(fù)載快速均衡的問題。
可選地,根據(jù)每一所述服務(wù)器發(fā)送的用于表征本服務(wù)器當(dāng)前負(fù)載狀態(tài)值的數(shù)據(jù),對所述連接請求進(jìn)行分配,具體包括:
針對任一所述服務(wù)器,根據(jù)該服務(wù)器發(fā)送的所述表征該服務(wù)器當(dāng)前負(fù)載狀態(tài)值的數(shù)據(jù),計算該服務(wù)器當(dāng)前負(fù)載狀態(tài)值占所述多個服務(wù)器當(dāng)前總負(fù)載狀態(tài)值的平均值的比例;
當(dāng)所述多個服務(wù)器中存在任一服務(wù)器對應(yīng)的當(dāng)前負(fù)載狀態(tài)值占所述多個服務(wù)器當(dāng)前總負(fù)載狀態(tài)值的平均值的比例不在預(yù)設(shè)的閾值范圍內(nèi)時,從所述多個服務(wù)器中確定出當(dāng)前負(fù)載最小的服務(wù)器;
將所述連接請求發(fā)送給所述負(fù)載最小的服務(wù)器。
從而,當(dāng)集群中的多個服務(wù)器中任意一個的負(fù)載與其他服務(wù)器差距較大時,通過上述方法,可實現(xiàn)集群中的多個服務(wù)器的負(fù)載快速均衡。當(dāng)有新的服務(wù)器加入集群后,實現(xiàn)了該新加入的服務(wù)器的負(fù)載快速地與原有的在集群中工作的服務(wù)器的負(fù)載達(dá)到平衡,提高了集群的性能。
需要說明的是,服務(wù)器的負(fù)載與該服務(wù)器接收到的用戶設(shè)備的連接請求的數(shù)量是成正比的。這是由于,當(dāng)服務(wù)器接接收到的用戶設(shè)備的連接請求時,該服務(wù)器需要對所述用戶設(shè)備的連接請求進(jìn)行處理,如相關(guān)數(shù)據(jù)的處理、CPU(Central Processing Unit,中央處理器)的占用、磁盤IO的占用、網(wǎng)絡(luò)占用等等,都會導(dǎo)致該服務(wù)器的負(fù)載相應(yīng)地增加。因此,通過將當(dāng)前來自于用戶設(shè)備的連接請求發(fā)送給所述負(fù)載最小的服務(wù)器,可以使得所述負(fù)載最小的服務(wù)器的負(fù)載快速地增加。
這里,我們將所述多個服務(wù)器的個數(shù)用N表示,所述多個服務(wù)器當(dāng)前總負(fù) 載狀態(tài)值用Ltotal表示,任一服務(wù)器當(dāng)前負(fù)載狀態(tài)值占所述多個服務(wù)器當(dāng)前總負(fù)載狀態(tài)值的平均值的比例用Pi表示,任一服務(wù)器當(dāng)前負(fù)載狀態(tài)值用Li表示,其中i表示所述任一服務(wù)器對應(yīng)的編號,用于區(qū)分不同的服務(wù)器。同時,為了方便闡述,我們將下文中出現(xiàn)的任一服務(wù)器對應(yīng)的當(dāng)前負(fù)載狀態(tài)值占所述多個服務(wù)器當(dāng)前總負(fù)載狀態(tài)值的平均值的比例均用Pi表示,并且其他符號如Ltotal、N、Li等也將繼續(xù)在下文中沿用。
則Pi可表示為:
所述Pi不在預(yù)設(shè)的閾值范圍內(nèi),可以是Pi小于所述預(yù)設(shè)的閾值范圍,也可以是Pi大于所述預(yù)設(shè)的閾值范圍。例如,閾值范圍設(shè)為70%-130%,對于編號為1的服務(wù)器,計算得到其P1的值為20%,則P1小于所述預(yù)設(shè)的閾值范圍;或者對于編號為2的服務(wù)器,計算得到其P2的值為140%,則P2大于所述預(yù)設(shè)的閾值范圍。即以上計算所得的P1和P2均不在預(yù)設(shè)的閾值范圍內(nèi)。當(dāng)然,對于閾值范圍,用戶可根據(jù)具體情況進(jìn)行自行設(shè)定,例如還可以設(shè)定為80%-120%、90%-110%等等。
其中,所述預(yù)設(shè)的閾值范圍,可以是給所述多個服務(wù)器預(yù)設(shè)一個統(tǒng)一的閾值范圍;也可以是給每一服務(wù)器預(yù)設(shè)一個閾值范圍,該閾值范圍可以相同,也可以不同,本申請實施例對此不作限定。
對于從所述多個服務(wù)器中確定出當(dāng)前負(fù)載最小的服務(wù)器的方法,可以有多種。例如,可以利用每一服務(wù)器當(dāng)前對應(yīng)的負(fù)載狀態(tài)值來確定出當(dāng)前負(fù)載最小的服務(wù)器,也可以利用每一服務(wù)器的Pi值來確定出當(dāng)前負(fù)載最小的服務(wù)器。
下面給出一種從所述多個服務(wù)器中確定當(dāng)前負(fù)載最小的服務(wù)器的具體方法。
當(dāng)接收到所述多個服務(wù)器發(fā)送的用于表征本服務(wù)器當(dāng)前負(fù)載狀態(tài)值的數(shù)據(jù)后,將所述數(shù)據(jù)進(jìn)行統(tǒng)計后保存在本地文件的哈希表中。在當(dāng)前時刻,當(dāng)所述多個服務(wù)器中存在任一服務(wù)器對應(yīng)的Pi不在預(yù)設(shè)的閾值范圍內(nèi)時,按照排序 規(guī)則對當(dāng)前哈希表中每一服務(wù)器對應(yīng)的負(fù)載狀態(tài)值進(jìn)行排序,例如采用堆排序方法,找出負(fù)載最小的服務(wù)器對應(yīng)的IP,從而確定出當(dāng)前負(fù)載最小的服務(wù)器。當(dāng)然,也可以采用其他排序方法,如快速排序、歸并排序等等。
可選地,根據(jù)每一所述服務(wù)器發(fā)送的用于表征本服務(wù)器當(dāng)前負(fù)載狀態(tài)值的數(shù)據(jù),對所述連接請求進(jìn)行分配,還包括:
當(dāng)所述多個服務(wù)器對應(yīng)的該服務(wù)器當(dāng)前負(fù)載狀態(tài)值占所述多個服務(wù)器當(dāng)前總負(fù)載狀態(tài)值的平均值的比例,均在所述預(yù)設(shè)的閾值范圍內(nèi)時,平均分配來自于用戶設(shè)備的連接請求給所述多個服務(wù)器。
其中,將當(dāng)前來自于用戶設(shè)備的連接請求采取平均分配的方式發(fā)送給所述多個服務(wù)器,可以有多種實現(xiàn)方式。
例如,可以采用輪詢機(jī)制,也就是將多個用戶設(shè)備的連接請求,循環(huán)地給每一臺服務(wù)器分配一個用戶設(shè)備的連接請求,從而,使得每一臺服務(wù)器所接收到的用戶設(shè)備的連接請求的數(shù)量是平均的。
或者,可以采用隨機(jī)分配機(jī)制,也就是當(dāng)逐個發(fā)送多個用戶設(shè)備的連接請求給所述多個服務(wù)器時,每發(fā)一個用戶設(shè)備的連接請求,就從所述多個服務(wù)器中隨機(jī)選取一個服務(wù)器,然后將該用戶設(shè)備的連接請求發(fā)送給該服務(wù)器。這樣,集群中的每一服務(wù)器收到的用戶設(shè)備的連接請求的數(shù)量也可以認(rèn)為是均等的,從而,可以保證多個服務(wù)器的負(fù)載趨于平衡。當(dāng)然,除上述兩種方式外,還可以采用其他的實現(xiàn)方式,本申請實施例對此實現(xiàn)方式不作具體限定。
也就是說,當(dāng)所述多個服務(wù)器對應(yīng)的該服務(wù)器當(dāng)前負(fù)載狀態(tài)值占所述多個服務(wù)器當(dāng)前總負(fù)載狀態(tài)值的平均值的比例,均在所述預(yù)設(shè)的閾值范圍內(nèi)時,各服務(wù)器之間的負(fù)載差距不大,我們可以認(rèn)為所述多個服務(wù)器當(dāng)前的負(fù)載是平均的,因此,采取平均分配來自于用戶設(shè)備的連接請求的方式,實現(xiàn)所述多個服務(wù)器的負(fù)載均衡。通過采用這種方式,可以省略上述確定負(fù)載最小的服務(wù)器的過程,進(jìn)而節(jié)省給所述多個服務(wù)器分配用戶設(shè)備的連接請求的時間。
可選地,將用戶設(shè)備的連接請求發(fā)送給所述負(fù)載最小的服務(wù)器之后,該方 法還包括:
當(dāng)所述負(fù)載最小的服務(wù)器對應(yīng)的當(dāng)前負(fù)載狀態(tài)值占所述多個服務(wù)器當(dāng)前總負(fù)載狀態(tài)值的平均值的比例到達(dá)所述預(yù)設(shè)的閾值范圍內(nèi)時,停止向所述負(fù)載最小的服務(wù)器發(fā)送當(dāng)前來自于用戶設(shè)備的連接請求;
將用戶設(shè)備的連接請求采取平均分配的方式發(fā)送給所述多個服務(wù)器。
從而,有效避免了所述負(fù)載最小的服務(wù)器對應(yīng)的該服務(wù)器當(dāng)前負(fù)載狀態(tài)值占所述多個服務(wù)器當(dāng)前總負(fù)載狀態(tài)值的平均值的比例超出所述預(yù)設(shè)的閾值范圍,導(dǎo)致多個服務(wù)器負(fù)載不均衡。
下面針對上述方法進(jìn)行簡單地說明。
假設(shè)預(yù)設(shè)的閾值范圍為80%-120%,在當(dāng)前時刻,所述負(fù)載最小的服務(wù)器的的Pi值為10%,在確定出當(dāng)前負(fù)載最小的服務(wù)器后,將后續(xù)出現(xiàn)的用戶設(shè)備的連接請求連續(xù)發(fā)送給該負(fù)載最小的服務(wù)器。與此同時,實時地接收該負(fù)載最小的服務(wù)器發(fā)送的對應(yīng)該服務(wù)器當(dāng)前負(fù)載狀態(tài)值的數(shù)據(jù),并計算和判斷該負(fù)載最小的服務(wù)器的Pi值是否到達(dá)所述預(yù)設(shè)的閾值范圍。假設(shè)在后續(xù)的某一時刻,計算得出所述負(fù)載最小的服務(wù)器的Pi值為80%,則停止向所述負(fù)載最小的服務(wù)器發(fā)送當(dāng)前來自于用戶設(shè)備的連接請求,將當(dāng)前時刻來自于用戶設(shè)備的連接請求采取平均分配的方式發(fā)送給所述多個服務(wù)器。
可選地,所述多個服務(wù)器發(fā)送的用于表征本服務(wù)器當(dāng)前負(fù)載狀態(tài)值的數(shù)據(jù)為本服務(wù)器當(dāng)前已接收到的用戶設(shè)備的連接請求的總數(shù)量。
可選地,所述接收多個服務(wù)器發(fā)送的用于表征本服務(wù)器當(dāng)前負(fù)載狀態(tài)值的數(shù)據(jù)是周期性地進(jìn)行的。
可選地,所述計算每一服務(wù)器當(dāng)前負(fù)載狀態(tài)值占所述多個服務(wù)器當(dāng)前總負(fù)載狀態(tài)值的平均值的比例是周期性地進(jìn)行的。
上述周期,例如可以設(shè)定為10ms,20ms等等,可根據(jù)具體情況進(jìn)行設(shè)定。
可選地,將所述連接請求發(fā)送給所述負(fù)載最小的服務(wù)器,具體包括:
從本地文件的哈希表中獲取所述負(fù)載最小的服務(wù)器的IP地址;
根據(jù)所述IP地址,將所述連接請求發(fā)送給所述負(fù)載最小的服務(wù)器。
可選地,當(dāng)從所述多個服務(wù)器中確定出當(dāng)前負(fù)載最小的服務(wù)器的數(shù)量為多個時,從所述多個負(fù)載最小的服務(wù)器中隨機(jī)選取一個服務(wù)器,并將所述連接請求發(fā)送給該服務(wù)器。
例如,在多個服務(wù)器中,計算得出有兩個服務(wù)器分別對應(yīng)的當(dāng)前負(fù)載狀態(tài)值占所述多個服務(wù)器當(dāng)前總負(fù)載狀態(tài)值的平均值的比例值相同,這時,當(dāng)前負(fù)載最小的服務(wù)器的數(shù)量就為2,在這種情況下,就可以從這兩個負(fù)載最小的服務(wù)器中隨機(jī)選取一個服務(wù)器,并將當(dāng)前來自于用戶設(shè)備的連接請求發(fā)送給該服務(wù)器。
可選地,在分配用戶設(shè)備連接請求前以及分配用戶設(shè)備連接請求之后,所述多個服務(wù)器與用戶設(shè)備之間建立連接的方式為長連接。
可選地,本申請實施例提供的一種用戶設(shè)備連接請求分配的方法,適用于長連接的情況,以解決長連接情況下多個服務(wù)器負(fù)載快速均衡的問題。當(dāng)然,本申請實施例提供的用戶設(shè)備連接請求分配的方法應(yīng)用于短連接的情況也是可以的。
下面結(jié)合具體的應(yīng)用場景,對本申請實施例進(jìn)行詳細(xì)的闡述。
假設(shè)當(dāng)前時刻,系統(tǒng)集群中有3個服務(wù)器,分別為服務(wù)器A,服務(wù)器B和服務(wù)器C,這三個服務(wù)器的負(fù)載均衡由負(fù)載均衡服務(wù)器執(zhí)行,來自用戶設(shè)備的請求,由負(fù)載均衡服務(wù)器發(fā)送給服務(wù)器A,服務(wù)器B、服務(wù)器C,如圖2a所示。
在下一時刻,由于集群中的3個服務(wù)器受到其物理配置等原因,其負(fù)載達(dá)到可以擴(kuò)容的范圍,此時,集群中需要新增加一服務(wù)器,即服務(wù)器D,如圖2b所示。
其中,圖2a和圖2b中所示的A請求、B請求、C請求等均只是示意性的,并不代表各服務(wù)器實際接收到的用戶設(shè)備的連接請求數(shù)量,相應(yīng)地,用戶設(shè)備側(cè)的連接請求也只是示意性的。在實際應(yīng)用場景中,用戶設(shè)備的連接請求的數(shù)量很多,每個服務(wù)器所處理的用戶設(shè)備的連接請求數(shù)量也很多,比如可以是100 個、1000個等等。
此時,本申請實施例中,對用戶設(shè)備的連接請求分配的方法可參見圖3,以使得所述四個服務(wù)器(服務(wù)器A,服務(wù)器B、服務(wù)器C和服務(wù)器D)的負(fù)載快速均衡,該方法具體包括:
步驟201、接收四個服務(wù)器發(fā)送的用于表征本服務(wù)器當(dāng)前負(fù)載狀態(tài)值的數(shù)據(jù)以及用戶設(shè)備發(fā)送的連接請求,之后轉(zhuǎn)向步驟202;
步驟202、針對任一所述服務(wù)器,根據(jù)該服務(wù)器發(fā)送的所述表征該服務(wù)器當(dāng)前負(fù)載狀態(tài)值的數(shù)據(jù),計算該服務(wù)器當(dāng)前負(fù)載狀態(tài)值占所述多個服務(wù)器當(dāng)前總負(fù)載狀態(tài)值的平均值的比例Pi,之后轉(zhuǎn)向步驟203;
在本實施例中,負(fù)載均衡服務(wù)器將接收到的四個服務(wù)器發(fā)送的用于表征本服務(wù)器當(dāng)前負(fù)載狀態(tài)值的數(shù)據(jù)保存在本地文件的哈希表中,并將計算的每一服務(wù)器的Pi值也保存在本地文件的哈希表中,具體可參見表1所示。
表1
這里,需要強(qiáng)調(diào)的是表1中的哈希表中的數(shù)據(jù)也只是示意性的給出,并不代表服務(wù)器實際工作中的負(fù)載狀態(tài)值及Pi值。
步驟203、判斷所述四個服務(wù)器的Pi值是否在預(yù)設(shè)的閾值范圍內(nèi),若所述四個服務(wù)器的Pi值均在所述預(yù)設(shè)的閾值范圍,則執(zhí)行步驟205,否則執(zhí)行步驟204;
假設(shè)本實施例設(shè)定的閾值范圍為80%-120%,由步驟202的計算結(jié)果(參見表1)可知,邏輯服務(wù)器D的Pi值不在預(yù)設(shè)的范圍內(nèi)。
步驟204、從所述多個服務(wù)器中確定出當(dāng)前負(fù)載最小的服務(wù)器,之后轉(zhuǎn)入步驟206;
這里,具體可利用表1中四個服務(wù)器對應(yīng)的負(fù)載狀態(tài)值進(jìn)行排序,進(jìn)而確定出當(dāng)前負(fù)載最小的服務(wù)器,即服務(wù)器D。
步驟205、平均分配來自于用戶設(shè)備的連接請求給所述四個服務(wù)器;
步驟206、將當(dāng)前來自于用戶設(shè)備的連接請求發(fā)送給所述負(fù)載最小的服務(wù)器。
這里,從經(jīng)過排序的哈希表中讀取服務(wù)器D的IP地址,進(jìn)而將當(dāng)前來自于用戶設(shè)備的連接請求發(fā)送給服務(wù)器D對應(yīng)的IP地址。
至此,實現(xiàn)新增加的服務(wù)器D的負(fù)載快速地與集群中其他服務(wù)器的負(fù)載達(dá)到平衡。
參見圖4,本申請實施例提供了一種用戶設(shè)備連接請求分配的裝置,包括:
接收單元11,用于接收多個服務(wù)器發(fā)送的用于表征本服務(wù)器當(dāng)前負(fù)載狀態(tài)值的數(shù)據(jù)以及用戶設(shè)備發(fā)送的連接請求;
處理單元12,用于根據(jù)每一所述服務(wù)器發(fā)送的用于表征本服務(wù)器當(dāng)前負(fù)載狀態(tài)值的數(shù)據(jù),對所述連接請求進(jìn)行分配。
可選地,所述處理單元12具體用于:
針對每一所述服務(wù)器,根據(jù)該服務(wù)器發(fā)送的所述表征該服務(wù)器當(dāng)前負(fù)載狀態(tài)值的數(shù)據(jù),計算該服務(wù)器當(dāng)前負(fù)載狀態(tài)值占所述多個服務(wù)器當(dāng)前總負(fù)載狀態(tài)值的平均值的比例;
當(dāng)所述多個服務(wù)器中存在任一服務(wù)器對應(yīng)的當(dāng)前負(fù)載狀態(tài)值占所述多個服務(wù)器當(dāng)前總負(fù)載狀態(tài)值的平均值的比例不在預(yù)設(shè)的閾值范圍內(nèi)時,從所述多個服務(wù)器中確定出當(dāng)前負(fù)載最小的服務(wù)器;
將所述連接請求發(fā)送給所述負(fù)載最小的服務(wù)器。
可選地,所述接收單元11接收的所述多個服務(wù)器發(fā)送的用于表征本服務(wù)器當(dāng)前負(fù)載狀態(tài)值的數(shù)據(jù)為本服務(wù)器當(dāng)前已接收到的用戶設(shè)備的連接請求的 總數(shù)量。
可選地,所述處理單元12具體還用于:
當(dāng)所述多個服務(wù)器對應(yīng)的該服務(wù)器當(dāng)前負(fù)載狀態(tài)值占所述多個服務(wù)器當(dāng)前總負(fù)載狀態(tài)值的平均值的比例,均在所述預(yù)設(shè)的閾值范圍內(nèi)時,平均分配來自于用戶設(shè)備的連接請求給所述多個服務(wù)器。
可選地,所述處理單元12將用戶設(shè)備的連接請求發(fā)送給所述負(fù)載最小的服務(wù)器時,還用于:
當(dāng)所述負(fù)載最小的服務(wù)器對應(yīng)的當(dāng)前負(fù)載狀態(tài)值占所述多個服務(wù)器當(dāng)前總負(fù)載狀態(tài)值的平均值的比例到達(dá)所述預(yù)設(shè)的閾值范圍內(nèi)時,停止向所述負(fù)載最小的服務(wù)器發(fā)送當(dāng)前來自于用戶設(shè)備的連接請求;
將用戶設(shè)備的連接請求采取平均分配的方式發(fā)送給所述多個服務(wù)器。
可選地,所述接收單元11周期性地接收所述多個服務(wù)器發(fā)送的用于表征本服務(wù)器當(dāng)前負(fù)載狀態(tài)值的數(shù)據(jù)。
可選地,所述處理單元12周期性地計算每一服務(wù)器當(dāng)前負(fù)載狀態(tài)值占所述多個服務(wù)器當(dāng)前總負(fù)載狀態(tài)值的平均值的比例。
可選地,所述處理單元12將所述連接請求發(fā)送給所述負(fù)載最小的服務(wù)器時,具體用于:
從本地文件的哈希表中獲取所述負(fù)載最小的服務(wù)器的IP地址;
根據(jù)所述IP地址,將所述連接請求發(fā)送給所述負(fù)載最小的服務(wù)器。
可選地,所述處理單元12當(dāng)從所述多個服務(wù)器中確定出當(dāng)前負(fù)載最小的服務(wù)器的數(shù)量為多個時,從所述多個負(fù)載最小的服務(wù)器中隨機(jī)選取一個服務(wù)器,并將所述連接請求發(fā)送給該服務(wù)器。
可選地,所述裝置在分配用戶設(shè)備連接請求前以及分配用戶設(shè)備連接請求之后,所述多個服務(wù)器與用戶設(shè)備之間建立連接的方式為長連接。
本申請實施例可通過具體的硬件處理器來實現(xiàn)上述各功能單元。
本申請實施例提供的該負(fù)載均衡的裝置,例如可以為上述的負(fù)載均衡服務(wù) 器。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本申請的實施例可提供為方法、系統(tǒng)、或計算機(jī)程序產(chǎn)品。因此,本申請可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本申請可采用在一個或多個其中包含有計算機(jī)可用程序代碼的計算機(jī)可用存儲介質(zhì)(包括但不限于磁盤存儲器和光學(xué)存儲器等)上實施的計算機(jī)程序產(chǎn)品的形式。
本申請是參照根據(jù)本申請實施例的方法、設(shè)備(系統(tǒng))、和計算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機(jī)程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機(jī)程序指令到通用計算機(jī)、專用計算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機(jī)器,使得通過計算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計算機(jī)程序指令也可存儲在能引導(dǎo)計算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機(jī)可讀存儲器中,使得存儲在該計算機(jī)可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機(jī)程序指令也可裝載到計算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機(jī)實現(xiàn)的處理,從而在計算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
顯然,本領(lǐng)域的技術(shù)人員可以對本申請進(jìn)行各種改動和變型而不脫離本申請的精神和范圍。這樣,倘若本申請的這些修改和變型屬于本申請權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本申請也意圖包含這些改動和變型在內(nèi)。