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