專利名稱:P2p索引服務(wù)中的非對稱處理軟件流水線技術(shù)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及P2P索引服務(wù)器中的信息處理技術(shù),尤其是軟件流水線技術(shù)。
背景技術(shù):
P2P是一種利用廣泛分布的自治資源來完成特定功能的技術(shù),它能較好地適應(yīng)面向海量伸縮性的應(yīng)用系統(tǒng)的需求。其資源包括計算、存儲、網(wǎng)絡(luò)帶寬等,所完成的特定功能可以是分布計算、數(shù)據(jù)/內(nèi)容共享、通信協(xié)作以及流媒體服務(wù)等。與傳統(tǒng)的C/S模式不同,在P2P中分布的各個對等節(jié)點(diǎn)地位平等,直接交換共享計算、存儲、信息等資源和服務(wù),每個節(jié)點(diǎn)在享受服務(wù)的同時,還為其它節(jié)點(diǎn)提供服務(wù)。這樣,通過廉價節(jié)點(diǎn)的協(xié)作就能產(chǎn)生巨大系統(tǒng)增益。
當(dāng)前實(shí)際投入使用的P2P系統(tǒng),如BitTorrent、eMule、PPLive等,都依賴于索引技術(shù),以查找其他對等節(jié)點(diǎn)。因此,索引服務(wù)器成為大規(guī)模P2P系統(tǒng)的性能瓶頸。索引服務(wù)器需要從各個節(jié)點(diǎn)獲取信息,然后再將這些信息用于節(jié)點(diǎn)的檢索請求當(dāng)中,因而這兩種功能之間存在數(shù)據(jù)相關(guān)。如果使用對稱式多線程處理,各個處理線程難免要使用大量的同步操作來保證共享數(shù)據(jù)的一致性,這樣會大大浪費(fèi)服務(wù)器的處理資源。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是大規(guī)模P2P系統(tǒng)索引服務(wù)的性能瓶頸問題。解決本發(fā)明技術(shù)問題所采用的技術(shù)方案是非對稱軟件流水線技術(shù)。
服務(wù)器往往以整個“請求”或者“會話”為粒度進(jìn)行并行設(shè)計,每個處理線程是對稱的,即所有的線程功能完全相同,具有同等能力。在這種服務(wù)模型中,服務(wù)器的主線程偵聽客戶請求,然后創(chuàng)建線程(或使用線程池)完成用戶的請求并回送響應(yīng)。
該技術(shù)的技術(shù)方案是基于軟件流水線的索引服務(wù)器把整個請求處理過程劃分為多個處理階段,以階段為粒度進(jìn)行流水化的處理,流水段內(nèi)還可以根據(jù)需求,按照傳統(tǒng)的非流水方式并行執(zhí)行。不同流水段的線程具有不同的功能和能力,因此服務(wù)器的工作線程是非對稱的,如圖1所示。
該方法包括如下幾個步驟1、信息接收每個節(jié)點(diǎn)需要周期性地向索引服務(wù)器匯報自己所有的資源集合,此階段僅僅簡單記錄這些信息。
2、格式轉(zhuǎn)換節(jié)點(diǎn)上報的原始信息不利于高效檢索,此階段負(fù)責(zé)收集、整理原始信息,將其轉(zhuǎn)換為便于檢索的信息格式。
3、翻轉(zhuǎn)由于第2階段的處理不是瞬間完成的,因此需要在階段2和階段3之間增加一個緩沖階段,當(dāng)階段2的工作完成之后交換新、舊可查詢信息。
4、檢索執(zhí)行檢索請求。
所述的信息接收產(chǎn)生的原始數(shù)據(jù)的格式為“array[PeerID][StreamID]ofset of SegmentID”。
所述的便于檢索的信息格式為“array[StreamID][SegmentID]of set ofPeerID”。
所述的翻轉(zhuǎn)步驟,是三緩沖無鎖翻轉(zhuǎn)(triple-buffer lock-free swap)。
本發(fā)明所產(chǎn)生的有益效果是充分利用了服務(wù)器的多核、多線程執(zhí)行能力,使得服務(wù)系統(tǒng)具有更高的性能和可用性,也使得服務(wù)系統(tǒng)在保持服務(wù)能力的情況下提高服務(wù)質(zhì)量。
圖1非對稱軟件流水線圖2“雙緩沖”數(shù)據(jù)流水線同步操作圖3“三緩沖”數(shù)據(jù)流水線同步操作平滑過渡具體實(shí)施方式
索引服務(wù)器服務(wù)的核心在于數(shù)據(jù),數(shù)據(jù)在服務(wù)器中的處理流程大致可以劃分為兩個階段獲取和提供(即檢索并提供結(jié)果)。這兩個相關(guān)過程往往是獨(dú)立出現(xiàn)的,也就是說當(dāng)前獲取的數(shù)據(jù),將在以后其他會話中使用,而不是當(dāng)前使用。所以索引服務(wù)器軟件流水線至少需要包括這兩個流水段。
節(jié)點(diǎn)程序向索引服務(wù)器報告自己所擁有的段,設(shè)array表示數(shù)組,set表示集合,則索引服務(wù)器得到的原始信息在邏輯上具有如下的形式array[PeerID][StreamID]of set of SegmentID即原始信息在邏輯上是由用戶ID和流ID共同索引的二維數(shù)組,數(shù)組的元素是由段ID組成的集合,其含義代表“誰擁有哪些流的哪些段”。
然而這種形式的信息不適用于快速檢索。Peer節(jié)點(diǎn)檢索請求在邏輯上的形式是“擁有特定流的特定段的人有誰”,因而適用于快速檢索的信息組織形式為array[StreamID][SegmentID]of set of PeerID其含義代表“擁有哪些流的哪些段的人有誰”。這種信息組織形式的變換,實(shí)際上是對所有可能的檢索請求進(jìn)行預(yù)處理,當(dāng)接到真正請求時,服務(wù)器直接利用預(yù)處理結(jié)果進(jìn)行檢索。
根據(jù)以上分析,我們在信息接收和檢索兩個階段的基礎(chǔ)上再增加一個形式轉(zhuǎn)換流水段,把整個索引服務(wù)器處理流水線分為三級。并且,檢索階段又由多個非流水處理線程組成,以充分利用SMP服務(wù)器的優(yōu)勢。
信息接收段負(fù)責(zé)接收peer節(jié)點(diǎn)的匯報,并將匯報信息記錄在原始信息數(shù)據(jù)庫中;形式轉(zhuǎn)換段讀取原始信息數(shù)據(jù)庫,并計算形成可查詢信息數(shù)據(jù)庫;檢索段多個線程并發(fā)地讀取可查詢信息數(shù)據(jù)庫,完成檢索任務(wù)。
在索引服務(wù)器處理流水線中,流水段之間的兩個數(shù)據(jù)庫是溝通三個流水段的橋梁。例如形式轉(zhuǎn)換段是可查詢信息的生產(chǎn)者,檢索段的多個線程都是該信息的消費(fèi)者,如果這兩者共享同一份數(shù)據(jù),那么同一時間最多只能有一種角色獲得數(shù)據(jù)的使用權(quán)。這種情況不會對單處理器服務(wù)器帶來太大影響,但會極大地影響多處理器服務(wù)器的性能表現(xiàn)。
為了減少線程同步開銷,提高性能,我們?yōu)?b>可查詢信息數(shù)據(jù)庫設(shè)計了旋轉(zhuǎn)式數(shù)據(jù)流水線該數(shù)據(jù)庫有兩個數(shù)據(jù)緩沖區(qū),一個用于形式轉(zhuǎn)換段形成新數(shù)據(jù),一個用于檢索段提供檢索服務(wù);每當(dāng)完成一次全部信息的轉(zhuǎn)換操作,形式轉(zhuǎn)換段會控制翻轉(zhuǎn)器,將這兩個數(shù)據(jù)庫緩沖區(qū)位置翻轉(zhuǎn),完成信息更新。原始信息數(shù)據(jù)庫暫不考慮這種優(yōu)化措施,因?yàn)殡p副本會給peer節(jié)點(diǎn)增量式匯報帶來困難。
我們將這種有兩份數(shù)據(jù)副本的機(jī)構(gòu)稱為旋轉(zhuǎn)式“雙緩沖”數(shù)據(jù)流水線。這種流水線在做旋轉(zhuǎn)操作時仍然需要進(jìn)行一次同步操作,即信息查詢段線程用同步操作使得所有檢索段線程在完成當(dāng)前任務(wù)后暫停運(yùn)行,這樣才能正確地對數(shù)據(jù)庫副本進(jìn)行旋轉(zhuǎn)操作。
這種同步操作需要暫停所有檢索工作,仍然會較大地影響服務(wù)器的性能,并且會造成服務(wù)能力的抖動。我們經(jīng)過研究分析,提出了無需任何同步操作的“三緩沖無鎖翻轉(zhuǎn)(triple-buffer lock-free swap)”數(shù)據(jù)流水線調(diào)度技術(shù)1、設(shè)可查詢信息數(shù)據(jù)庫的3個緩沖區(qū)分別為B1、B2和B3,有三個緩沖區(qū)指針P1、P2和P3分別依次指向上述三個不同的緩沖區(qū)。
2、設(shè)形式轉(zhuǎn)換段線程將計算生成的新數(shù)據(jù)存放在P1指向的緩沖區(qū)。
3、設(shè)形式轉(zhuǎn)換段計算生成一次可查詢信息的時間>任何可查詢信息段檢索線程執(zhí)行一次檢索的時間。
4、設(shè)所有檢索線程在執(zhí)行之初通過P2確定其讀取的數(shù)據(jù)緩沖區(qū),即使執(zhí)行過程中P2被別的線程更改,檢索線程仍然不更改所用緩沖區(qū)。
當(dāng)形式轉(zhuǎn)換線程完成一次計算,需要更換緩沖區(qū)時,它只需要簡單地進(jìn)行(P1,P2,P3)的循環(huán)右移位即可完成操作,并且這種操作不需要原子化。如下代碼說明了這種操作{T←P3;P3←P2;P2←P1;P1←T;}如果當(dāng)前P1、P2和P3分別依次指向B1、B2和B3,執(zhí)行本操作后分別指向B3、B1和B2,即(B1,B2,B3)→(B3,B1,B2)。
由于假設(shè)3,在執(zhí)行轉(zhuǎn)換操作的時候,P3指向的緩沖區(qū)B3一定是空閑的,所以緩沖區(qū)旋轉(zhuǎn)完畢后,形式轉(zhuǎn)換線程通過P1取得B3的使用權(quán),無需同步即可繼續(xù)執(zhí)行。
由于假設(shè)4,在P2被更改前,所有檢索任務(wù)均使用B2作為檢索源數(shù)據(jù);在P2被修改后,原先已經(jīng)在執(zhí)行的檢索任務(wù)仍然使用B2,而新的檢索任務(wù)則使用新生成的B1。如圖3所示,緩沖區(qū)更新平滑過渡完成,亦無需同步操作。
需要指出的是,由于流水線技術(shù)的使用,檢索段無法使用到最新的數(shù)據(jù),也就是說節(jié)點(diǎn)上報的數(shù)據(jù)必須經(jīng)過一段延遲后才能投入使用。這種延遲給索引服務(wù)器的結(jié)果帶來了一定的不準(zhǔn)確性。在實(shí)際使用中,應(yīng)當(dāng)動態(tài)地、自適應(yīng)地調(diào)整形式轉(zhuǎn)換段的優(yōu)先級,將上述延遲限定在可接收的范圍內(nèi)。
權(quán)利要求
1.P2P索引服務(wù)中的非對稱處理軟件流水線技術(shù),其特征在于基于軟件流水線的索引服務(wù)器把整個請求處理過程劃分為多個處理階段,以階段為粒度進(jìn)行流水化的處理,包括如下幾個步驟信息接收、格式轉(zhuǎn)換、翻轉(zhuǎn)、檢索。
2.根據(jù)權(quán)力要求1所述的P2P索引服務(wù)中的非對稱處理軟件流水線技術(shù),其特征在于所述的信息接收產(chǎn)生的原始數(shù)據(jù)的格式為“array[PeerID][StreamID]of set of SegmentID”。
3.根據(jù)權(quán)力要求1所述的P2P索引服務(wù)中的非對稱處理軟件流水線技術(shù),其特征在于所述的便于檢索的信息格式為“array[StreamID][SegmentID]ofset of PeerID”。
4.根據(jù)權(quán)力要求1所述的P2P索引服務(wù)中的非對稱處理軟件流水線技術(shù),其特征在于所述的翻轉(zhuǎn)步驟是三緩沖無鎖翻轉(zhuǎn)(triple-buffer lock-freeswap)。
全文摘要
本發(fā)明涉及一種P2P索引服務(wù)中的非對稱處理軟件流水線技術(shù)。基于軟件流水線的索引服務(wù)器把整個請求處理過程劃分為多個處理階段,以階段為粒度進(jìn)行流水化的處理,包括如下幾個步驟信息接收、格式轉(zhuǎn)換、翻轉(zhuǎn)、檢索。大大提高P2P索引服務(wù)性能。
文檔編號H04L12/02GK101083655SQ20071003529
公開日2007年12月5日 申請日期2007年7月6日 優(yōu)先權(quán)日2007年7月6日
發(fā)明者李慧霸, 盧錫城, 彭宇行, 劉鋒 申請人:中國人民解放軍國防科學(xué)技術(shù)大學(xué)