国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種用于流式數(shù)據(jù)并行處理的負載均衡方法

      文檔序號:9304477閱讀:711來源:國知局
      一種用于流式數(shù)據(jù)并行處理的負載均衡方法
      【技術(shù)領(lǐng)域】
      [0001] 本發(fā)明涉及流式數(shù)據(jù)并行處理技術(shù)領(lǐng)域,具體地說,本發(fā)明涉及一種用于流式數(shù) 據(jù)并行處理的負載均衡方法。
      【背景技術(shù)】
      [0002] 流式數(shù)據(jù)處理包括:網(wǎng)絡(luò)數(shù)據(jù)包處理(下文中簡稱為數(shù)據(jù)包處理)、視頻流處理、 文本處理、消息處理等。網(wǎng)絡(luò)規(guī)模和服務(wù)復雜度不斷增長,傳統(tǒng)的流式數(shù)據(jù)處理技術(shù)已經(jīng)無 法滿足高速網(wǎng)絡(luò)帶來的性能需求,基于多核處理器的流式數(shù)據(jù)并行處理技術(shù)的應(yīng)用和推廣 已經(jīng)成為了新的趨勢。下面以數(shù)據(jù)包處理為例簡要介紹基于多核處理器的流式數(shù)據(jù)并行處 理技術(shù)。圖1示出了現(xiàn)有技術(shù)中一個通用的數(shù)據(jù)包多核并行處理架構(gòu)。參考圖1,在這個數(shù) 據(jù)包多核并行處理架構(gòu)中,每個處理器核上都綁定了一個處理線程,所有處理線程共同構(gòu) 成了一個并行流水線布局。輸入的數(shù)據(jù)包從流水線第一級開始,經(jīng)過層層處理和中間調(diào)度, 最終抵達流水線最后一級。在實際應(yīng)用中,系統(tǒng)的流水線級數(shù)和每級流水線的線程個數(shù)通 常都是可調(diào)整的。
      [0003] 另一方面,在并行處理技術(shù)領(lǐng)域,為了讓數(shù)據(jù)包處理任務(wù)充分并行化,每個處理線 程的數(shù)據(jù)包負載需要盡可能均衡,否則會出現(xiàn)只有部分處理線程繁忙而其他處理線程空閑 的情況,造成處理資源的浪費。此外,負載不均衡還有可能造成部分處理線程的過載(例如 數(shù)據(jù)包隊列溢出)。所謂負載均衡,就是一個將待處理的負載按照"處理難度"進行劃分,然 后按照處理線程的"處理能力"進行均勻分配的過程?,F(xiàn)有的網(wǎng)絡(luò)流量負載均衡方法主要有 兩類,第一類是在數(shù)據(jù)包的源頭一一網(wǎng)卡上進行硬件負載均衡,第二類是在網(wǎng)卡與數(shù)據(jù)包 處理應(yīng)用之間的中間平臺一一操作系統(tǒng)上進行軟件負載均衡。下面分別介紹這兩種方法。
      [0004] (1)網(wǎng)卡負載均衡
      [0005] 數(shù)據(jù)包處理設(shè)備常用的高性能網(wǎng)卡(NetworkInterfaceCard,NIC) -般都帶有 "多隊列"(multi-queue)功能以支持多核并行處理。當網(wǎng)卡在接收數(shù)據(jù)包的時候,首先通 過一個過濾器將不同的數(shù)據(jù)包送到不同的接收隊列(RX-queue),而這些接收隊列都是與不 同的處理器核心綁定的,這樣流量就分散到了不同的處理器核進行處理。這種在網(wǎng)卡層面 所進行的多核流量負載均衡機制通常被稱為RSS(ReceiveSideScaling,接收端伸縮)。
      [0006] 在RSS機制下,網(wǎng)卡使用一個Hash函數(shù)對輸入數(shù)據(jù)包頭部的某些字段計算Hash 值,并將結(jié)果取余后去索引一個間接轉(zhuǎn)發(fā)表(IndirectionTable),最終匹配到一個特定的 隊列去處理。常見的RSS硬件實現(xiàn)中每個間接轉(zhuǎn)發(fā)表都有128個條目,每個條目中存儲著一 個隊列號。一些高級的網(wǎng)卡還允許基于可編程的過濾器來分配數(shù)據(jù)包,例如將端口號為80 的TCP包導向Web服務(wù)器所在的處理器核對應(yīng)的隊列。這種N元組過濾器可以通過ethtool 工具的"--config-ntuple"選項進行配置。用于計算Hash值的字段通常是可以唯一標識 一條網(wǎng)絡(luò)流的五元組(源IP地址、目的IP地址、源端口、目的端口、傳輸層的協(xié)議類型),這 樣同一條網(wǎng)絡(luò)流的數(shù)據(jù)包就能夠被分配到同一隊列去處理,保證處理的局部性和有序性。
      [0007] 基于RSS機制的網(wǎng)卡負載均衡,在硬件層面上實現(xiàn)了網(wǎng)絡(luò)流量與多核之間的負載 分配,并且具備簡單的處理邏輯和較高的處理性能。然而,網(wǎng)卡負載均衡也存在著很明顯的 局限性。一方面,后端的數(shù)據(jù)包處理應(yīng)用對于網(wǎng)卡硬件來說是不可見的,因此網(wǎng)卡負載均衡 無法考慮到數(shù)據(jù)包處理應(yīng)用的特殊需求;另一方面,RSS機制只支持靜態(tài)的Hash均衡算法, 在動態(tài)的網(wǎng)絡(luò)流量下很容易造成負載不均衡。
      [0008] (2)操作系統(tǒng)負載均衡
      [0009] 操作系統(tǒng)負載均衡有兩種情況,第一種是在網(wǎng)卡只支持單隊列時替代RSS實現(xiàn)多 核負載均衡,另一種則是在已有的多隊列基礎(chǔ)上,為多隊列中的數(shù)據(jù)包和處理器核心進行 重新映射。其中,第二種情況下,考慮到操作系統(tǒng)能夠獲取到數(shù)據(jù)包處理應(yīng)用的相關(guān)信息, 因此進行重新映射可以提升實際的負載均衡效果(例如把數(shù)據(jù)包重新分配到其對應(yīng)的程 序所在的處理器核)。
      [0010] 基于操作系統(tǒng)的網(wǎng)絡(luò)流量負載均衡在最近幾年已經(jīng)得到了廣泛應(yīng)用。以Linux 操作系統(tǒng)為例,其較新版本(2.6.35以后)的網(wǎng)絡(luò)協(xié)議棧中包含了兩種網(wǎng)絡(luò)流量多核負載 均衡機制,分別稱為RPS(ReceivePacketSteering,接收端數(shù)據(jù)包引導)和RFS(Receive FlowSteering,接收端網(wǎng)絡(luò)流引導)。從實現(xiàn)邏輯上看,RPS就是RSS的一種軟件實現(xiàn),而 RFS則在RPS基礎(chǔ)上考慮了應(yīng)用程序的局部性,以實現(xiàn)更好的實際負載均衡效果。
      [0011] 相比網(wǎng)卡負載均衡來說,在操作系統(tǒng)層面實施負載均衡更加靈活,例如用戶可以 自定義Hash函數(shù)和計算覆蓋的字段等。然而,操作系統(tǒng)負載均衡也無法從根本上避免與網(wǎng) 卡負載均衡類似的兩點局限性。一方面,雖然操作系統(tǒng)作為宿主能夠了解運行在其中的數(shù) 據(jù)包處理應(yīng)用的某些特性(如線程數(shù)目),但由于操作系統(tǒng)內(nèi)核與應(yīng)用程序是隔離的,無法 針對應(yīng)用程序內(nèi)部具體結(jié)構(gòu)進行負載均衡。另一方面,從實現(xiàn)機制上看,操作系統(tǒng)負載均衡 的兩種機制RPS和RFS,與RSS類似也都是通過計算數(shù)據(jù)包的Hash來分配到特定的隊列去 處理,這種分配方式有時并不適合網(wǎng)絡(luò)數(shù)據(jù)流等流式數(shù)據(jù)的處理。

      【發(fā)明內(nèi)容】

      [0012] 因此,本發(fā)明的任務(wù)是提供一種特別適合于流式數(shù)據(jù)并行處理的負載均衡解決方 案。
      [0013] 根據(jù)本發(fā)明的一個方面,提供了一種用于流式數(shù)據(jù)并行處理的負載均衡方法,所 述流式數(shù)據(jù)并行處理基于并行流水線實現(xiàn),所述并行流水線包括N級處理線程,每個處理 線程與一個處理器核綁定,其中N為所述并行流水線的級別數(shù)目,令i的初始值為1,所述用 于流式數(shù)據(jù)并行處理的負載均衡方法包括下列步驟:
      [0014] 1)對于任意一個第i級處理線程,該第i級處理線程首先完成本級的數(shù)據(jù)處理,得 到第i級中間數(shù)據(jù)包;
      [0015] 2)根據(jù)各個第i+1級處理線程的負載狀態(tài),基于負載均衡算法將所述的第i級中 間數(shù)據(jù)包發(fā)送到一個第i+1級處理線程的緩沖隊列;
      [0016] 3)將所述第i+1級處理線程視為第i級處理線程重新執(zhí)行步驟1),直至第N級處 理線程完成本級的數(shù)據(jù)處理得到最終數(shù)據(jù)。
      [0017] 其中,所述步驟2)中,所述第i+1級處理線程的負載狀態(tài)根據(jù)該第i+1級處理線 程的緩沖隊列長度得出。
      [0018] 其中,所述步驟2)中,所述第i+1級處理線程的負載狀態(tài)根據(jù)該第i+1級處理線 程的緩沖隊列長度的EWMA值得出。
      [0019] 其中,所述步驟2)中,七時刻的所述£¥1仏值£1=¥*1^+(1-¥)4 11,其中1^表 示t時刻的緩沖隊列長度,Et :表示t-1時刻的EWMA值,w表示平穩(wěn)因子。
      [0020] 其中,所述步驟2)中,t時刻的所述£¥熟值£1=Lt?l+Et々>1 ;其中">>"表示右 移運算。
      [0021] 其中,所述步驟2)還包括:將所述的第i級中間數(shù)據(jù)包發(fā)送到具有最小EWMA值的 第i+1級處理線程的緩沖隊列。
      [0022] 其中,所述步驟2)包括下列子步驟:
      [0023] 21)接收一個第i級中間數(shù)據(jù)包;其中,i= 1,2…,N-1 ;
      [0024] 22)在全局流表中查找該第i級中間數(shù)據(jù)包所屬的數(shù)據(jù)流,如果未找到,則執(zhí)行步 驟23),如果找到,則直接根據(jù)所述全局流表的記錄將所述的第i級中間數(shù)據(jù)包發(fā)送到相應(yīng) 的第i+1
      當前第1頁1 2 3 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1