本申請(qǐng)涉及計(jì)算機(jī)領(lǐng)域,具體地,涉及一種流量負(fù)載均衡的方法和系統(tǒng),通過動(dòng)態(tài)獲取集群各個(gè)節(jié)點(diǎn)的流量負(fù)載情況,根據(jù)實(shí)時(shí)動(dòng)態(tài)獲取到的實(shí)際流量負(fù)載情況進(jìn)行動(dòng)態(tài)調(diào)度。
背景技術(shù):
隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,統(tǒng)一日志系統(tǒng)的數(shù)據(jù)越來越龐大。網(wǎng)絡(luò)系統(tǒng)往往需要轉(zhuǎn)發(fā)中心來根據(jù)用戶的訂閱信息進(jìn)行數(shù)據(jù)量的轉(zhuǎn)發(fā)。該轉(zhuǎn)發(fā)中心將承載所有數(shù)據(jù)流量,單臺(tái)轉(zhuǎn)發(fā)中心往往無法滿足接收和轉(zhuǎn)發(fā)龐大的數(shù)據(jù)量,因此,需要多臺(tái)轉(zhuǎn)發(fā)中心來進(jìn)行操作。
盡管多臺(tái)轉(zhuǎn)發(fā)中心可以解決上述問題,然而多臺(tái)轉(zhuǎn)發(fā)中心面臨怎樣保證流量負(fù)載均衡的問題。如果流量負(fù)載不均衡,則多臺(tái)轉(zhuǎn)發(fā)中心中的某一臺(tái)轉(zhuǎn)發(fā)中心同樣會(huì)遇到無法滿足接收和轉(zhuǎn)發(fā)龐大的數(shù)據(jù)量的問題。
因此,研發(fā)了流量負(fù)載均衡的各種方法,例如,隨機(jī),輪詢等。然而,由于各客戶端傳輸?shù)睫D(zhuǎn)發(fā)中心的流量動(dòng)態(tài)變化,每一個(gè)客戶端的流量均不一樣,且不同客戶端之間差距可能很多倍,所以按照客戶端的數(shù)量進(jìn)行輪詢和隨機(jī)肯定是不行的。此外,解決上述問題的另一方法是按照轉(zhuǎn)發(fā)中心的流量來進(jìn)行選擇。這種方案能夠解決在某一個(gè)時(shí)刻靜態(tài)的分配流量,而無法實(shí)現(xiàn)動(dòng)態(tài)實(shí)現(xiàn)流量負(fù)載均衡的目的。在長(zhǎng)連接進(jìn)行傳輸?shù)膱?chǎng)景下,這種方法會(huì)導(dǎo)致后端實(shí)際處理流量的服務(wù)器很不均衡,造成一部分服務(wù)器非??臻e,另一部分服務(wù)器非常忙碌,甚至可能由于處理巨大的流量而宕機(jī)。這種均衡方案一般只適合各個(gè)客戶端流量都很均衡的情況,不適合在流量大而且流量經(jīng)常變化的場(chǎng)景。
現(xiàn)有技術(shù)流量均衡方案對(duì)于流量動(dòng)態(tài)變化的場(chǎng)景基本上達(dá)不到 流量均衡的效率,只能實(shí)現(xiàn)連接數(shù)量或者客戶端的數(shù)量是均衡的,不能保證真正的流量均衡。
為了解決動(dòng)態(tài)流量均衡的問題,本申請(qǐng)?zhí)岢隽艘环N流量負(fù)載均衡的方法和系統(tǒng),通過動(dòng)態(tài)獲取集群各個(gè)節(jié)點(diǎn)的流量負(fù)載情況,根據(jù)實(shí)時(shí)動(dòng)態(tài)獲取到的實(shí)際流量負(fù)載情況進(jìn)行動(dòng)態(tài)調(diào)度。
技術(shù)實(shí)現(xiàn)要素:
本公開的方面在于解決至少上述問題和/或缺點(diǎn)并提供至少下述優(yōu)點(diǎn)。
本發(fā)明的一個(gè)方面涉及一種在包括多個(gè)節(jié)點(diǎn)的網(wǎng)絡(luò)中進(jìn)行流量負(fù)載均衡的方法,其中所述方法可以包括:收集各個(gè)節(jié)點(diǎn)的流量;計(jì)算所述流量中的最大值和最小值之間的差值l;確定所述差值l是否大于或等于預(yù)定流量均衡閾值m;以及響應(yīng)于確定所述差值l大于或等于預(yù)定流量均衡閾值m,將與流量最大的節(jié)點(diǎn)相連的各客戶端中的一個(gè)或更多個(gè)客戶端切換到與流量最小的節(jié)點(diǎn)相連。
優(yōu)選地,所述方法還可以包括:響應(yīng)于確定所述差值l小于預(yù)定流量均衡閾值m,繼續(xù)收集各節(jié)點(diǎn)的流量。
優(yōu)選地,所述將與流量最大的節(jié)點(diǎn)相連的各客戶端中的一個(gè)或更多個(gè)客戶端切換到與流量最小的節(jié)點(diǎn)相連可以包括:收集與流量最大的節(jié)點(diǎn)相連的各客戶端的客戶端流量;以及根據(jù)收集的客戶端流量選擇一個(gè)或更多個(gè)客戶端以切換到與流量最小的節(jié)點(diǎn)相連。
優(yōu)選地,所述根據(jù)收集的客戶端流量選擇一個(gè)或更多個(gè)客戶端以切換到與流量最小的節(jié)點(diǎn)相連可以包括:從大到小地對(duì)各客戶端的客戶端流量排序,并提取第i個(gè)客戶端的客戶端流量yi,i的初始值為1;將第i個(gè)客戶端的客戶端流量yi與差值l進(jìn)行比較;響應(yīng)于客戶端流量yi小于或等于差值l,將第i個(gè)客戶端切換到與流量最小的節(jié)點(diǎn)相連;計(jì)算差值l與客戶端流量yi的二倍之間的差值,并將計(jì)算結(jié)果作為新的差值l’;確定所述新的差值l’是否大于或等于預(yù)定流量均衡閾值m;以及響應(yīng)于確定所述新的差值l’大于或等于預(yù)定流量均衡閾值m,判斷是否遍歷完與具有最大流量值的節(jié)點(diǎn)相連的全部客戶端 的客戶端流量,其中響應(yīng)于確定沒有遍歷完所述全部客戶端的客戶端流量,令i=i+1,并返回到所述提取操作,直到遍歷完所有客戶端流量為止。
優(yōu)選地,所述方法可以包括:響應(yīng)于確定所述新的差值l’小于預(yù)定流量均衡閾值m,結(jié)束所述選擇一個(gè)或更多個(gè)客戶端以切換到與流量最小的節(jié)點(diǎn)相連的操作。
優(yōu)選地,所述方法可以包括:當(dāng)將客戶端流量yi與差值l進(jìn)行比較時(shí),響應(yīng)于客戶端流量yi大于差值l,跳至所述判斷是否遍歷完與具有最大流量值的節(jié)點(diǎn)相連的全部客戶端的客戶端流量的步驟。
優(yōu)選地,每隔預(yù)定時(shí)間間隔就收集網(wǎng)絡(luò)中的各個(gè)節(jié)點(diǎn)的流量值。
根據(jù)本公開的另一方面,提供了一種在基于節(jié)點(diǎn)的網(wǎng)絡(luò)中進(jìn)行流量負(fù)載均衡的系統(tǒng),其中所述系統(tǒng)可以包括:轉(zhuǎn)發(fā)中心集群,由兩個(gè)或更多個(gè)節(jié)點(diǎn)構(gòu)成;多個(gè)客戶端,配置為分別與所述兩個(gè)或更多個(gè)節(jié)點(diǎn)之一相連并進(jìn)行通信;流量負(fù)載均衡調(diào)度器,配置為:從所述轉(zhuǎn)發(fā)中心集群收集各個(gè)節(jié)點(diǎn)的流量值;計(jì)算所述流量中的最大值和最小值之間的差值l;確定所述差值l是否大于或等于預(yù)定流量均衡閾值m;以及響應(yīng)于確定所述差值l大于或等于預(yù)定流量均衡閾值m,將所述與流量最大的節(jié)點(diǎn)相連的各客戶端中的一個(gè)或更多個(gè)客戶端切換到與流量最小的節(jié)點(diǎn)相連。
優(yōu)選地,所述流量負(fù)載均衡調(diào)度器還可以配置為:響應(yīng)于確定所述差值l小于預(yù)定流量均衡閾值m,繼續(xù)收集各節(jié)點(diǎn)的流量。
優(yōu)選地,所述流量負(fù)載均衡調(diào)度器還可以配置為:收集與流量最大的節(jié)點(diǎn)相連的各客戶端的客戶端流量;以及根據(jù)收集的客戶端流量選擇一個(gè)或更多個(gè)客戶端以切換到與流量最小的節(jié)點(diǎn)相連。
附圖說明
以下結(jié)合附圖,將更清楚本公開的示例實(shí)施例的上述和其它方面、特征以及優(yōu)點(diǎn),附圖中:
圖1示出了根據(jù)本發(fā)明示例實(shí)施例的流量負(fù)載均衡的系統(tǒng)的示意圖;
圖2示出了根據(jù)本發(fā)明示例實(shí)施例的流量負(fù)載均衡的方法的流程圖;以及
圖3示出了根據(jù)本發(fā)明另一示例實(shí)施例的流量負(fù)載均衡的方法的流程圖。
具體實(shí)施方式
圖1示出了根據(jù)本發(fā)明示例實(shí)施例的流量負(fù)載均衡的系統(tǒng)的示意圖。
在圖1中,根據(jù)本發(fā)明示例實(shí)施例的流量負(fù)載均衡的系統(tǒng)可以包括轉(zhuǎn)發(fā)中心集群100、多個(gè)客戶端200和流量負(fù)載均衡調(diào)度器300。具體,所述轉(zhuǎn)發(fā)中心集群100可以包括一個(gè)或更多個(gè)轉(zhuǎn)發(fā)中心節(jié)點(diǎn)101-103,用于轉(zhuǎn)發(fā)進(jìn)行數(shù)據(jù)的轉(zhuǎn)發(fā)。多個(gè)客戶端200-1、200-2、200-3等可以與轉(zhuǎn)發(fā)中心集群100中的轉(zhuǎn)發(fā)中心節(jié)點(diǎn)之一(101、102或103)相連并與之進(jìn)行數(shù)據(jù)傳輸。流量負(fù)載均衡調(diào)度器300用于動(dòng)態(tài)定時(shí)或以可配置的時(shí)間間隔獲取所有節(jié)點(diǎn)的流量,并可以根據(jù)需要來獲取與某一節(jié)點(diǎn)相連的各個(gè)客戶端的客戶端流量。流量負(fù)載均衡調(diào)度器300根據(jù)各節(jié)點(diǎn)的流量和/或個(gè)客戶端的客戶端流量的情況,制定調(diào)度策略,并把調(diào)度策略形成的調(diào)度指令下發(fā)給需要調(diào)度的客戶端,讓客戶端重新選擇指定的轉(zhuǎn)發(fā)中節(jié)點(diǎn)進(jìn)行數(shù)據(jù)傳輸。
下文將參考圖2來描述根據(jù)本發(fā)明示例實(shí)施例的流量負(fù)載均衡的方法的示意圖。具體地,在步驟s201,流量負(fù)載均衡調(diào)度器300收集各個(gè)節(jié)點(diǎn)的流量。這些節(jié)點(diǎn)接收與之相連的客戶端鏈接傳輸過來的數(shù)據(jù),其中這些節(jié)點(diǎn)與客戶端之間的連接可以是長(zhǎng)連接。例如,網(wǎng)絡(luò)中部署有n個(gè)需要流量負(fù)載均衡的節(jié)點(diǎn),流量負(fù)載均衡調(diào)度器300實(shí)時(shí)地收集所述n個(gè)節(jié)點(diǎn)的流量。
隨后,在步驟s202,計(jì)算所述流量中的最大值和最小值之間的差值l。存在多種用于計(jì)算所述差值l的方式,例如,流量負(fù)載均衡調(diào)度器可以把收集到的n個(gè)流量按照從小到大進(jìn)行排序,那么第一個(gè)就是與流量最小的節(jié)點(diǎn)相對(duì)應(yīng)的流量,最后一個(gè)就是與流量最大的節(jié)點(diǎn)相對(duì)應(yīng)的流量,從而可以計(jì)算出所述差值l。應(yīng)注意,按照從小到大 的順序僅是一個(gè)示例,還可以按照從大到小的順序流量進(jìn)行排序?;蛘呖梢圆粚?duì)收集到的n個(gè)流量進(jìn)行排序,而是通過尋求最大值和最小值的算法來計(jì)算二者之間的差值l。
接著,在步驟s203,確定所述差值l是否大于或等于預(yù)定流量均衡閾值m,其中m可以是由用戶預(yù)設(shè)的或系統(tǒng)默認(rèn)的。當(dāng)差值l大于或等于預(yù)定流量均衡閾值m時(shí),說明節(jié)點(diǎn)之間的流量負(fù)載較不均衡,需要進(jìn)行流量負(fù)載均衡處理。相反,當(dāng)差值l小于預(yù)定流量均衡閾值m時(shí),說明節(jié)點(diǎn)之間的流量負(fù)載較為均衡,不需要進(jìn)行流量負(fù)載均衡處理。
響應(yīng)于確定所述差值l大于或等于預(yù)定流量均衡閾值m,即,需要進(jìn)行流量負(fù)載均衡,在步驟s204,將與流量最大的節(jié)點(diǎn)相連的各客戶端中的一個(gè)或更多個(gè)客戶端切換到與流量最小的節(jié)點(diǎn)相連。具體地,在本公開中,將客戶端從與一個(gè)節(jié)點(diǎn)相連的狀態(tài)切換到與另一節(jié)點(diǎn)相連的狀態(tài)的操作可以是通過以下操作實(shí)現(xiàn)的:負(fù)載均衡調(diào)度器向?qū)?yīng)客戶端發(fā)送調(diào)度指令,所述調(diào)度指令使所述客戶端鏈接到指定的轉(zhuǎn)發(fā)中心節(jié)點(diǎn)。客戶端在接收到所述調(diào)度指令之后,結(jié)束對(duì)當(dāng)前數(shù)據(jù)的傳輸并斷開與原來轉(zhuǎn)發(fā)中心節(jié)點(diǎn)的鏈接,然后鏈接到流量負(fù)載均衡調(diào)度器300指定的轉(zhuǎn)發(fā)中心節(jié)點(diǎn)。此外,如果差值l小于預(yù)定流量均衡閾值m,即,此時(shí)無需進(jìn)行流量負(fù)載均衡,則流量負(fù)載均衡調(diào)度器300可以繼續(xù)收集各節(jié)點(diǎn)的流量。
以上描述了根據(jù)本發(fā)明示例實(shí)施例的流量負(fù)載均衡的方法的流程圖。下面將結(jié)合具體實(shí)現(xiàn)方式來描述根據(jù)本發(fā)明另一示例實(shí)施例的流量負(fù)載均衡的方法的流程圖。
圖3示出了根據(jù)本發(fā)明另一示例實(shí)施例的流量負(fù)載均衡的方法的流程圖。圖3中的步驟s301-s303與圖2中的步驟s201-s203相似,因此將不再進(jìn)行贅述。
與圖2有所不同的是,在圖3中,響應(yīng)于確定差值l大于或等于預(yù)定流量均衡閾值m,即,需要進(jìn)行流量負(fù)載均衡,在步驟304,流量負(fù)載均衡調(diào)度器300可以收集與流量最大的節(jié)點(diǎn)相連的各客戶端的客戶端流量,并根據(jù)收集的客戶端流量選擇一個(gè)或更多個(gè)客戶端以切 換到與流量最小的節(jié)點(diǎn)相連。具體地,在步驟305,從大到小地對(duì)各客戶端的客戶端流量排序,并提取第i個(gè)客戶端的客戶端流量yi。應(yīng)注意,盡管本文描述了將客戶端流量yi從大到小地進(jìn)行排序,然而本發(fā)明還可以以其他排序方式(例如,從小到大,或隨機(jī)地)。此外,如果在步驟s302已經(jīng)進(jìn)行排序,在此可以省略排序,或基于在步驟s302進(jìn)行的排序執(zhí)行后續(xù)操作。相較于其他排序方式,從大到小的進(jìn)行排序可以保證以更快的速度切換較少的客戶端,從而較塊地達(dá)到流量負(fù)載均衡。在對(duì)客戶端流量從大到小的進(jìn)行排序的情況下,i的初始值優(yōu)選為等于1。
在步驟s306,將第i個(gè)客戶端的客戶端流量yi與差值l進(jìn)行比較。響應(yīng)于客戶端流量yi大于差值l,則跳至步驟s311,確定是否已遍歷完與流量最大的節(jié)點(diǎn)相連的全部客戶端的客戶端流量yi。如果是,則結(jié)束所述流量均衡處理。如果沒有遍歷完與流量最大的節(jié)點(diǎn)相連的全部客戶端的客戶端流量yi,則在s312令i=i+1,使得提取下一客戶端的客戶端流量yi+1。然而,如果在步驟306確定客戶端流量yi小于或等于差值l,則流量負(fù)載均衡調(diào)節(jié)器300可以發(fā)送調(diào)度命令,以便使第i個(gè)客戶端切換到與流量最小的節(jié)點(diǎn)相連,即,將第i個(gè)客戶端從與流量最大的節(jié)點(diǎn)相連的狀態(tài)切換到與流量最小的節(jié)點(diǎn)相連的狀態(tài)。隨后,在步驟s308,計(jì)算差值l與客戶端流量yi的二倍之間的差值,即,此時(shí)上述兩節(jié)點(diǎn)之間的流量差值,并將計(jì)算結(jié)果作為新的差值l’,其中l(wèi)’=l-2×yi。在步驟s309,確定所述新的差值l’是否大于或等于預(yù)定流量均衡閾值m。在確定所述新的差值l’大于或等于預(yù)定流量均衡閾值m的情況下,即,在將第i個(gè)客戶端切換到與流量最小的節(jié)點(diǎn)相連之后,節(jié)點(diǎn)之間的流量負(fù)載仍是不均衡的,依然需要進(jìn)行流量均衡。此時(shí)在步驟s310,將新的差值l’賦予差值l,并在步驟s311判斷是否遍歷完與具有最大流量值的節(jié)點(diǎn)相連的全部客戶端的客戶端流量。響應(yīng)于確定沒有遍歷完所述全部客戶端的客戶端流量(s311-否),在步驟s312令i=i+1,并返回到所述提取操作(即返回到步驟s305),比較新的客戶端流量yi+1和新賦值的差值l,直到遍歷完所有客戶端流量為止。相反,如果確定定所述新的差值l’小于預(yù)定流量 均衡閾值m(s311-是),即,在將第i個(gè)客戶端切換到與流量最小的節(jié)點(diǎn)相連之后達(dá)到流量均衡,則結(jié)束所述選擇一個(gè)或更多個(gè)客戶端以切換到與流量最小的節(jié)點(diǎn)相連的操作。在結(jié)束操作之后,最終就會(huì)得到流量最大節(jié)點(diǎn)和流量最小節(jié)點(diǎn)差值最小的結(jié)果,也就是他們兩個(gè)流量最接近的狀態(tài),即,實(shí)現(xiàn)了流量均衡。應(yīng)注意,可以每隔預(yù)定時(shí)間重復(fù)執(zhí)行根據(jù)本發(fā)明示例實(shí)施例的方法。
根據(jù)本公開示例實(shí)施例的流量負(fù)載均衡方法和系統(tǒng)通過動(dòng)態(tài)獲取集群各個(gè)節(jié)點(diǎn)的流量負(fù)載情況,來根據(jù)實(shí)時(shí)動(dòng)態(tài)獲取到的實(shí)際流量負(fù)載情況進(jìn)行動(dòng)態(tài)調(diào)度。例如,所述方法可以應(yīng)用于統(tǒng)一日志系統(tǒng)中,通過采用這種方案讓各個(gè)轉(zhuǎn)發(fā)中心的流量基本上隨時(shí)都是處于平衡狀態(tài)的,提高了各個(gè)轉(zhuǎn)發(fā)中心節(jié)點(diǎn)的服務(wù)器利用率,并且由于良好的均衡效果,保證了整體系統(tǒng)的穩(wěn)定性。此外,所述方法也可以應(yīng)用于在分布式消息中間件傳輸消息的過程中,可以通過采用這種方案來進(jìn)行動(dòng)態(tài)改變消息的訂閱關(guān)系,保證消息中間件各個(gè)節(jié)點(diǎn)的流量動(dòng)態(tài)均衡。除了上述應(yīng)用之外,根據(jù)本公開所述的方法還可以應(yīng)用于進(jìn)行數(shù)據(jù)傳輸?shù)钠渌W(wǎng)絡(luò)通信系統(tǒng)中,尤其適合應(yīng)用于采用長(zhǎng)連接進(jìn)行數(shù)據(jù)傳輸?shù)耐ㄐ畔到y(tǒng),從而解決流量負(fù)載不均衡的問題,進(jìn)行實(shí)時(shí)動(dòng)態(tài)的流量均衡。
上述方法可以通過多種計(jì)算機(jī)裝置以可執(zhí)的程序命令形式實(shí)現(xiàn)并記錄在計(jì)算機(jī)可讀記錄介質(zhì)中。在這種情況下,計(jì)算機(jī)可讀記錄介質(zhì)可以包括單獨(dú)的程序命令、數(shù)據(jù)文件、數(shù)據(jù)結(jié)構(gòu)或其組合。同時(shí),記錄在記錄介質(zhì)中的程序命令可以專門設(shè)計(jì)或配置用于本公開,或是計(jì)算機(jī)軟件領(lǐng)域的技術(shù)人員已知應(yīng)用的。計(jì)算機(jī)可讀記錄介質(zhì)包括例如硬盤、軟盤或磁帶等磁性介質(zhì)、例如壓縮盤只讀存儲(chǔ)器(cd-rom)或數(shù)字通用盤(dvd)等光學(xué)介質(zhì)、例如光磁軟盤的磁光介質(zhì)以及例如存儲(chǔ)和執(zhí)行程序命令的rom、ram、閃存等硬件裝置。此外,程序命令包括編譯器形成的機(jī)器語言代碼和計(jì)算機(jī)通過使用解釋程序可執(zhí)行的高級(jí)語言。前面的硬件裝置可以配置成作為至少一個(gè)軟件模塊操作以執(zhí)行本公開的操作,并且逆向操作也是一樣的。
盡管以特定順序示出并描述了本文方法的操作,然而可以改變每 個(gè)方法的操作的順序,使得可以以相反順序執(zhí)行特定操作或使得可以至少部分地與其它操作同時(shí)來執(zhí)行特定操作。此外,本公開不限于上述示例實(shí)施例,它可以在不脫離本公開的精神和范圍的前提下,包括一個(gè)或多個(gè)其他部件或操作,或省略一個(gè)或多個(gè)其他部件或操作。
以上已經(jīng)結(jié)合本公開的優(yōu)選實(shí)施例示出了本公開,但是本領(lǐng)域的技術(shù)人員將會(huì)理解,在不脫離本公開的精神和范圍的情況下,可以對(duì)本公開進(jìn)行各種修改、替換和改變。因此,本公開不應(yīng)由上述實(shí)施例來限定,而應(yīng)由所附權(quán)利要求及其等價(jià)物來限定。