一種移動應用檢測負載均衡算法中計算負載值的方法
【技術領域】
[0001] 本發(fā)明屬于信息安全領域,設及移動應用檢測負載均衡的優(yōu)化方法,具體是一種 移動應用檢測負載均衡算法中計算負載值的方法。
【背景技術】
[0002] 由于移動應用檢測任務具有特殊性,難W將其切分為更細粒度的子文件,更不可 能對單個移動應用檢測任務進行簡單粗暴的平均大小切分,導致單個移動應用檢測任務內 的移動應用大小差別迴異,影響移動應用檢測任務的執(zhí)行效率。另外,影響移動應用檢測任 務的執(zhí)行效率的另一個因素是單個移動應用檢測任務內的控制流復雜度。
[0003] 控制流復雜度是指由移動應用檢測任務內部的執(zhí)行流程和執(zhí)行復雜度,由控制流 圖中的邊數和節(jié)點數體現;
[0004] 控制流圖(CFG,Con化〇1 flow graph,即控制流程圖),是一個過程或程序的抽象 表現。移動應用檢測任務的控制流圖,即移動應用中語句、語句塊和過程的執(zhí)行流抽象???制流圖是一個有向圖,包含N個節(jié)點node和M條邊edge。
[0005] 現有技術中采用McCabe復雜度度量標準,將軟件的流程圖轉化為有向圖,控制流 圖是Mc化be復雜度計算的基礎,McCabe復雜度度量作為移動應用檢測任務的環(huán)路復雜性度 量標準,一般用圈復雜度V(G)描述。實驗證明,圈復雜度越大的移動應用,靜態(tài)檢測時間越 長。
[0006] 圈復雜度的計算方法如下:
[0007] V(G)=e-n+2
[000引其中e為移動應用檢測任務中控制流圖中邊數,n為移動應用檢測任務中控制流圖 中的節(jié)點數。
[0009]負載均衡化oad Balancing)算法目的是為了提局任務執(zhí)行效率,提局系統(tǒng)吞吐 量,利用分布式結構提高系統(tǒng)執(zhí)行性能。通過平衡各檢測節(jié)點的負載情況,加強了各檢測節(jié) 點的數據處理能力、提高了可用性。各檢測節(jié)點的負載包括:各檢測節(jié)點上所有移動應用檢 測任務的網絡吞吐量、CPU負載率、內存使用率等;
[0010] 在傳統(tǒng)負載均衡算法中,一般使用CPU使用率、內存占用率、硬盤使用情況、網絡吞 吐量等作為服務器負載的衡量標準。
[0011] 但是,在海量移動應用檢測任務的應用場景下,由于移動應用文件小,在檢測過程 中,服務器硬盤的使用情況不會有很大的變化,硬盤使用量對移動應用的檢測影響較小;而 由于移動應用的存儲和檢測都在局域網環(huán)境下完成,局域網內網絡情況良好,小文件對網 絡帶寬要求不高,因此網絡吞吐量對移動應用的檢測效率也無明顯影響。
[0012] 在海量移動應用檢測任務的應用場景下,使用ActiveMQ將移動應用檢測任務存儲 在隊列服務器上,通過ActiveMQ提供的API獲取移動應用檢測任務的隊列大小,并配置隊列 最大長度,而檢測任務隊列的大小是衡量一個檢測任務需要等待的時間和預計返回時間的 最直接因素。
[0013] 綜上,針對海量移動應用檢測任務,傳統(tǒng)負載均衡算法中,只考慮了影響負載均衡 的W下幾類因素:1 )、檢測節(jié)點的CPU負載,包括CPU核數、CPU頻率、CPU使用百分比;2 )、檢測 節(jié)點的內存負載,包括空閑內存百分比;3)、檢測節(jié)點的任務隊列負載,包括任務隊列長度 和任務隊列最大長度。
[0014] 如若不考慮控制流復雜度,將會使整個檢測效率下降50% W上。在有多節(jié)點W及 海量應用需要檢測的情況下,檢測時間將會延遲超過1分鐘,無法滿足現階段海量移動應用 檢測的需求。
【發(fā)明內容】
[0015] 本發(fā)明針對海量移動應用檢測任務的處理請求,為了提高多線程并行處理效率, 結合現有的負載均衡計算方法,引入控制流復雜度作為檢測節(jié)點的負載信息,提出了一種 移動應用檢測負載均衡算法中計算負載值的方法,能短時檢測大量移動應用。
[0016] 具體步驟如下:
[0017] 步驟一、針對每個檢測節(jié)點,分別計算該檢測節(jié)點上每個移動應用檢測任務的控 制流復雜度Complexity;
[0018] 采用Mc化be復雜度度量標準,獲取每個移動應用檢測任務的控制流圖,從而獲取 該控制流圖的邊數和節(jié)點數,計算控制流復雜度Comp 1 exi ty;
[0019] Complexityj = ej-rij+2
[0020] Complexityj為第j個移動應用檢測任務的控制流復雜度;j為待檢測的移動應用 檢測任務的序號,j為整數;ej為第j個移動應用檢測任務的控制流圖的邊數,nj為第j個移動 應用檢測任務的控制流圖的節(jié)點數。
[0021] 步驟二、計算每個檢測節(jié)點上的所有移動應用檢測任務的CPU加權負載,內存加權 負載,隊列加權負載和控制流復雜度加權負載值之和LoadGrade:
[0022] LoadGrade i = Cw+Mw+Qw+Co 麗
[00剖其中,LoadGrade功檢測節(jié)點i的加權負載值之和;功檢測節(jié)點的序號,i為整數; Cw為檢測節(jié)點i的CPU加權負載值:Cw = Wcpu*CPUGradei;Wcpu是CPU加權負載值的權重; CPUGrade功檢測節(jié)點i的CPU負載值:
[0025] CPUCoresi為檢測節(jié)點i的CPU核數,單位為個;CPUG化i為檢測節(jié)點i的CPU主頻,單 位為GHz; CPUUsedPerci為檢測節(jié)點i的CPU使用百分比,單位為%。
[002引 Mw為檢測節(jié)點i的內存加權負載值:Mw = Wmemory*Mem0IrGradei ;Wmemory是內存加權 負載值的權重,MemoryGrade功檢測節(jié)點i的內存負載值:
[002引FreeMemoryi為檢測節(jié)點i的當前空閑內存,單位為%。
[0029] Qw為檢測節(jié)點i的隊列加權負載值:Qw=Wqueue*QueueGradei;Wqueue是隊列加權負載 值的權重,如eueGradei為檢測節(jié)點i的任務隊列負載值:
[0031 ]如eueCapacityi為檢測節(jié)點i的任務隊列容量即檢測節(jié)點i的任務隊列最大長度, 單位為個;如eueNumi為檢測節(jié)點i的任務隊列當前任務數量即隊列大小,單位為個。
[0032] Comw為檢測節(jié)點i的控制流復雜度加權負載值:
[0033] Comw=Wc〇mpiexii;y*Comp 1 ex i tyGradei
[0034] WGumpiexi巧為移動應用檢測節(jié)點的控制流復雜度的權重,ComplexityGradei為移動 應用檢測節(jié)點i的控制流復雜度負載值:
[0036] Complexitymaxi為時隙T內檢測節(jié)點i的任務隊列中等待檢測任務的Complexity之 和的最大值;Comp 1 e X i t y average i為時隙T內檢測節(jié)點i的任務隊列中等待檢測任務的 Complexity平均值:I
[0037] X TComplexityj表示在時隙T內檢測節(jié)點i的等待在任務隊列上所有檢測任務的 Complexity之和,n表示時隙T內的n個移動應用。
[003 引檢測節(jié)點i的各類加權值滿足:Wcpu+Wmem。ry+Wqueue+WC。mplexity=100
[0039] Wcpu ,Wmemory ,Wqueue ,WComplexity^ [0 , 100]
[0040] 步驟S、將每個檢測節(jié)點的加權負載值之和LoadGrade的信息包裹在節(jié)點屯、跳中;
[0041] 步驟四、節(jié)點屯、跳每隔時隙T發(fā)送一次給負載調度器,負載調度器計算各個檢測節(jié) 點,將下一個移動應用檢測任務分配給LoadGrade最小的檢測節(jié)點。
[0042] 本發(fā)明的優(yōu)點在于:
[0043] 1)、一種移動應用檢測負載均衡算法中計算負載值的方法,極大提高了海量移動 應用檢測任務的執(zhí)行效率,能滿足現今海量應用快速檢測的需求。
[0044] 2)、一種移動應用檢測負載均衡算法中計算負載值的方法,用更加合理有效的方 式向節(jié)點分配任務,保證了節(jié)點的充分運作的同時又防止其負荷超載,有利于維護節(jié)點壽 命。
【附圖說明】
[0045] 圖1是本發(fā)明移動應用控制流復雜度與靜態(tài)檢測時間的關系圖;
[0046] 圖2是本發(fā)明一種移動應用檢測負載均衡算法中計算負載值的方法流程圖;
[0047] 圖3是本發(fā)明與輪詢調度法,傳統(tǒng)的移動應用檢測任務負載均衡算法的時間統(tǒng)計 與比較圖。
【具體實施方式】
[0048] 下面將結合附圖對本發(fā)明作進一步的詳細說明。
[0049] 如圖1所示,隨著移動應用控制流復雜度的增加,移動應用的靜態(tài)檢測時間也逐漸 增長,移動應用檢測效率逐漸降低,因此,可W將移動應用的控制流復雜度作為負載均衡算 法的一個參數,讓每個檢測節(jié)點的任務隊列上所等待任務的控制流復雜度之和趨于平衡, 提高批量執(zhí)行移動應用檢測時的檢測性能。
[0050] 本發(fā)明一種移動應用檢測負載均衡算法中計算負載值的方法,在海量移動應用檢 測任務的場景中引入動態(tài)反饋負載均衡算法,考慮服務器的實時負載和響應情況,不斷調 整節(jié)點間處理任務數的比例,來避免任務節(jié)點在超載時依然收到大量請求,均衡分布式系 統(tǒng)中任務節(jié)點的負載情況,從而提高整個系統(tǒng)的吞吐率和任務執(zhí)行效率。
[0051] 該方法基于由客戶端、中屯、管理節(jié)點模塊和檢測子節(jié)點組成的實驗平臺實現;
[0052] 檢測節(jié)點的屯、固飽括:當前檢測節(jié)點i的CP切日權負載值,內存加權負載值,隊列加 權負載值和控制流復雜度加權負載值;
[0053] 中屯、管理節(jié)點模塊接受移動應用檢測任務和檢測子節(jié)點的屯、跳;通過實時接收各 檢測節(jié)點的屯、跳得到當前各檢測節(jié)點的負載情況,并通過負載調度器選擇出其中最優(yōu)的檢 測節(jié)點下發(fā)移動應用檢測任務,然后重新計算各檢測節(jié)點的負載分數,更新記錄的負載信 息。
[0054] 中屯、管理節(jié)點模塊分為屯、跳接收引擎、負載值計算引擎和檢測子節(jié)點資源隊列= 部分。屯、跳接受引擎接收到檢測子節(jié)點發(fā)來的屯、跳信息后,將其中的負載信息取出傳遞給 負載值計算引擎;負載值計算引擎根據節(jié)點負載信息計算出節(jié)點的實時負載值后,根據負 載值的大小重排檢測子節(jié)點資源隊列。負載調度器接收到移動應用檢測任務后,可W直接 分配到負載分數最大,負載最低節(jié)的檢測子節(jié)點;
[0055] 負載調度器作用是監(jiān)視和收集各個服務器的負載信息,根據多個負載信息算出一 個綜合負載值。當綜合負載值表示服務器比較忙時,該檢測節(jié)點的優(yōu)先級較