專利名稱:一種基于推拉結(jié)合的純分布式數(shù)據(jù)交換方法
技術(shù)領(lǐng)域:
本發(fā)明屬于網(wǎng)絡(luò)中的數(shù)據(jù)交換技術(shù)領(lǐng)域,特別涉及一種應(yīng)用于超大規(guī)模直播環(huán)境下的純分布式數(shù)據(jù)交換方法。
背景技術(shù):
目前流行的網(wǎng)絡(luò)中數(shù)據(jù)交換方式可分為三種集中式,分布式,以及介于集中式與分布式之間的半分布式。集中式的數(shù)據(jù)交換雖然易于管理,但在可擴展性、容錯性和數(shù)據(jù)互動性方面存在先天缺陷。分布式的數(shù)據(jù)交換在一定程度上彌補了集中式的不足,但對管理提出了更高的要求。半分布式的數(shù)據(jù)交換是集中式與分布式的一種折中,試圖尋求一種集分布式與集中式優(yōu)勢于一體的數(shù)據(jù)交換方式,但其各項性能不是全部最優(yōu)。
集中式的數(shù)據(jù)交換方法完全依賴于中央服務(wù)器網(wǎng)絡(luò)出口帶寬,由此決定了網(wǎng)絡(luò)的負載能力。在集中式的數(shù)據(jù)交換方式下,對于出口帶寬1000兆的中央服務(wù)器,需要給每個客戶端結(jié)點提供1兆帶寬流量的情況下,單臺中央服務(wù)器可同時支持的服務(wù)上限是1000人。半分布式的數(shù)據(jù)交換雖然在一定程度上優(yōu)于集中式的數(shù)據(jù)交換方式,但仍部分依賴于中央服務(wù)器的網(wǎng)絡(luò)帶寬。在半分布式的數(shù)據(jù)交換方法下,對于出口帶寬1000兆的中央服務(wù)器,需要給每個客戶端結(jié)點提供1兆帶寬流量的相同情況下,單臺中央服務(wù)器可同時支持的服務(wù)上限在理論上可達數(shù)千人甚至上萬人。分布式的數(shù)據(jù)交換方式,由于受到技術(shù)方面的限制,目前在超大規(guī)模直播環(huán)境下沒有能夠得到應(yīng)用。
發(fā)明內(nèi)容
本發(fā)明的目的是為克服已有技術(shù)的不足之處,提出一種基于推拉結(jié)合的純分布式數(shù)據(jù)交換方法,是基于只有一臺或多臺中央服務(wù)器參與網(wǎng)絡(luò)中客戶端結(jié)點進入與退出網(wǎng)絡(luò)的登記與注銷,中央服務(wù)器不承擔此外的任何功能,包括但不限于數(shù)據(jù)交換與服務(wù)提供。本發(fā)明方法較集中式與半分布式有了本質(zhì)的改變,擁有良好的可擴展性、容錯性和數(shù)據(jù)互動性等特性,理論上單臺中央服務(wù)器可同時支持的服務(wù)數(shù)量沒有上限。
本發(fā)明提出的一種基于推拉結(jié)合的純分布式數(shù)據(jù)交換方法,其特征在于,對于單臺中央服務(wù)器與網(wǎng)絡(luò)中各個客戶端結(jié)點通過周期性地循環(huán)進行數(shù)據(jù)交換,在循環(huán)過程中的每個時間周期內(nèi),完成一組數(shù)據(jù)包的發(fā)送、接收、請求服務(wù);所述每個客戶端結(jié)點在該結(jié)點進入網(wǎng)絡(luò)時,由中央服務(wù)器統(tǒng)一分配結(jié)點編號,并告知該結(jié)點網(wǎng)絡(luò)中多個鄰居結(jié)點的編號、位置等信息;所述每一個客戶端結(jié)點的數(shù)據(jù)交換包括以下步驟(1)該結(jié)點建立并更新用于數(shù)據(jù)交換的本地數(shù)據(jù)包列表,在該本地數(shù)據(jù)包列表中包括在該結(jié)點的本地緩存中已經(jīng)收到的并可以為鄰居結(jié)點提供服務(wù)的數(shù)據(jù)包的序列號(該序列號的分配是按數(shù)據(jù)包內(nèi)容順序連續(xù)遞增的,且唯一的);(2)該結(jié)點將其本地數(shù)據(jù)包列表發(fā)送給已知曉的鄰居結(jié)點;同時,該結(jié)點接收來自已知曉的鄰居結(jié)點的本地數(shù)據(jù)包列表;(3)該結(jié)點將所有收到的本地數(shù)據(jù)包列表進行分析,并建立、更新每一個數(shù)據(jù)包可以提供服務(wù)的候選鄰居結(jié)點列表,該候選鄰居結(jié)點列表包括所有己收到的本地數(shù)據(jù)包列表中含有的數(shù)據(jù)包序列號,每一個數(shù)據(jù)包序列號對應(yīng)的可提供服務(wù)的若干個的候選鄰居結(jié)點編號;(4)若本地數(shù)據(jù)包列表中存在缺失的數(shù)據(jù)包(該結(jié)點還沒有收到的、造成本地數(shù)據(jù)包列表中數(shù)據(jù)包序列號不連續(xù)的數(shù)據(jù)包),該結(jié)點在相對應(yīng)的數(shù)據(jù)包候選鄰居結(jié)點列表中選取一個或多個鄰居結(jié)點,并向該鄰居結(jié)點發(fā)出對于該數(shù)據(jù)包的數(shù)據(jù)請求;同時接收上一個數(shù)據(jù)請求所返回的數(shù)據(jù)包;若該結(jié)點收到來自鄰居結(jié)點的數(shù)據(jù)請求,對數(shù)據(jù)請求作出服務(wù)響應(yīng),將相對應(yīng)的數(shù)據(jù)包發(fā)送給數(shù)據(jù)請求方;本發(fā)明稱之為基于雙向傳輸?shù)臄?shù)據(jù)請求的過程處于“拉”模式;(5)若該結(jié)點自動發(fā)送該鄰居結(jié)點的本地數(shù)據(jù)包列表中缺失的數(shù)據(jù)包給該鄰居結(jié)點,本發(fā)明稱之為該結(jié)點到其某個鄰居結(jié)點處于“推”模式;若該結(jié)點接收來自該鄰居結(jié)點自動發(fā)送來的其本地數(shù)據(jù)包列表中缺失的數(shù)據(jù)包,本發(fā)明稱之為該結(jié)點的某個鄰居結(jié)點到該結(jié)點處于“推”模式,即上述兩種“推”模式均基于單向傳輸?shù)臄?shù)據(jù)廣播;(6)當處于“拉”模式中的某個鄰居結(jié)點響應(yīng)服務(wù)請求的各項指標滿足給定的要求時,則其鄰居結(jié)點到該結(jié)點的通信視為流暢,則該鄰居結(jié)點到該結(jié)點的數(shù)據(jù)交換模式由原來的“拉”模式轉(zhuǎn)換為該結(jié)點的某個鄰居結(jié)點到該結(jié)點的“推”模式(即由該結(jié)點的鄰居結(jié)點通知該結(jié)點開始自動發(fā)送該鄰居結(jié)點本地數(shù)據(jù)包列表中的所有數(shù)據(jù)包給該結(jié)點);(7)若該結(jié)點自動發(fā)送其本地數(shù)據(jù)包列表中所有數(shù)據(jù)給某個鄰居結(jié)點期間(即該結(jié)點到其鄰居結(jié)點處于“推”模式),數(shù)據(jù)各指標(延時、丟包等)滿足給定要求時,則該結(jié)點到其鄰居結(jié)點之間的通信視為阻塞,則該結(jié)點到其鄰居結(jié)點的數(shù)據(jù)交換模式由所述的“推”轉(zhuǎn)為“拉”(即由該結(jié)點通知該鄰居結(jié)點停止自動發(fā)送其本地數(shù)據(jù)包列表中的所有數(shù)據(jù)包給該結(jié)點)。
以上步驟(1)-(7)構(gòu)成一個時間周期,循環(huán)執(zhí)行。
所述的本地數(shù)據(jù)包列表的建立采用一個位向量實現(xiàn),該位向量由一個上界值和長度確定,其長度(通常為一個固定值)不大于該結(jié)點的本地緩存可以容納的數(shù)據(jù)包數(shù)量;該位向量可采用循環(huán)隊列的邏輯存儲結(jié)構(gòu)來實現(xiàn),在實際應(yīng)用中,可以采用鏈表、數(shù)組等方式。
所述本地數(shù)據(jù)包列表的更新方法為當有新的數(shù)據(jù)包到達該結(jié)點時,對本地數(shù)據(jù)包列表進行更新,該更新的原則是始終保持位向量的上界值等于該結(jié)點當前已經(jīng)收到的數(shù)據(jù)包中序列號的最大值。
所述的本地數(shù)據(jù)包列表中的數(shù)據(jù)包序列號所指向的數(shù)據(jù)包是本地緩存中已經(jīng)收到的數(shù)據(jù)包的全部或部分。
所述候選鄰居結(jié)點列表的建立采用一個位向量實現(xiàn),該位向量由一個上界值和長度確定,其長度(通常為一個固定值)不大于該結(jié)點的本地緩存可以容納的數(shù)據(jù)包數(shù)量;該位向量,可采用循環(huán)隊列的邏輯存儲結(jié)構(gòu)來實現(xiàn),在實際應(yīng)用中,可以采用鏈表、數(shù)組等方式。
所述候選鄰居結(jié)點列表的更新方法為當鄰居結(jié)點有新的本地數(shù)據(jù)包列表到達該結(jié)點時,對候選鄰居結(jié)點列表進行更新,其中更新的原則是始終保持位向量的上界值等于該鄰居結(jié)點當前已經(jīng)收到的本地數(shù)據(jù)包列表中數(shù)據(jù)包序列號的最大值,同時更新每一個數(shù)據(jù)包可以提供服務(wù)的候選鄰居結(jié)點編號;所述候選鄰居結(jié)點列表是用于在“拉”模式中用戶請求數(shù)據(jù)的可選鄰居結(jié)點列表。
所述候選鄰居結(jié)點列表中鄰居結(jié)點的選取方法,包括但不限于隨機選取、輪盤賭和啟發(fā)式方法。
所述鄰居結(jié)點到該結(jié)點的通信視為流暢的判定方法為匯總與統(tǒng)計該結(jié)點與其鄰居結(jié)點之間的統(tǒng)計數(shù)據(jù)(包括但不限于響應(yīng)率、丟包率和延時時間),當統(tǒng)計數(shù)據(jù)滿足給定條件時,該結(jié)點與其鄰居結(jié)點之間的通信視為流暢。
所述該結(jié)點到其鄰居結(jié)點之間的通信視為阻塞的判定方法為匯總與統(tǒng)計該結(jié)點與其鄰居結(jié)點之間的統(tǒng)計數(shù)據(jù)(包括但不限于響應(yīng)率、丟包率和延時時間),當統(tǒng)計數(shù)據(jù)滿足給定條件時,該結(jié)點與其鄰居結(jié)點之間的通信視為阻塞。
本發(fā)明的特點及技術(shù)效果本發(fā)明方法提出的純分布式的數(shù)據(jù)交換,是基于只有一臺或多臺中央服務(wù)器參與網(wǎng)絡(luò)中客戶端結(jié)點進入與退出網(wǎng)絡(luò)的登記與注銷,中央服務(wù)器不承擔此外的任何功能,包括但不限于數(shù)據(jù)交換與服務(wù)提供。本發(fā)明方法較集中式與半分布式有了本質(zhì)的改變,擁有良好的可擴展性、容錯性和數(shù)據(jù)互動性等特性,理論上單臺中央服務(wù)器可同時支持的服務(wù)數(shù)量沒有上限。本發(fā)明方法結(jié)合數(shù)據(jù)交換二種模式基于單向傳輸?shù)臄?shù)據(jù)廣播的“推”模式和基于雙向傳輸?shù)臄?shù)據(jù)請求的“拉”模式。經(jīng)過理論論證和實驗證明,推拉結(jié)合的純分布式數(shù)據(jù)交換不但充分發(fā)揮了分布式數(shù)據(jù)交換的優(yōu)勢,而且使網(wǎng)絡(luò)始終保持在一個相對最優(yōu)的動態(tài)平衡點上,大大增加了網(wǎng)絡(luò)穩(wěn)定性。
圖1是本發(fā)明方法的流程圖。
圖2是本發(fā)明實施例中的某結(jié)點的本地數(shù)據(jù)包列表。
圖3是本發(fā)明實施例中的某結(jié)點的鄰居結(jié)點列表。
圖4是本發(fā)明實施例中的某結(jié)點的候選鄰居結(jié)點列表。
具體實施例方式
本發(fā)明提出的一種基于推拉結(jié)合的純分布式數(shù)據(jù)交換方法結(jié)合附圖1、2、3、4及實施例詳細說明如下本發(fā)明提出的一種基于推拉結(jié)合的純分布式數(shù)據(jù)交換方法,對于單臺中央服務(wù)器與網(wǎng)絡(luò)中各個客戶端結(jié)點通過周期性地循環(huán)進行數(shù)據(jù)交換(多臺中央服務(wù)器與網(wǎng)絡(luò)中各個客戶端結(jié)點通過周期性地循環(huán)進行數(shù)據(jù)交換的情況相同),在循環(huán)過程中的每個時間周期內(nèi),完成一組數(shù)據(jù)包的發(fā)送、接收、請求服務(wù);所述每個客戶端結(jié)點在該結(jié)點進入網(wǎng)絡(luò)時,由中央服務(wù)器統(tǒng)一分配結(jié)點編號,并告知該結(jié)點網(wǎng)絡(luò)中多個鄰居結(jié)點的編號、位置等信息;所述每一個客戶端結(jié)點的數(shù)據(jù)交換實施例,如圖1所示,包括以下步驟(1)結(jié)點Point013568建立并更新該結(jié)點的用于數(shù)據(jù)交換的本地數(shù)據(jù)包列表(結(jié)點Point013568的本地數(shù)據(jù)包列表如圖2所示,有5個數(shù)據(jù)包序列號,),在該本地數(shù)據(jù)包列表中包括在該結(jié)點的本地緩存中已經(jīng)收到的并可以為鄰居結(jié)點提供服務(wù)的數(shù)據(jù)包的序列號(該序列號的分配是按數(shù)據(jù)包內(nèi)容順序連續(xù)遞增的,且唯一的,可以看出其中存在缺失的數(shù)據(jù)包);上述的本地數(shù)據(jù)包列表的建立采用一個位向量實現(xiàn),該位向量由一個上界值和長度確定,其長度(通常為一個固定值)不大于該結(jié)點的本地緩存可以容納的數(shù)據(jù)包數(shù)量,在本實施例中本地數(shù)據(jù)包列表的長度為1000(如圖2所示,為方便示意,示例中本地數(shù)據(jù)包列表長度用10代替);該位向量可采用循環(huán)隊列的邏輯存儲結(jié)構(gòu)來實現(xiàn),本實施例的程序設(shè)計中,采用靜態(tài)數(shù)組的方式實現(xiàn)。
本地數(shù)據(jù)包列表的更新與維護方法為當有新的數(shù)據(jù)包到達該結(jié)點時,對本地數(shù)據(jù)包列表進行更新,該更新的原則是始終保持位向量的上界值等于該結(jié)點當前已經(jīng)收到的數(shù)據(jù)包中序列號的最大值。
本地數(shù)據(jù)包列表中的數(shù)據(jù)包序列號所指向的數(shù)據(jù)包是本地緩存中已經(jīng)收到的序列號相對大的那一半數(shù)據(jù)包。
(2)該結(jié)點將其本地數(shù)據(jù)包列表發(fā)送給已知曉的鄰居結(jié)點(結(jié)點Point013568的鄰居結(jié)點列表如圖3所示,其有5個鄰居結(jié)點);同時,該結(jié)點接收來自己知曉的鄰居結(jié)點的本地數(shù)據(jù)包列表;(3)該結(jié)點將所有收到的本地數(shù)據(jù)包列表進行分析,并建立、更新和維護每一個數(shù)據(jù)包可以提供服務(wù)的候選鄰居結(jié)點列表,該列表包括所有己收到的本地數(shù)據(jù)包列表中含有的數(shù)據(jù)包序列號,每一個數(shù)據(jù)包序列號對應(yīng)的可提供服務(wù)的若干個的候選鄰居結(jié)點編號(結(jié)點Point013568的候選鄰居結(jié)點列表如圖4所示,有20個數(shù)據(jù)包序列號,以及一個或多個可提供這些數(shù)據(jù)包服務(wù)的候選鄰居結(jié)點編號);上述候選鄰居結(jié)點列表的建立可采用一個位向量實現(xiàn),該位向量由一個上界值和長度確定,其長度(通常為一個固定值)不大于該結(jié)點的本地緩存可以容納的數(shù)據(jù)包數(shù)量,在本實施例中候選鄰居結(jié)點列表的長度為2000(如圖4所示,為方便示意,示例中候選鄰居結(jié)點列表長度用20代替);該位向量,可采用循環(huán)隊列的邏輯存儲結(jié)構(gòu)來實現(xiàn),本實施例的程序設(shè)計中,采用鏈表的方式實現(xiàn)。
上述候選鄰居結(jié)點列表的更新與維護方法為當鄰居結(jié)點有新的本地數(shù)據(jù)包列表到達該結(jié)點時,對候選鄰居結(jié)點列表進行更新,其中更新的原則是始終保持位向量的上界值等于該鄰居結(jié)點當前已經(jīng)收到的本地數(shù)據(jù)包列表中數(shù)據(jù)包序列號的最大值,同時更新每一個數(shù)據(jù)包可以提供服務(wù)的候選鄰居結(jié)點編號;(4)在本地數(shù)據(jù)包列表中缺失的數(shù)據(jù)包(該結(jié)點還沒有收到的、造成本地數(shù)據(jù)包列表中數(shù)據(jù)包序列號不連續(xù)的數(shù)據(jù)包),該結(jié)點在相對應(yīng)的數(shù)據(jù)包候選鄰居結(jié)點列表中選取一個或多個鄰居結(jié)點,并向該鄰居結(jié)點發(fā)出對于該數(shù)據(jù)包的數(shù)據(jù)請求;同時接收上一個數(shù)據(jù)請求所返回的數(shù)據(jù)包;該結(jié)點收到來自鄰居結(jié)點的數(shù)據(jù)請求,對數(shù)據(jù)請求作出服務(wù)響應(yīng),將相對應(yīng)的數(shù)據(jù)包發(fā)送給數(shù)據(jù)請求方;即處于基于雙向傳輸?shù)臄?shù)據(jù)請求的“拉”模式;上述候選鄰居結(jié)點列表中鄰居結(jié)點的選取方法,在本實施例中,綜合考慮網(wǎng)絡(luò)性能和系統(tǒng)負載,選擇輪盤賭的方法來實現(xiàn)。
(5)該結(jié)點自動發(fā)送該鄰居結(jié)點本地數(shù)據(jù)包列表中缺失的數(shù)據(jù)包給該鄰居結(jié)點,即為該結(jié)點到其某個鄰居結(jié)點處于基于單向傳輸?shù)臄?shù)據(jù)廣播的“推”模式;該結(jié)點接收來自該鄰居結(jié)點發(fā)送過來的其緩沖池中缺失的數(shù)據(jù)包,即為該結(jié)點的某個鄰居結(jié)點到該結(jié)點處于基于單向傳輸?shù)臄?shù)據(jù)廣播的“推”模式;上述候選鄰居結(jié)點列表是用于在“拉”模式中用戶請求數(shù)據(jù)的可選鄰居結(jié)點列表。
(6)當處于“拉”模式中的某個鄰居結(jié)點響應(yīng)服務(wù)請求的各項指標滿足給定的要求時,則其鄰居結(jié)點到該結(jié)點的通信視為流暢,則該鄰居結(jié)點到該結(jié)點的數(shù)據(jù)交換模式由原來的“拉”模式轉(zhuǎn)換為該結(jié)點的某個鄰居結(jié)點到該結(jié)點的“推”模式(即由該結(jié)點的鄰居結(jié)點通知該結(jié)點開始自動發(fā)送該鄰居結(jié)點本地數(shù)據(jù)包列表中的所有數(shù)據(jù)包給該結(jié)點);上述鄰居結(jié)點到該結(jié)點的通信視為流暢的判定方法為匯總與統(tǒng)計該結(jié)點與其鄰居結(jié)點之間的統(tǒng)計數(shù)據(jù)(在本實施例中,包括響應(yīng)率、丟包率和延時時間),當統(tǒng)計數(shù)據(jù)滿足給定條件(同時滿足響應(yīng)率80%以上,丟包率1%以下,延時時間小于1秒)時,該結(jié)點與其鄰居結(jié)點之間的通信視為流暢。
(7)若該結(jié)點自動發(fā)送其本地數(shù)據(jù)包列表中所有數(shù)據(jù)給某個鄰居結(jié)點期間(即該結(jié)點到其鄰居結(jié)點處于“推”模式),數(shù)據(jù)延時、丟包等指標滿足給定要求時,則該結(jié)點到其鄰居結(jié)點之間的通信視為阻塞,則該結(jié)點到其鄰居結(jié)點的數(shù)據(jù)交換模式由所述的“推”轉(zhuǎn)為“拉”(即由該結(jié)點通知該鄰居結(jié)點停止自動發(fā)送其本地數(shù)據(jù)包列表中的所有數(shù)據(jù)包給該結(jié)點)。
上述該結(jié)點到其鄰居結(jié)點之間的通信視為阻塞的判定方法為匯總與統(tǒng)計該結(jié)點與其鄰居結(jié)點之間的統(tǒng)計數(shù)據(jù)(在本實施例中,包括響應(yīng)率、丟包率和延時時間),當統(tǒng)計數(shù)據(jù)滿足給定條件(響應(yīng)率50%以下,丟包率10%以上,延時時間大于3秒,滿足其中任何一項)時,該結(jié)點與其鄰居結(jié)點之間的通信視為阻塞。
以上步驟(1)-(7)構(gòu)成一個時間周期,循環(huán)執(zhí)行。
權(quán)利要求
1.一種基于推拉結(jié)合的純分布式數(shù)據(jù)交換方法,其特征在于,對于單臺中央服務(wù)器與網(wǎng)絡(luò)中各個客戶端結(jié)點通過周期性地循環(huán)進行數(shù)據(jù)交換,在循環(huán)過程中的每個時間周期內(nèi),完成一組數(shù)據(jù)包的發(fā)送、接收、請求服務(wù);所述每個客戶端結(jié)點在該結(jié)點進入網(wǎng)絡(luò)時,由中央服務(wù)器統(tǒng)一分配結(jié)點編號,并告知該結(jié)點網(wǎng)絡(luò)中多個鄰居結(jié)點的編號、位置等信息;所述每一個客戶端結(jié)點的數(shù)據(jù)交換包括以下步驟(1)該結(jié)點建立并更新用于數(shù)據(jù)交換的本地數(shù)據(jù)包列表,在該本地數(shù)據(jù)包列表中包括在該結(jié)點的本地緩存中已經(jīng)收到的并可以為鄰居結(jié)點提供服務(wù)的數(shù)據(jù)包的序列號;(2)該結(jié)點將其本地數(shù)據(jù)包列表發(fā)送給已知曉的鄰居結(jié)點;同時,該結(jié)點接收來自已知曉的鄰居結(jié)點的本地數(shù)據(jù)包列表;(3)該結(jié)點將所有收到的本地數(shù)據(jù)包列表進行分析,并建立、更新每一個數(shù)據(jù)包可以提供服務(wù)的候選鄰居結(jié)點列表,該候選鄰居結(jié)點列表包括所有已收到的本地數(shù)據(jù)包列表中含有的數(shù)據(jù)包序列號,每一個數(shù)據(jù)包序列號對應(yīng)的可提供服務(wù)的若干個的候選鄰居結(jié)點編號;(4)若本地數(shù)據(jù)包列表中存在缺失的數(shù)據(jù)包,該結(jié)點在相對應(yīng)的數(shù)據(jù)包候選鄰居結(jié)點列表中選取一個或多個鄰居結(jié)點,并向該鄰居結(jié)點發(fā)出對于該數(shù)據(jù)包的數(shù)據(jù)請求;同時接收上一個數(shù)據(jù)請求所返回的數(shù)據(jù)包;若該結(jié)點收到來自鄰居結(jié)點的數(shù)據(jù)請求,對數(shù)據(jù)請求作出服務(wù)響應(yīng),將相對應(yīng)的數(shù)據(jù)包發(fā)送給數(shù)據(jù)請求方;該過程處于基于雙向傳輸?shù)臄?shù)據(jù)請求的“拉”模式;(5)若該結(jié)點自動發(fā)送該鄰居結(jié)點的本地數(shù)據(jù)包列表中缺失的數(shù)據(jù)包給該鄰居結(jié)點,則該結(jié)點到其某個鄰居結(jié)點處于基于單向傳輸?shù)臄?shù)據(jù)廣播“推”模式;若該結(jié)點接收來自該鄰居結(jié)點自動發(fā)送來的其本地數(shù)據(jù)包列表中缺失的數(shù)據(jù)包,則該結(jié)點的某個鄰居結(jié)點到該結(jié)點處于基于單向傳輸?shù)臄?shù)據(jù)廣播“推”模式基于單向傳輸?shù)臄?shù)據(jù)廣播;(6)當處于“拉”模式中的某個鄰居結(jié)點響應(yīng)服務(wù)請求的各項指標滿足給定的要求時,則其鄰居結(jié)點到該結(jié)點的通信視為流暢,則該鄰居結(jié)點到該結(jié)點的數(shù)據(jù)交換模式由原來的“拉”模式轉(zhuǎn)換為該結(jié)點的某個鄰居結(jié)點到該結(jié)點的“推”模式;(7)若該結(jié)點到其鄰居結(jié)點處于“推”模式,數(shù)據(jù)各指標滿足給定要求時,則該結(jié)點到其鄰居結(jié)點之間的通信視為阻塞,則該結(jié)點到其鄰居結(jié)點的數(shù)據(jù)交換模式由所述的“推”轉(zhuǎn)為“拉”;以上步驟(1)-(7)構(gòu)成一個時間周期,循環(huán)執(zhí)行。
2.如權(quán)利要求1所述的基于推拉結(jié)合的純分布式數(shù)據(jù)交換方法,其特征在于,所述的本地數(shù)據(jù)包列表的建立采用一個位向量實現(xiàn),該位向量由一個上界值和長度確定,其長度不大于該結(jié)點的本地緩存可以容納的數(shù)據(jù)包數(shù)量;該位向量采用循環(huán)隊列的邏輯存儲結(jié)構(gòu)來實現(xiàn)。
3.如權(quán)利要求1所述的基于推拉結(jié)合的純分布式數(shù)據(jù)交換方法,其特征在于,所述本地數(shù)據(jù)包列表的更新方法為當有新的數(shù)據(jù)包到達該結(jié)點時,對本地數(shù)據(jù)包列表進行更新,該更新的原則是始終保持位向量的上界值等于該結(jié)點當前已經(jīng)收到的數(shù)據(jù)包中序列號的最大值。
4.如權(quán)利要求1所述的基于推拉結(jié)合的純分布式數(shù)據(jù)交換方法,所述候選鄰居結(jié)點列表的建立采用一個位向量實現(xiàn),該位向量由一個上界值和長度確定,其長度(不大于該結(jié)點的本地緩存可以容納的數(shù)據(jù)包數(shù)量;該位向量采用循環(huán)隊列的邏輯存儲結(jié)構(gòu)來實現(xiàn)。
5.如權(quán)利要求1所述的基于推拉結(jié)合的純分布式數(shù)據(jù)交換方法,其特征在于,所述候選鄰居結(jié)點列表的更新方法為當鄰居結(jié)點有新的本地數(shù)據(jù)包列表到達該結(jié)點時,對候選鄰居結(jié)點列表進行更新,其中更新的原則是始終保持位向量的上界值等于該鄰居結(jié)點當前已經(jīng)收到的本地數(shù)據(jù)包列表中數(shù)據(jù)包序列號的最大值,同時更新每一個數(shù)據(jù)包可以提供服務(wù)的候選鄰居結(jié)點編號;
6.如權(quán)利要求1所述的基于推拉結(jié)合的純分布式數(shù)據(jù)交換方法,其特征在于,所述候選鄰居結(jié)點列表中鄰居結(jié)點的選取方法采用隨機選取、輪盤賭和啟發(fā)式之一種方法。
7.如權(quán)利要求1所述的基于推拉結(jié)合的純分布式數(shù)據(jù)交換方法,其特征在于,所述鄰居結(jié)點到該結(jié)點的通信視為流暢的判定方法為匯總與統(tǒng)計該結(jié)點與其鄰居結(jié)點之間的統(tǒng)計數(shù)據(jù),當統(tǒng)計數(shù)據(jù)滿足給定條件時,該結(jié)點與其鄰居結(jié)點之間的通信視為流暢。
8.如權(quán)利要求1所述的基于推拉結(jié)合的純分布式數(shù)據(jù)交換方法,其特征在于,所述該結(jié)點到其鄰居結(jié)點之間的通信視為阻塞的判定方法為匯總與統(tǒng)計該結(jié)點與其鄰居結(jié)點之間的統(tǒng)計數(shù)據(jù),當統(tǒng)計數(shù)據(jù)滿足給定條件時,該結(jié)點與其鄰居結(jié)點之間的通信視為阻塞。
全文摘要
本發(fā)明涉及一種基于推拉結(jié)合的純分布式數(shù)據(jù)交換方法,屬于網(wǎng)絡(luò)中的數(shù)據(jù)交換技術(shù)領(lǐng)域,對于單臺中央服務(wù)器與網(wǎng)絡(luò)中各個客戶端結(jié)點通過周期性地循環(huán)進行數(shù)據(jù)交換,完成一組數(shù)據(jù)包的發(fā)送、接收、請求服務(wù);包括該結(jié)點建立并更新用于數(shù)據(jù)交換的本地數(shù)據(jù)包列表;將其本地數(shù)據(jù)包列表發(fā)送給已知曉的鄰居結(jié)點;并建立、更新每一個數(shù)據(jù)包可以提供服務(wù)的候選鄰居結(jié)點列表;當處于“拉”模式中時的通信流暢,則該鄰居結(jié)點到該結(jié)點由原來的“拉”模式轉(zhuǎn)換為“推”模式;若該結(jié)點到其鄰居結(jié)點處于“推”模式的通信阻塞,則該結(jié)點到其鄰居結(jié)點由所述的“推”轉(zhuǎn)為“拉”。本發(fā)明方法擁有良好的可擴展性、容錯性和數(shù)據(jù)互動性等特性。
文檔編號H04L12/56GK1665223SQ20051005150
公開日2005年9月7日 申請日期2005年3月4日 優(yōu)先權(quán)日2005年3月4日
發(fā)明者趙黎, 張萌, 毛子青, 羅建光, 吳南山, 楊士強 申請人:清華大學(xué)