龍 笑,周 良,鄭洪源
(南京航空航天大學(xué) 計算機科學(xué)與技術(shù)學(xué)院,江蘇 南京 210016)
隨著物聯(lián)網(wǎng)和社交網(wǎng)絡(luò)的快速發(fā)展,流數(shù)據(jù)的規(guī)模不斷增長,流處理在交通監(jiān)測、氣象觀測和銀行交易管理等領(lǐng)域都有著廣泛的應(yīng)用。以無人機貨運實時流數(shù)據(jù)為例,其產(chǎn)生的流數(shù)據(jù)具有到達(dá)速度快、到達(dá)時間持續(xù)和動態(tài)改變等特點,傳統(tǒng)地大數(shù)據(jù)批處理框架已無法滿足實時性的需求。Storm作為分布式實時數(shù)據(jù)計算系統(tǒng),可以同時對數(shù)以億計的流數(shù)據(jù)進(jìn)行計算,比其他大數(shù)據(jù)計算框架更適合于實時流數(shù)據(jù)的處理。在數(shù)據(jù)處理要求實時性和高效率的情況下,節(jié)點的有效管理和資源的合理分配顯得愈發(fā)重要,負(fù)載均衡的重要性也愈發(fā)突出。Storm實時計算應(yīng)用程序通常是計算密集型應(yīng)用程序,負(fù)載平衡在Storm實時計算應(yīng)用程序的性能中起著決定性作用。
然而Storm默認(rèn)調(diào)度在負(fù)載均衡方面的表現(xiàn)卻無法令人滿意,存在著較多的問題。首先,Storm平臺在默認(rèn)的任務(wù)調(diào)度上采用的是輪詢調(diào)度(round robin scheduling),該算法將用戶提交的拓?fù)渲邪娜蝿?wù)平均分配給每個工作流程,再將各工作進(jìn)程平均分配到各工作節(jié)點上。由于其忽視了節(jié)點間性能和負(fù)載的差異,致使集群的資源利用率不高。其次,在集群節(jié)點動態(tài)增刪后,Storm無法根據(jù)集群計算資源的變化做出有效的策略調(diào)整,影響負(fù)載均衡。此外,Storm默認(rèn)任務(wù)調(diào)度算法只關(guān)心CPU利用率,而忽視了內(nèi)存、磁盤IO、網(wǎng)絡(luò)帶寬等節(jié)點資源,這可能導(dǎo)致工作節(jié)點內(nèi)存不足和網(wǎng)絡(luò)阻塞等問題。
針對Storm集群動態(tài)負(fù)載實時調(diào)度優(yōu)化問題,文中提出了一種基于布谷鳥搜索算法的Storm集群動態(tài)負(fù)載均衡策略(DLBSCSA)。該策略綜合考慮了節(jié)點的CPU、內(nèi)存、網(wǎng)絡(luò)帶寬、磁盤IO等資源,根據(jù)實時監(jiān)測到的負(fù)載數(shù)據(jù)為集群的節(jié)點性能賦予權(quán)值,通過布谷鳥搜索算法的尋優(yōu)過程動態(tài)調(diào)整權(quán)值,計算出節(jié)點上任務(wù)的分配權(quán)重,從而完成資源的動態(tài)分配,以此達(dá)到節(jié)點負(fù)載的均衡。
截止目前,愈來愈多的人開始關(guān)注Storm默認(rèn)調(diào)度算法的優(yōu)化。文獻(xiàn)[1]提出了一種資源感知在線調(diào)度算法RStorm,它利用任務(wù)需要與工作節(jié)點的靜態(tài)資源之間的關(guān)系來實現(xiàn)調(diào)度,但是,由于資源需求完全依賴于人工設(shè)置,因此無法在數(shù)據(jù)流快速變化的情況下實現(xiàn)在線調(diào)度。文獻(xiàn)[2]根據(jù)監(jiān)測到的數(shù)據(jù)實現(xiàn)實時調(diào)度,但改進(jìn)后的系統(tǒng)延遲略有提高。文獻(xiàn)[3]提出在線調(diào)度算法TStorm,通過實時監(jiān)測任務(wù)負(fù)載將通信開銷大的任務(wù)動態(tài)分配至空閑資源較多的節(jié)點上,但需人為設(shè)定拓?fù)渌璧墓?jié)點數(shù)量。
文獻(xiàn)[4]結(jié)合對歷史任務(wù)的恢復(fù)和對單個節(jié)點的任務(wù)調(diào)度等不同情況針對Storm進(jìn)行了改進(jìn)。文獻(xiàn)[5]提出了針對服務(wù)質(zhì)量感知的調(diào)度算法,使Storm適用于地理信息系統(tǒng)的研究。文獻(xiàn)[6]提出Storm環(huán)境下離線和在線的兩種自適應(yīng)調(diào)度算法,分別用于拓?fù)溥\行前后的結(jié)構(gòu)分析和實時負(fù)載監(jiān)測,但執(zhí)行時未將當(dāng)前任務(wù)與其直接通信的所有任務(wù)全部考慮進(jìn)來,容易陷入局部最優(yōu)。
文獻(xiàn)[7]引入拓?fù)錈徇叺母拍睿瑸闇p少通信開銷,將熱邊關(guān)聯(lián)的源和目標(biāo)任務(wù)調(diào)度到同一節(jié)點,但忽略了非熱邊的調(diào)度。文獻(xiàn)[8]提出一種兩階段調(diào)度算法,分別降低了進(jìn)程間和節(jié)點間的通信開銷,但并未考慮到各任務(wù)自身計算開銷的差異性。文獻(xiàn)[9]中提出了一種基于權(quán)重的任務(wù)調(diào)度算法,該算法根據(jù)每個任務(wù)的CPU資源和任務(wù)之間的數(shù)據(jù)流大小確定拓?fù)涞狞c權(quán)重和邊權(quán)重,并構(gòu)造每個節(jié)點承載的任務(wù)集,但其資源權(quán)重為靜態(tài)的,在面對集群節(jié)點資源變化的情況中表現(xiàn)不佳。
任務(wù)調(diào)度是非常有代表性的NP難問題,對其他物種行為特點進(jìn)行模仿能夠較好地解決此類問題,其中比較典型的有蟻群算法、遺傳算法及PSO算法,但它們存在諸如實時性差、早熟收斂、后期震蕩的問題。而布谷鳥搜索算法是Yang等[10]在2009年提出的一種智能優(yōu)化算法,該算法具有模型簡單、可調(diào)參數(shù)少及收斂速度快等優(yōu)點,目前已被許多領(lǐng)域應(yīng)用。文獻(xiàn)[11]針對作業(yè)調(diào)度問題提出一種模擬退火下布谷鳥算法;文獻(xiàn)[12]基于布谷鳥搜索算法,提出一種新的多處理器任務(wù)調(diào)度算法;文獻(xiàn)[13]針對當(dāng)前云計算資源調(diào)度開銷大等難題,提出了改進(jìn)布谷鳥搜索算法的云計算任務(wù)調(diào)度方法。
Storm的計算結(jié)構(gòu)[14]是Topology,即一個有向無環(huán)圖,其分別由stream,spout和bolt組成。Topology的核心數(shù)據(jù)結(jié)構(gòu)是tuple,數(shù)據(jù)流就是由無數(shù)的tuple組成的實序序列。spout及bolt構(gòu)成了組件,spout把stream分割為無數(shù)拓?fù)洌⒁罁?jù)Topology轉(zhuǎn)發(fā)相關(guān)拓?fù)?。bolt則是數(shù)據(jù)計算單位,由上游獲取拓?fù)洳⒃谔幚砗髮⒔Y(jié)果轉(zhuǎn)送下游bolt。Storm正是利用無數(shù)Topology來執(zhí)行實時流處理的。
Storm的默認(rèn)調(diào)度機制有兩個主要步驟:
(1)將executor線程分配至worker;
(2)將worker分配至工作節(jié)點。
默認(rèn)調(diào)度使用輪詢的方式,將executor分送到相應(yīng)worker上,然后當(dāng)集群slot資源足夠時,可以把任務(wù)均衡地分派到集群工作節(jié)點中。若slot缺少時,當(dāng)前已有的slot將被分派所有任務(wù)。
圖1 用戶提交的Topology
以圖1中用戶提交的Topology為例,假定當(dāng)前集群有3個工作節(jié)點且節(jié)點資源均很豐富,則在用戶提交Topology后默認(rèn)調(diào)度算法對任務(wù)的分配如下:
(1)工作節(jié)點1:T1,T4,T7;
(2)工作節(jié)點2:T2,T5,T8;
(3)工作節(jié)點3:T3,T6,T9。
默認(rèn)調(diào)度算法未考慮到不同工作節(jié)點的性能和負(fù)載差異,致使節(jié)點資源利用率不高,這將對Storm處理的實時性產(chǎn)生較大影響。同時,默認(rèn)調(diào)度策略更關(guān)心節(jié)點的CPU資源使用情況,而忽視了內(nèi)存、磁盤、網(wǎng)絡(luò)等其他類型的資源,這樣可能會造成工作節(jié)點內(nèi)存不足、網(wǎng)絡(luò)堵塞等問題。
Storm中的任務(wù)分配過程可描述為將一個Topology中的n個tasks分配到m個Supervisors工作節(jié)點上執(zhí)行的過程。初始描述為:
T={t1,t2,…,tn}表示n個任務(wù)集,其中ti(i=1,2,…,n)表示第i個task。
S={s1,s2,…,sm}表示m個Supervisor節(jié)點集,其中sj(j=1,2,…,m)表示第j個Supervisor節(jié)點。
為反應(yīng)CPU占用率、內(nèi)存占用率等資源的利用情況,用向量L表示m個節(jié)點的動態(tài)負(fù)載向量L=[l1,l2,…,lm]。設(shè)集群系統(tǒng)的節(jié)點sj的負(fù)載為L(sj),為計算L,引入集群節(jié)點性能向量U,有:
(1)
計算節(jié)點負(fù)載后,即可計算節(jié)點分配的權(quán)重(占比)向量W,W=[W1,W2,…,Wm],其中Wi的計算定義為:
(2)
根據(jù)節(jié)點分配的占比向節(jié)點分配任務(wù)。
根據(jù)DLBSCSA相關(guān)描述及定義,DLBSCSA設(shè)計的實質(zhì)是根據(jù)系統(tǒng)當(dāng)前或最近狀態(tài)決定如何給分布式系統(tǒng)的每個節(jié)點分配任務(wù),即找到最優(yōu)的節(jié)點任務(wù)分配權(quán)重。所以,當(dāng)集群節(jié)點的負(fù)載達(dá)到其最大承受程度時,集群能夠以最佳方式運作,系統(tǒng)的整體性能最好。而為了達(dá)到資源的動態(tài)負(fù)載均衡,最主要的是根據(jù)集群運轉(zhuǎn)情況實時地計算出最優(yōu)的資源分配權(quán)重。
動態(tài)負(fù)載均衡模型可以描述為:向m個節(jié)點分配n個任務(wù),綜合多個性能指標(biāo)加權(quán)計算反映節(jié)點的負(fù)載向量L,通過尋找最優(yōu)的權(quán)重向量α,使負(fù)載向量L能夠正確地反映集群系統(tǒng)的負(fù)載。再利用選擇函數(shù),根據(jù)歷史信息和動態(tài)權(quán)重合理而均衡地選取節(jié)點來對負(fù)載進(jìn)行處理,使整個任務(wù)具有最短的處理時間和最大的吞吐量。由于權(quán)重向量α隨集群的負(fù)載情況而變化,需要對其進(jìn)行實時檢測并動態(tài)地計算最新的α。動態(tài)負(fù)載均衡模型如圖2所示。
圖2 動態(tài)負(fù)載均衡模型
動態(tài)負(fù)載均衡的最終目的是減少集群響應(yīng)時間,做到任務(wù)的實時處理。為此將目標(biāo)函數(shù)定義為集群系統(tǒng)的平均響應(yīng)時間,目標(biāo)函數(shù)越小表示集群系統(tǒng)的總體性能越好。即
F=∑Res/m
(3)
其中,F(xiàn)為目標(biāo)函數(shù);Res為集群系統(tǒng)響應(yīng)時間向量。由上文知,Res由節(jié)點負(fù)載向量L,任務(wù)向量T和選擇函數(shù)Sel來確定,即:
Res=(L,T,Sel)
(4)
其中選擇函數(shù)Sel定義任務(wù)和節(jié)點間的映射關(guān)系,根據(jù)當(dāng)前任務(wù)c、負(fù)載分配歷史向量h及節(jié)點任務(wù)分配權(quán)重向量W來選取恰當(dāng)?shù)墓?jié)點對當(dāng)前任務(wù)進(jìn)行處理,若選擇的節(jié)點為sup,則有
sup=Sel(c,h,W)
(5)
根據(jù)式3知,目標(biāo)函數(shù)值越小說明集群的整體性能越好,即當(dāng)布谷鳥搜索算法求得的權(quán)重向量α收斂時目標(biāo)函數(shù)最?。?/p>
(6)
因此,基于布谷鳥搜索算法的Storm集群動態(tài)負(fù)載均衡策略即找到目標(biāo)函數(shù)的最優(yōu)解,從而可以將節(jié)點的性能權(quán)重α作為目標(biāo),通過布谷鳥搜索算法尋求α的最優(yōu)解。
根據(jù)上文,為實現(xiàn)資源的動態(tài)負(fù)載均衡,文中引入了布谷鳥搜索算法,通過其尋優(yōu)過程為節(jié)點的CPU、內(nèi)存、磁盤IO及網(wǎng)絡(luò)帶寬等資源賦予動態(tài)的權(quán)值,即尋找節(jié)點性能權(quán)重向量α的最優(yōu)解。
布谷鳥搜索算法是一種隨機搜索算法,它將布谷鳥寄生孵育雛鳥的生物學(xué)行為與一些鳥類和果蠅的萊維飛行行為結(jié)合起來。在本質(zhì)上,布谷鳥找到宿主鳥巢的過程是隨機的,為了對其進(jìn)行模擬,需要先設(shè)定以下幾個規(guī)則:
(1)布谷鳥每次產(chǎn)卵一枚,并采用隨機方式尋找宿主巢穴;
(3)可搜尋的巢穴數(shù)量是固定的,宿主鳥巢主人可以發(fā)覺外來卵的概率是P,鳥蛋一經(jīng)發(fā)現(xiàn)即會被宿主移除,或直接遺棄該鳥巢。
基于以上3個理想狀態(tài),布谷鳥尋找宿主鳥巢的位置更新公式如下:
(7)
在實際應(yīng)用中,鳥巢的位置表示問題的解的有效取值范圍,鳥巢的適應(yīng)度函數(shù)值表示目標(biāo)函數(shù)的值。文中算法由于尋優(yōu)的目標(biāo)是一個矢量,因此假定每個鳥巢中有若干個卵,分別代表一種解決方案,在更優(yōu)新解代替舊解的過程中尋找到權(quán)重向量的最優(yōu)解。因此位置更新公式為:
(8)
布谷鳥標(biāo)準(zhǔn)算法中的初始步長因子通常被設(shè)計為固定值,而之后步長的設(shè)定在尋優(yōu)過程中缺乏自適應(yīng),這樣會導(dǎo)致算法收斂性能下降,影響算法準(zhǔn)確性。因此文中在萊維飛行中加入自適應(yīng)方法設(shè)置動態(tài)的步長因子。將步長設(shè)置為第t次迭代中第j個解集中各解與初始值之間距離的平均值,即:
(9)
為最大限度地避免因步長過大而產(chǎn)生的算法最優(yōu)解的遺漏,則位置更新公式最終可表示為:
(10)
若想對產(chǎn)生的解進(jìn)行優(yōu)越性的評估,目標(biāo)函數(shù)需經(jīng)計算以具體數(shù)字形式體現(xiàn),由此定義了一個適應(yīng)度函數(shù):
(11)
函數(shù)fitness作為評價解的數(shù)值基準(zhǔn),評估解在時間效率方面的優(yōu)越性,適應(yīng)度越小表示解越優(yōu)。其中矩陣ETC中的值表示任務(wù)i在第j個節(jié)點上完成所需的理論時間,因此ETC矩陣可表示為:
美國官員和一些科學(xué)家希望到21世紀(jì)20年代中期能形成一種有效的治療方案,但臨床試驗的挫折加劇了人們的擔(dān)憂。紐約市西奈山伊坎醫(yī)學(xué)院阿爾茨海默病研究員塞繆爾·甘迪(Samuel Gandy)說:“我確信我們無法實現(xiàn)2025年的目標(biāo),看來我們的承諾要落空了。”對于把這么多錢僅僅集中于阿爾茨海默病的研究上,有些研究人員也表示出擔(dān)心。加州諾瓦托市巴克老齡化研究所的生物學(xué)家朱蒂·坎皮西(Judy Campisi)想知道,是否應(yīng)該多拿出一些資金來支持基礎(chǔ)研究,對于這樣有針對性的資助,生物醫(yī)學(xué)界“懷有復(fù)雜的心情”。
(12)
文中ETC矩陣的初始值通過幾次測試求均值后得到,由于任務(wù)不斷分派,未完成的任務(wù)數(shù)將越來越少,任務(wù)理論完成時間也會發(fā)生變化[15]。因此,任務(wù)的理論完成時間的更新公式定義為:
(13)
文中的布谷鳥搜索算法可以描述為:
(1)初始化算法相關(guān)參數(shù),確定宿主鳥巢的數(shù)目n,搜索空間維數(shù)d,外來鳥蛋被發(fā)現(xiàn)的概率P,設(shè)定全局最大迭代次數(shù)Max,步長初值a0,適應(yīng)度閾值Val。隨機選擇鳥窩的位置,設(shè)定t初值為0,鳥蛋代表的就是權(quán)重的解
(2)利用fitness函數(shù)(式11)對鳥窩位置的優(yōu)越性進(jìn)行評估,并對最佳鳥窩進(jìn)行記錄
(3)While(未達(dá)到最大迭代次數(shù)Max或適應(yīng)度函數(shù)大于閾值Val) do
(4)根據(jù)式9計算萊維飛行的動態(tài)步長因子
(5)根據(jù)式10更新鳥巢位置
(6)將當(dāng)前解作為計算負(fù)載向量L的參數(shù),代入模型中得到理論完成時間矩陣ETC,并根據(jù)適應(yīng)度函數(shù)(式11)評估鳥巢位置優(yōu)劣,若更優(yōu)則接受步驟中更新后的位置,否則保持位置不變
(7)if(K>P) then
(8)對當(dāng)前的鳥窩位置進(jìn)行隨機更新
(9)end if
(10)對鳥窩位置優(yōu)越性進(jìn)行評價,方法與步驟6中相同,若更優(yōu)則接受步驟8中更新后的位置,否則保持位置不變
(11)記錄迭代完成產(chǎn)生的最佳鳥窩位置
(12)end while
(13)輸出最優(yōu)值
經(jīng)過以上迭代,算法最終將收斂至一個最優(yōu)的性能權(quán)重向量α,能夠使該負(fù)載均衡模型正確計算集群當(dāng)前負(fù)載,并合理地分配新到達(dá)的負(fù)載。
根據(jù)布谷鳥搜索算法尋找到的最佳性能權(quán)重能夠得到集群節(jié)點當(dāng)前負(fù)載,從而得出分配權(quán)重向量W,文中通過實時監(jiān)聽節(jié)點的負(fù)載數(shù)據(jù)對任務(wù)的分配進(jìn)行動態(tài)調(diào)整。根據(jù)式2可求出節(jié)點上任務(wù)的分配權(quán)重,為進(jìn)一步確定任務(wù)處理的節(jié)點,需要綜合目前任務(wù)、負(fù)載分配歷史及節(jié)點任務(wù)分配權(quán)重來確定節(jié)點對當(dāng)前任務(wù)進(jìn)行處理,因此引入選擇函數(shù)來定義任務(wù)和節(jié)點間的映射關(guān)系,做出合理且平穩(wěn)的分配方案。通過一個判斷向量ThrVal來描述選擇函數(shù),對于集群節(jié)點有:
Hissu/ResTol≈Wsu/∑w
(14)
式14可作為負(fù)載平衡的目標(biāo),其中ResTol表示負(fù)載任務(wù)總數(shù),Hissu表示歷史任務(wù)分配向量的一個分量,即某個單個節(jié)點的歷史任務(wù)分配。計算節(jié)點的判斷向量ThrVal,單個節(jié)點的判斷分向量定義為:
ThrValsu=Wsu×ResTol-∑w×Hissu
(15)
因此選擇函數(shù)Sel可以描述為:
{δ=Sel(T,h,W)ThrValδ=max(ThrVal)}
(16)
利用選擇函數(shù)能夠準(zhǔn)確地根據(jù)任務(wù)分配權(quán)重進(jìn)行節(jié)點任務(wù)分派,實現(xiàn)集群的負(fù)載均衡,從而實現(xiàn)資源的合理分配。
實驗?zāi)康氖窃赟torm集群環(huán)境中,分別測試文中動態(tài)負(fù)載均衡算法與Storm默認(rèn)調(diào)度算法的處理延遲、系統(tǒng)吞吐量和負(fù)載均衡情況。比較和分析相關(guān)結(jié)果,驗證文中算法在性能上的先進(jìn)性。
實驗利用Pluggable Scheduler對Storm任務(wù)調(diào)度算法進(jìn)行自定義,而對于集群節(jié)點狀態(tài)的監(jiān)測則使用Ganglia,監(jiān)測諸如CPU、內(nèi)存、磁盤I/O和網(wǎng)絡(luò)帶寬等資源的利用情況,并根據(jù)Ganglia生成的數(shù)據(jù)對實驗結(jié)果進(jìn)行輔助分析。實驗采用5臺物理機器組成的Storm分布式集群,各個節(jié)點的硬件配置如表1所示。
表1 節(jié)點配置信息
每個節(jié)點運行Ubuntu 12.04操作系統(tǒng)。其中一個作為主節(jié)點運行Nimbus進(jìn)程,實現(xiàn)資源分配以及任務(wù)調(diào)度;從節(jié)點執(zhí)行Nimbus分派的任務(wù),啟動和停止由其自身管理的Worker進(jìn)程。同時還搭建了Zookeeper集群,它們始終處于運行狀態(tài)。
文中選擇典型的大數(shù)據(jù)處理應(yīng)用WordCount來進(jìn)行實驗,分別實現(xiàn)了默認(rèn)算法與文中算法的WordCount程序并提交到Storm集群運行。同時,為了避免其他不確定性對實驗結(jié)果的干擾,將2個程序進(jìn)行多次實驗,計算結(jié)果的平均值完成實驗的結(jié)果分析。
所有節(jié)點硬盤為20 GB,網(wǎng)卡為10 G bit。
在處理時延方面,文中算法與默認(rèn)調(diào)度算法的處理時延如圖3所示??梢钥闯?,較之于默認(rèn)調(diào)度算法,文中算法的處理時延大體上有所下降,約降低20%~25%左右。
圖3 算法時延比較
在系統(tǒng)吞吐量方面,文中基于布谷鳥搜索算法的Storm集群動態(tài)負(fù)載均衡算法與默認(rèn)調(diào)度算法的吞吐量如圖4所示。可以看出,較之于默認(rèn)調(diào)度算法,文中算法的吞吐量在整體上有所提高,約提高了20%左右。
針對負(fù)載均衡性能的測試,設(shè)計了四種對資源種類需求不一樣的Topology以評估文中算法在不同資源使用情況集群下的處理能力。其中,Topology1~Topology4分別屬于CPU密集型作業(yè)、內(nèi)存密集型作業(yè)、磁盤密集型作業(yè)、網(wǎng)絡(luò)密集型作業(yè)。各作業(yè)的估計資源使用值向量按CPU、內(nèi)存、磁盤IO和網(wǎng)絡(luò)帶寬的次序分別為:[9,4,4,3],[5,8,3,4],[2,4,5,9],[5,3,8,4]。將以上Topology均提交至Storm集群,其平均處理時間分別如圖5所示。
圖4 算法吞吐量比較
(a)Topology 1
(b)Topology 2
(c)Topology 3
從圖中可以看出,提交的四個Topology進(jìn)行初始時表現(xiàn)均不如默認(rèn)調(diào)度,而隨著節(jié)點資源的變化,文中算法平均處理時間逐漸降低并低于默認(rèn)算法。這是由于在作業(yè)初始時節(jié)點可提供資源相同,默認(rèn)的輪詢算法更有優(yōu)勢,而隨著節(jié)點資源的變化,默認(rèn)算法則表現(xiàn)乏力。較之于默認(rèn)調(diào)度算法,文中算法的作業(yè)平均處理時間縮短了一半左右,并且伴隨著時間推移逐步趨于穩(wěn)定,有助于提升作業(yè)的執(zhí)行效率。
針對Storm默認(rèn)任務(wù)調(diào)度算法存在的節(jié)點資源利用率不高及難以將節(jié)點資源與任務(wù)實際相結(jié)合等問題,提出了一種基于布谷鳥搜索算法的Storm集群動態(tài)負(fù)載均衡策略。通過引入布谷鳥搜索算法并稍作修改,將任務(wù)調(diào)度模擬為布谷鳥尋窩產(chǎn)卵的過程,通過算法的尋優(yōu)過程為集群的CPU、內(nèi)存及網(wǎng)絡(luò)帶寬等資源賦予動態(tài)權(quán)值,以完成資源的動態(tài)分配,達(dá)到節(jié)點負(fù)載的均衡。實驗結(jié)果表明,該算法可以實現(xiàn)資源的合理分配,與默認(rèn)算法相比具有更優(yōu)的任務(wù)調(diào)度效率,更高的集群吞吐量和更少的平均處理時間。