• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于微服務架構的負載均衡優(yōu)化算法及實現(xiàn)

      2022-11-10 05:27:52經(jīng)成,謝
      南昌大學學報(理科版) 2022年4期
      關鍵詞:輪詢磁盤利用率

      經(jīng) 成,謝 軍

      (南昌大學數(shù)學與計算機學院,江西 南昌 330031)

      隨著互聯(lián)網(wǎng)急速發(fā)展,IT行業(yè)日新月異,系統(tǒng)架構的發(fā)展也在與時俱進,當用戶量以幾何指數(shù)飛速增長,曾經(jīng)流行很久的單體架構[1]已經(jīng)很難應對和處理日益增長的軟件復雜性。傳統(tǒng)的單體架構也很難支撐如今龐大的數(shù)據(jù)量,當同時訪問人數(shù)達到一定數(shù)額,服務器就會出現(xiàn)響應緩慢,交互失敗等問題,甚至可能會出現(xiàn)服務器宕機等情況?;谶@種現(xiàn)狀,微服務架構風格應運而生,微服務架構核心是面向服務,重點是模塊劃分,服務之間正確高效調用。微服務架構通常都是集群的形式,但當服務端機器從一臺提升為集群形式,其承載的訪問量得到很大程度的提升時,系統(tǒng)的復雜程度也隨之提升,此時產(chǎn)生了一個新的問題,客戶端帶著請求訪問服務端,由于服務端是一個大的集群組,請求需要知道自己該到哪個具體的機器上調取服務,這就需要讓系統(tǒng)設計者設計一套可用合理的負載均衡算法,負載均衡存在的意義就是讓請求基于該算法能夠知道去哪臺機器獲取資源。如果負載均衡算法高效可用,就可以大幅度提升系統(tǒng)提供服務的能力。

      傳統(tǒng)負載均衡算法包括靜態(tài)負載均衡算法和動態(tài)負載均衡算法,靜態(tài)負載均衡有無法獲取服務器實時負載的不足,動態(tài)負載均衡算法會給服務器端帶來負擔。本文針對傳統(tǒng)負載均衡算法存在的不足,設計了基于最低并發(fā)負載算法的動態(tài)權重負載算法。最低并發(fā)負載算法[2]面對瞬時的流量沖擊時會出現(xiàn)算法降級演變?yōu)檩喸兯惴◤亩鴮е滤惴ㄊУ那闆r。本算法通過計算磁盤利用率的方差來衡量系統(tǒng)整體負載的穩(wěn)定度,當磁盤利用率的方差在一個合適的范圍,算法根據(jù)服務器節(jié)點的性能計算得出系統(tǒng)節(jié)點的權重,當最低并發(fā)算法失效,算法升級為動態(tài)權重算法,權重大的節(jié)點被選中的概率也會更大。

      1 負載均衡優(yōu)化策略和實現(xiàn)方式

      負載均衡算法有很多種,從系統(tǒng)角度可以分為同構系統(tǒng)下的負載均衡算法和異構系統(tǒng)下的負載均衡算法;從算法種類角度可以分為靜態(tài)負載均衡算法和動態(tài)負載均衡算法。其中靜態(tài)負載均衡算法實現(xiàn)簡單,系統(tǒng)資源消耗小,很適合同構系統(tǒng)集群的環(huán)境。

      隨機算法負載均衡器通過隨機函數(shù)生成一個隨機數(shù)用于選擇后臺的集群節(jié)點,選擇的機器無法預測,即滿載服務器還是存在被選中的可能性,所以這種算法的負載效果比較差。

      在隨機算法中,如果每臺機器的性能差異較大,則會嚴重影響負載均衡效率和集群提供服務的能力,因此在隨機算法的基礎上,負載均衡器為每個可用的服務器節(jié)點加上了權重,權重大的節(jié)點更大概率被選中,在這種算法中,可以很好地應對機器性能不會大幅度改變的異構系統(tǒng),但是若是節(jié)點性能受到負載狀況的影響,則這種算法效果也不理想。

      在同構系統(tǒng)中,靜態(tài)負載均衡算法[3]有著很好的負載效果,但是若是需要實時監(jiān)測機器負載的異構系統(tǒng)下,由于靜態(tài)負載均衡算法無法自適應動態(tài)調整,所以靜態(tài)負載均衡算法有很大的局限性。此時異構系統(tǒng)下的區(qū)域分解算法和動態(tài)負載均衡算法就能滿足異構系統(tǒng)對于負載性能的要求。

      異構系統(tǒng)下的簡易化區(qū)域分解算法是將計算域分解為若干子域,分別求解再進行綜合的一種計算方法。此種方法分解了計算過程,加快了計算速度,使總體解更符合實際,并有利于采用并行計算,加快運算速度。在異構系統(tǒng)下,由于每個系統(tǒng)的獨特性,因此我們不能歸一化處理機器狀態(tài),假設系統(tǒng)有N個處理機,這N個處理機完成一個時間步的時間為Ti,則處理機平均計算時間Ta,Ta的計算公式如1.1所示。

      (1.1)

      集群系統(tǒng)所有機器最大處理時間為Tmax,即為處理機并行處理一個任務所要耗費的時間,計算公式如1.2所示。

      Tmax=max{Ti}(0≤i≤N-1)

      (1.2)

      由以上步驟可得負載均衡函數(shù),IB為負載均衡臨界值,計算公式如1.3所示。

      (1.3)

      公式1.3為簡易化的負載均衡平衡函數(shù),顯然,IB等于零時系統(tǒng)負載近似達到平衡,大于零時,系統(tǒng)負載處于失衡狀態(tài)。

      在上文中我們簡單討論了區(qū)域分解算法下的系統(tǒng)負載狀況,由于粒度較粗再加上現(xiàn)實環(huán)境中,系統(tǒng)負載還要受各種因素的干擾。因此在實際環(huán)境中,這種算法的應用場景極其有限。所以在實際環(huán)境中,我們往往選擇動態(tài)負載均衡算法。下面是常見的動態(tài)負載均衡算法。

      1.最短預期延時算法是期望最小化每個任務的預期延時直到任務完成的算法,服務器Si的預期延時公式如1.4。

      (1.4)

      其中,C(Si)表示服務器Si的當前連接數(shù),W(Si)表示服務器Si的權重。當服務器Sm滿足公式1.5時,新的連接請求將會被調度到Sm上。

      (C(Sm)+1)/W(Sm))=min{(C(Si)+1)/W(Si)}(i=0,1,2,…,n-1)

      (1.5)

      最短預期延時算法[4]考慮了連接的預期成本,不是以當前連接數(shù)作為成本,而是以當前連接數(shù)加1作為成本,這樣就極大提高了算法的效率。最短預期延時調度算法希望在請求少的時候將請求盡可能轉發(fā)到性能高的服務器上,這種調度算法不再考慮非活動連接。這種算法有一定缺陷,在請求量比較少的時候,某個權重下的節(jié)點可能一個請求都沒有輪到。而權重大的節(jié)點卻輪到了比較多的請求。

      2.最低并發(fā)策略(BestAvailableRule)是一種動態(tài)、智能的負載均衡算法,主要是根據(jù)節(jié)點的當前連接數(shù)來決定將請求發(fā)送至哪個節(jié)點。當服務器集群性能平均,每臺服務器提供服務的能力相差不大時,我們往往采用RoundRobinRule負載策略,即輪詢策略,但是現(xiàn)實情況中,服務器性能有好有壞,性能不均勻,輪詢算法就顯得極其不合理,不合理的負載均衡算法會極大影響服務端提供服務的效率和能力。最低并發(fā)策略就很好地考慮服務器端性能,并發(fā)數(shù)是其衡量的重要指標,該策略會將請求轉發(fā)至并發(fā)數(shù)最小的服務器,這種策略對服務器有很好的保護功能。

      2 加入動態(tài)權重的BestAvailableRule改進算法

      上文提及的BestAvailableRule[5]算法可以一定程度上解決因服務器性能不均導致負載不平衡的問題。但是當并發(fā)高到一種程度,服務器可能會出現(xiàn)服務降級,服務響應時間延長等問題,BestAvailableRule策略一定程度地維護了服務器集群的整體性能,該策略的流程圖如下所示:

      圖1 BestAvailableRule負載策略流程圖Figure 1 Flow chart of BestAvailableRule load policy

      通過上述BestAvailableRule負載策略流程圖和源碼可知,BestAvailableRule策略關鍵在于找取并發(fā)數(shù)最小的服務器,這種算法性能會隨著并發(fā)量極速升高而降低,當并發(fā)量很高時,BestAvailableRule算法策略性能將會下降,慢慢趨近于輪詢算法[6],該算法策略平均響應時間隨著并發(fā)量的提升如下圖所示,歸納該圖數(shù)據(jù)我們可以知道,當我們定義的并發(fā)連接數(shù)小于全部的服務器并發(fā)連接數(shù)時,此時就沒有最優(yōu)的可用服務,這個時候該算法會發(fā)生性能下滑,并演變成輪詢負載均衡算法。因此本文在最小并發(fā)策略的基礎上加入了權重,改進了該算法,利用動態(tài)權重來讓負載均衡策略在高并發(fā)場景下仍然可以高效平穩(wěn)地運行。

      開發(fā)用戶量/個圖2 BestAvailableRule性能圖Figure 2 BestAvailabilityRule performance diagram

      一般來說,磁盤空間使用率是反映負載節(jié)點存儲空間剩余容納量的最直觀表現(xiàn),也是提供服務的子節(jié)點負載能力的關鍵衡量標準。通過磁盤利用率,我們可以分析出節(jié)點的空間使用情況和當前存儲空間下的負載能力。磁盤空間利用率是影響負載均衡的重要因素??梢杂霉?.1表示磁盤空間利用率,其中Pi表示編號為i的節(jié)點的磁盤利用率。

      (2.1)

      其中,Pi是第i個節(jié)點的磁盤使用率[7],DUi是第i個節(jié)點磁盤已經(jīng)使用的內存空間,單位通常是GB,DTi是第i個節(jié)點磁盤的總容量,單位通常也是GB,在同構型分布式系統(tǒng)下,每個磁盤的DT即磁盤總容量一般來說是一樣的,但是在異構系統(tǒng)下,DT一般來說是不一樣的,因此,不能把機器的磁盤總容量作為衡量機器負載能力的標準。

      可以由公式2.1得出的磁盤利用率作為基準計算出節(jié)點磁盤利用率的方差DX,計算公式如2.2所示。

      (2.2)

      其中,DX是磁盤利用率的方差,Pa是集群系統(tǒng)下機器的平均磁盤利用率,系統(tǒng)有N臺服務器。DX可以衡量系統(tǒng)整體負載的穩(wěn)定度,當DX值越大,系統(tǒng)子節(jié)點磁盤利用率的離散程度就越大,此時系統(tǒng)整體處于失衡狀態(tài),當DX值越小,系統(tǒng)子節(jié)點磁盤利用率的離散程度[8]就越小,此時系統(tǒng)穩(wěn)定性相對而言就較強。系統(tǒng)磁盤平均利用率Pa計算公式如2.3所示。

      (2.3)

      系統(tǒng)磁盤平均利用率Pa可以大概衡量系統(tǒng)磁盤空間的使用狀況,但是可能會出現(xiàn)系統(tǒng)機器性能不平均[9]這種狀況,因此磁盤平均利用率只能作為參考因子而不能作為影響系統(tǒng)負載的關鍵因素。dm是系統(tǒng)各節(jié)點相對于磁盤平均利用率的最大差值即最大相對偏差值,當最大相對偏差值在一個合理的范圍內,平均磁盤利用率才具有較強的可參考性[10],最大相對偏差dm計算公式如公式2.4所示。

      dm=max{|pi-pa|i=0,1,2,…,N}

      (2.4)

      除了服務器的磁盤空間使用離散度外,服務器的其他性能指標也是重要衡量標準。

      若是要計算出服務器端的權重,服務器的性能指標是其重要參考依據(jù)[11],當上文中的磁盤利用率的方差在正常范圍內,即系統(tǒng)處于相對平衡狀態(tài)[12]。當系統(tǒng)失衡時,斷路器被觸發(fā)。已知系統(tǒng)有N臺服務器,令Si表示服務器集群中第i個服務器,A表示服務器的CPU主頻,B表示內存,C表示帶寬,計算第i個性能的服務器的性能指標X(Si)為:

      (2.5)

      下面Au,Bu,Cu分別表示目標服務器上的CPU利用率,內存利用率和帶寬利用率,計算第i個服務器的負載為L(Si):

      L(Si)=αAui+βBui+γCui

      (2.6)

      其中α,β,γ是影響因子系數(shù)且滿足α+β+γ=1。

      由以上推導過程,我們得出權重計算公式,T表示總連接數(shù),ti表示第i個服務器的連接數(shù),計算得出的權重為W(Si)為

      (2.7)

      前文介紹的最小并發(fā)算法會有很大的瓶頸,本文為服務器列表加入動態(tài)權重,讓客戶端更加智能的選取最符合性能的服務器。

      在BestAvailableRule算法中,當設定的并發(fā)數(shù)小于每一個服務器的請求數(shù)時,算法策略失效,本算法的核心是當BestAvailableRule算法失效時,算法升級到動態(tài)權重負載均衡算法,動態(tài)權重負載均衡算法的核心是在客戶端中引入權重,將權重作為選擇服務器的標準。

      由上述計算得出的權重公式,我們可得集群中N臺服務器的權重之和Wt,使用式2.8計算。

      (2.8)

      經(jīng)過上述計算得到了服務器的權重之和,相加之后相當于各機器在總權重上各占了相應的一段比例。由權重和可得隨機權重Wr,使用式2.9計算。

      Wr=σWt(0<σ<1)

      (2.9)

      其中σ是隨機系數(shù)。若隨機權重滿足式2.10,說明第(i+1)臺機器被選中。

      W(Si)

      (2.10)

      其中i=0時權重為0,即W(S0)=0。

      算法示意圖如圖3:

      圖3 動態(tài)權重負載均衡算法示意圖Figure 3 Schematic diagram of dynamic weight load balancing algorithm

      由上圖可知,服務器權重越高,在線段上的占的長度越長,被隨機數(shù)選中的概率越大。該算法完整的流程圖如下圖所示:

      圖4 動態(tài)權重算法流程圖Figure 4 Flow chart of dynamic weight algorithm

      通過以上流程圖可知,優(yōu)化后的算法首先接收到用戶的請求,根據(jù)用戶請求內容分析出功能所屬的微服務鏈,根據(jù)微服務鏈確定該鏈上的微服務類型以及他們的依賴關系,再借助微服務鏈中的數(shù)據(jù)傳輸信息[13],負載均衡器對系統(tǒng)中的實例進行遍歷計算,尋找出所得代價最小的實例組合。當并發(fā)量在一定范圍內,算法的邏輯是選取最小并發(fā)處理機,當并發(fā)量提高時,算法智能的提升為動態(tài)權重負載均衡算法[14]。算法維持了邏輯的完整性和嚴謹性,當遇到請求的大量沖擊時,本算法也能維持其高可用性。

      3 實驗設計

      本次測試目的將驗證本文所提出的負載均衡算法的可用性,為了驗證這個算法,本實驗將在高并發(fā)的實驗環(huán)境下分別測試輪詢算法,隨機選取算法,最小連接算法和本文提出的DWLB算法下系統(tǒng)的性能指標。

      本實驗利用壓力測試工具siege和Postman模擬了100,500,1000,1500,2000,3000,4000,5000等不同請求數(shù)量的并發(fā)場景,分別對比了Ribbon自帶的輪詢調度算法、隨機選取算法、最小連接算法以及本文提出的DWLB算法,選擇了平均響應時間、吞吐率和失敗次數(shù)這三個指標作為算法評估指標。

      這里以DWLB算法在500次請求下的失敗次數(shù)為例,經(jīng)過測試工具Postman設置請求數(shù)量進行測試,測試結果如下圖所示,總共發(fā)起了500次請求,請求失敗的次數(shù)為0,這可以初步驗證本算法的高穩(wěn)定性。

      圖5 DWLB算法在500次下失敗次數(shù)實驗結果Figure 5 Experimental results of failure times of DWLB algorithm under 500 times

      總的實驗結果如表1所示,展示了不同算法在不同請求數(shù)量下的性能數(shù)據(jù)。其中吞吐率單位是兆每秒(Mb/s),響應時間單位是秒(s),失敗次數(shù)單位是1,為了顯示簡潔,依次用A、B、C、D代替輪詢算法、隨機選取算法、最小連接算法、DWLB算法,用1、2、3代替吞吐率、響應時間、失敗次數(shù),例如用B3表示最小連接算法下的失敗次數(shù)。

      表1 各個算法在不同并發(fā)量下的性能指標Table 1 Performance indexes of each algorithm under different concurrency

      將上述數(shù)據(jù)以圖表展現(xiàn)出來,如圖6、圖7、圖8所示分別表示吞吐率、響應時間和失敗次數(shù)的折線圖:

      并發(fā)數(shù)圖6 吞吐率對比Figure 6 Comparison of throughput rates

      并發(fā)數(shù)圖7 請求響應時間對比Figure 7 Comparison of request response time

      并發(fā)數(shù)圖8 請求失敗次數(shù)對比Figure 8 Comparison of number of failed requests

      4 結語

      以上實驗從系統(tǒng)吞吐率、請求響應時間、請求失敗次數(shù)三個性能指標得出了不同算法在不同請求數(shù)量級下的響應情況。

      吞吐率是指服務器在單位時間內可以處理并發(fā)請求數(shù)量[15],從圖6中可以看出這4種算法浮動比較平穩(wěn),沒有一個比較穩(wěn)定的吞吐率峰值點,但是DWLB算法因為獲取了不同服務器實時的健康狀況[16],因此在吞吐率這個性能指標,DWLB算法明顯比其他算法表現(xiàn)優(yōu)秀。

      請求響應時間是指服務器對處理請求花費的時間[17],從圖7可以看出,輪詢算法和隨機算法因為其算法復雜度較為簡單,所以響應時間很短,DWLB算法因為其算法復雜,運算量大,所以響應時間比其他算法久點,但是差距不大,在可接受范圍之內,這說明DWLB算法不會給服務器帶來過多額外的負擔。

      失敗次數(shù)是指服務器端沒有給出正確響應的請求的次數(shù)[18],由圖8可知,輪詢算法下的失敗次數(shù)比較均衡[19],因為每個服務器得到請求的機會都是一致的,隨機選取算法因為帶有一定的偶然性,所以造成折線圖波動較大[20],最小連接算法因為優(yōu)先把請求給空閑服務器,響應時間較短,DWLB算法因為從多個維度計算了服務器的性能,能夠最大程度地提高請求的處理正確度,所以失敗次數(shù)顯著優(yōu)于其他算法,這也驗證了本文提出算法的高性能。

      DWLB算法雖然在響應時間稍遜于其他算法,但是在吞吐率和失敗次數(shù)性能明顯優(yōu)于其他算法,并且響應時間跟其他算法的差距也在接受范圍之內,因此經(jīng)過實驗證明,本文提出的負載均衡算法具有高可行性。

      猜你喜歡
      輪詢磁盤利用率
      解決Windows磁盤簽名沖突
      電腦愛好者(2019年2期)2019-10-30 03:45:31
      基于等概率的ASON業(yè)務授權設計?
      化肥利用率穩(wěn)步增長
      做好農(nóng)村土地流轉 提高土地利用率
      修改磁盤屬性
      淺議如何提高涉煙信息的利用率
      消費導刊(2017年24期)2018-01-31 01:29:29
      磁盤組群組及iSCSI Target設置
      創(chuàng)建VSAN群集
      依托站點狀態(tài)的兩級輪詢控制系統(tǒng)時延特性分析
      自動化學報(2016年8期)2016-04-16 03:38:56
      利用時間輪詢方式操作DDR3實現(xiàn)多模式下數(shù)據(jù)重排
      新邵县| 股票| 嘉兴市| 留坝县| 大宁县| 益阳市| 三明市| 霸州市| 小金县| 甘洛县| 纳雍县| 陆良县| 安吉县| 北辰区| 都匀市| 遵义市| 贵定县| 三台县| 昭平县| 陕西省| 湘潭县| 揭阳市| 滨州市| 西昌市| 漳平市| 盐边县| 周宁县| 收藏| 安多县| 中方县| 漳平市| 年辖:市辖区| 定边县| 玉门市| 新余市| 东源县| 永新县| 礼泉县| 息烽县| 应用必备| 太保市|