本發(fā)明涉及網(wǎng)絡技術和通信技術領域,尤其涉及一種基于大規(guī)模網(wǎng)絡節(jié)點的內(nèi)容分發(fā)方法及系統(tǒng)。
背景技術:
隨著網(wǎng)絡技術和通信技術的不斷發(fā)展,智能路由器和業(yè)務服務器的規(guī)模不斷增加,可以為用戶提供的服務種類也不斷豐富,包括音頻服務、視頻服務、多媒體服務、新聞提供、搜索服務、臺風預報、海嘯警報、災難通知、交通情況、輿情傳播等。那些對實時性要求低的服務,其提供方式一般是由用戶主動去獲取的,即用戶使用連接在因特網(wǎng)上的各類終端,主動與因特網(wǎng)上的特定業(yè)務服務器建立連接,向業(yè)務服務器發(fā)送特定的業(yè)務請求,然后從業(yè)務服務器得到響應,該響應中包含了用戶所需要的各類信息。但是,這樣的提供方式對很多服務來說是不適合的,或者是過于低效的,比如臺風預報、海嘯警報、災難通知等。對于這些實時性要求很高的服務,用戶希望業(yè)務服務器可以主動推送給用戶,而不需要等到用戶主動去訪問業(yè)務服務器來獲取,因為等待用戶的主動訪問會影響預報信息的及時性。其中,信息傳播速度是一個關鍵因素。
另一方面,用戶對信息傳播的及時性和網(wǎng)絡服務質(zhì)量的要求越來越高,如何提升尋址速度和降低服務拒絕率都是影響用戶體驗的重要問題。其中,快速內(nèi)容分發(fā)和就近提供服務是一種有效的解決方案。內(nèi)容分發(fā)的目的是通過將內(nèi)容發(fā)布到最接近用戶的網(wǎng)絡邊緣,使用戶可以就近取得所需的內(nèi)容。具體而言,通過應用分布式緩存、負載均衡和流量工程等技術,提供各種內(nèi)容分布和服務發(fā)送的功能,包括動態(tài)地部署網(wǎng)絡內(nèi)容到邊緣,根據(jù)網(wǎng)絡內(nèi)容處理通信量,將訪問請求轉(zhuǎn)發(fā)給最近的服務器,使得用戶能以最快的速度,從最接近用戶的地方獲得所需的內(nèi)容,從而縮短服務提供點與用戶之間的網(wǎng)絡距離,提高響應速度和服務質(zhì)量,減少延遲、解決網(wǎng)絡擁擠等問題。簡而言之,為了降低網(wǎng)絡資源的消耗和減輕用戶查找信息的負擔,可以將各種信息以文件形式預先推送到作為分布式緩存的智能路由器或業(yè)務服務器上。其中,信息推送速度是一個重要因素。
此外,在自組織網(wǎng)絡中,網(wǎng)絡拓撲的動態(tài)變化引起的路由更新分組需要快速傳播到全網(wǎng)。路由更新分組在傳播的過程中還會涉及到路由計算和路由表更新。如果能快速的傳播路由更新分組,可以有效地降低拓撲變化對網(wǎng)絡的影響,減少丟包,提高網(wǎng)絡利用率,改善用戶體驗。
因此,針對大規(guī)模網(wǎng)絡節(jié)點,有必要提供更高效和更快速的信息推送方法,以解決現(xiàn)有技術所存在的內(nèi)容分發(fā)效率低和更新速度慢等問題。
技術實現(xiàn)要素:
本發(fā)明目的在于,為克服上述問題,本發(fā)明提供一種針對大規(guī)模網(wǎng)絡節(jié)點的信息推送方法及系統(tǒng)。
為了實現(xiàn)上述方法,本發(fā)明提供了一種基于大規(guī)模網(wǎng)絡節(jié)點的內(nèi)容分發(fā)方法,所述方法包含:
步驟101)根據(jù)所要分發(fā)的內(nèi)容,將存儲有該內(nèi)容的節(jié)點作為源節(jié)點,并將源節(jié)點放入激活節(jié)點集合中;其中,所述激活節(jié)點集合是指所有激活節(jié)點組成的集合,所述的激活節(jié)點是指節(jié)點本身已完成內(nèi)容推送且相鄰節(jié)點中仍存在未推送消息的節(jié)點。
步驟102)查找各個激活節(jié)點的所有相鄰節(jié)點,并獲取各相鄰節(jié)點的度的信息,并對相鄰節(jié)點依據(jù)獲取的度信息進行劃分。
步驟103)根據(jù)相鄰節(jié)點的劃分結果,優(yōu)先將所要分發(fā)的內(nèi)容推送到度數(shù)較大的節(jié)點,并將接收到推送內(nèi)容的節(jié)點放入激活節(jié)點集合中。
步驟104)重復執(zhí)行步驟102)和步驟103),直到所有節(jié)點全部推送完畢,或者滿足用戶設定的截止條件為止。
可選的,上述激活節(jié)點集合中的節(jié)點采用并發(fā)推送的方式向各自的相鄰節(jié)點推送所要分發(fā)的內(nèi)容。
上述步驟102)進一步包含:
步驟102-1)給定節(jié)點的度的閾值d0。
步驟102-2)將相鄰節(jié)點的度大于等于d0的節(jié)點劃分為第一類,將相鄰節(jié)點的度小于d0的節(jié)點劃分為第二類。
優(yōu)選的,在每個節(jié)點每次進行內(nèi)容推送的節(jié)點數(shù)量不大于3的約束條件下,所述d0取值為大于1且小于7的自然數(shù)。
上述步驟103)進一步包括以下具體步驟:
步驟103-1)檢查第一類相鄰節(jié)點集合中的節(jié)點數(shù)目,若大于等于單個推送消息限制的節(jié)點數(shù)P0,則從第一類相鄰節(jié)點結合中選擇P0個相鄰節(jié)點進行內(nèi)容推送;將接收到推送內(nèi)容的節(jié)點從第一類相鄰節(jié)點結合中取出放入激活節(jié)點集合中;轉(zhuǎn)入步驟103-3)。
步驟103-2)檢查第一類相鄰節(jié)點集合中的節(jié)點數(shù)目,若小于單個推送消息限制的節(jié)點數(shù)P0,則對所有的相鄰節(jié)點進行內(nèi)容推送,推送的節(jié)點數(shù)量為P1;檢查第二類相鄰節(jié)點集合中的節(jié)點數(shù)目,從中選擇最多“P0-P1”個相鄰節(jié)點進行內(nèi)容推送;將接收到推送內(nèi)容的節(jié)點從第一類相鄰節(jié)點集合和第二類相鄰節(jié)點集合中取出后放入激活節(jié)點集合中。
步驟103-3)再次檢查第一類相鄰節(jié)點集合和第二類相鄰節(jié)點集合,若都為空,則將完成推送的節(jié)點從激活節(jié)點集合中刪除。
上述步驟103-1)和步驟103-2)均隨機選擇推送節(jié)點。
此外,本發(fā)明提供了一種基于大規(guī)模網(wǎng)絡節(jié)點的內(nèi)容分發(fā)系統(tǒng),所述系統(tǒng)包含:
激活節(jié)點集合存儲模塊,用于根據(jù)所要分發(fā)的內(nèi)容,將存儲有該內(nèi)容的節(jié)點作為源節(jié)點,放入激活節(jié)點集合中;其中,激活節(jié)點集合是指所有激活節(jié)點組成的集合,所述的激活節(jié)點是指節(jié)點本身已完成內(nèi)容推送,相鄰節(jié)點中仍存在未推送消息的節(jié)點。
劃分模塊,用于查找各個激活節(jié)點的所有相鄰節(jié)點,并獲取各相鄰節(jié)點的度的信息,并對相鄰節(jié)點依據(jù)獲取的度的信息進行劃分。
推送處理模塊,用于根據(jù)相鄰節(jié)點的劃分結果,優(yōu)先將所要分發(fā)的內(nèi)容推送到度數(shù)較大的節(jié)點,并將接收到推送內(nèi)容的節(jié)點放入激活節(jié)點集合中。
檢測模塊,用于檢測所有激活節(jié)點集合中的節(jié)點是否均完成了推送或者是否滿足用戶設定的推送截止條件,如果沒有滿足上述兩個條件中的任意一個則重復執(zhí)行劃分模塊和推送處理模塊直至滿足兩個條件中的一個。
可選的,上述激活節(jié)點集合中的節(jié)點采用并發(fā)推送的方式向各自的相鄰節(jié)點推送所要分發(fā)的內(nèi)容。
進一步可選的,上述劃分模塊進一步包含:
閾值設置子模塊,用于給定節(jié)點的度的閾值d0;和分類子模塊,用于將相鄰節(jié)點的度大于等于d0的節(jié)點劃分為第一類,將相鄰節(jié)點的度小于d0的節(jié)點劃分為第二類。
上述推送處理模塊進一步包括:
第一處理子模塊,用于檢查第一類相鄰節(jié)點集合中的節(jié)點數(shù)目,若大于等于單個推送消息限制的節(jié)點數(shù)P0,則從第一類相鄰節(jié)點結合中選擇P0個相鄰節(jié)點進行內(nèi)容推送。
第二處理子模塊,用于檢查第一類相鄰節(jié)點集合中的節(jié)點數(shù)目,若小于單個推送消息限制的節(jié)點數(shù)P0,則對所有的相鄰節(jié)點進行內(nèi)容推送,推送的節(jié)點數(shù)量為P1。
第三處理子模塊,用于檢查第二類相鄰節(jié)點集合中的節(jié)點數(shù)目,從中選擇最多“P0-P1”個相鄰節(jié)點進行內(nèi)容推送。
第四處理子模塊,用于將接收到推送內(nèi)容節(jié)點從第一類相鄰節(jié)點集合和第二類相鄰節(jié)點集合中取出并放入激活節(jié)點集合中。
第五處理子模塊,用于再次檢查第一類相鄰節(jié)點集合和第二類相鄰節(jié)點集合,若都為空,則將完成推送的節(jié)點從激活節(jié)點集合中刪除。
上述第一處理模塊、第二處理模塊和第三處理模塊均隨機選擇推送節(jié)點。
本發(fā)明的優(yōu)點在于:采用本發(fā)明的基于大規(guī)模網(wǎng)絡節(jié)點的內(nèi)容快速分發(fā)方法,能夠提高當存在大量節(jié)點時分發(fā)內(nèi)容的效率。即本發(fā)明的技術方案在每個節(jié)點每次推送的節(jié)點數(shù)量有限的約束下,提高千萬量級及其以上節(jié)點時分發(fā)內(nèi)容的效率。
附圖說明
圖1是本發(fā)明的基于大規(guī)模網(wǎng)絡節(jié)點的內(nèi)容快速分發(fā)方法的流程示意圖;
圖2是本發(fā)明實施例提供的具體的基于大規(guī)模網(wǎng)絡節(jié)點的內(nèi)容快速分發(fā)方法的流程圖;
圖3為實現(xiàn)本發(fā)明內(nèi)容分發(fā)方法的對應的系統(tǒng)組成框圖,即內(nèi)容分發(fā)子系統(tǒng)組成框圖。
具體實施方式
以下結合附圖對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。圖1和圖2是本發(fā)明的基于大規(guī)模網(wǎng)絡節(jié)點的內(nèi)容快速分發(fā)方法的流程圖,該方法包括:
步驟一,根據(jù)所要分發(fā)的內(nèi)容,找到存儲有該內(nèi)容的節(jié)點,作為源節(jié)點,放入 激活節(jié)點集合中;
步驟二,查找各個激活節(jié)點的所有相鄰節(jié)點以及各節(jié)點的度的信息,并對相鄰節(jié)點進行劃分;
步驟三,根據(jù)相鄰節(jié)點的劃分結果,優(yōu)先推送到度數(shù)較大的節(jié)點,并將接收到推送內(nèi)容的節(jié)點放入激活節(jié)點集合中;
步驟四,重復執(zhí)行步驟二和步驟三,直到所有節(jié)點全部推送完畢,或者滿足用戶設定的某一截止條件為止。
其中,所述步驟一中的激活節(jié)點集合是指所有激活節(jié)點組成的集合,所述的激活節(jié)點是指節(jié)點本身已完成內(nèi)容推送,而相鄰節(jié)點中仍存在未推送消息的節(jié)點。
優(yōu)選地,在所述步驟一中所有在激活節(jié)點集合中的節(jié)點是并發(fā)推送的。
具體地,在一種具體實施方式中,步驟二首先從激活節(jié)點中獲取所有相鄰節(jié)點的信息,從相鄰節(jié)點中篩選出未推送過消息的節(jié)點,然后根據(jù)給定節(jié)點的度的閾值d0,將節(jié)點的度大于等于d0的節(jié)點劃分為第一類,將節(jié)點的度小于d0的節(jié)點劃分為第二類。
在一種具體的實施方式中,步驟二中所述的對相鄰節(jié)點的篩選可以通過在節(jié)點的屬性中增加一個屬性,用于標識當前節(jié)點是否已被推送過當前消息。
在篩選出未推送消息的節(jié)點后,還要根據(jù)給定節(jié)點的度的閾值d0,對節(jié)點進行劃分。
具體來說,需要首先確定節(jié)點的度的閾值d0。該閾值可以根據(jù)不同的網(wǎng)絡環(huán)境自動設置或由技術人員預先設置。比如:該閾值d0可以設置為6。
具體地,在所述步驟三中進一步包括以下具體步驟:
檢查第一類相鄰節(jié)點集合中的節(jié)點數(shù)目,若大于等于單個推送消息限制P0,則從中選擇P0個相鄰節(jié)點進行內(nèi)容推送;
若小于單個推送消息限制P0,則對所有的相鄰節(jié)點進行內(nèi)容推送,推送的節(jié)點數(shù)量為P1;
檢查第二類相鄰節(jié)點集合中的節(jié)點數(shù)目,從中選擇最多(P0-P1)個相鄰節(jié)點進行 內(nèi)容推送;
將接收到推送內(nèi)容的相鄰節(jié)點從第一類相鄰節(jié)點集合和第二類相鄰節(jié)點集合中取出,放入激活節(jié)點集合中;
再次檢查第一類相鄰節(jié)點集合和第二類相鄰節(jié)點集合,若都為空,則將該節(jié)點從激活節(jié)點集合中刪除。
其中,在一種具體實施方式中,單個推送消息限制P0是由網(wǎng)絡環(huán)境的硬件限制所決定的,或者也可以由技術人員預先進行設置。比如:每個節(jié)點每次進行內(nèi)容推送的節(jié)點數(shù)量為2。
步驟三中所述推送節(jié)點的選擇優(yōu)選但不限于隨機選擇。比如:可以對一類相鄰節(jié)點和二類相鄰節(jié)點按照度的大小進行排序,選擇推送節(jié)點時可以按照度的大小從大到小的順序進行推送。
具體地,步驟四中所述的用戶設定的截止條件由技術人員設置。比如:截止條件可以設置為遍歷的節(jié)點數(shù)達到1400萬。
仿真驗證結果表明,如果P0是有限的,而且節(jié)點的度分布是泊松分布、冪分布、不規(guī)則分布等,那么本發(fā)明中所提議方法的平均推送速度都超過了現(xiàn)有洪泛方法的平均推送速度,而且在每個節(jié)點每次進行內(nèi)容推送的節(jié)點數(shù)量不大于3的約束條件下,在理想的拓撲結構中,閾值d0為6就已經(jīng)接近并發(fā)式推送速度的上限,這個閾值無需再大了。
如圖3所示,本發(fā)明提供了一種基于大規(guī)模網(wǎng)絡節(jié)點的內(nèi)容分發(fā)系統(tǒng),所述系統(tǒng)包含:
激活節(jié)點集合存儲模塊,用于根據(jù)所要分發(fā)的內(nèi)容,將存儲有該內(nèi)容的節(jié)點作為源節(jié)點,放入激活節(jié)點集合中;其中,激活節(jié)點集合是指所有激活節(jié)點組成的集合,所述的激活節(jié)點是指節(jié)點本身已完成內(nèi)容推送,相鄰節(jié)點中仍存在未推送消息的節(jié)點。
劃分模塊,用于查找各個激活節(jié)點的所有相鄰節(jié)點,并獲取各相鄰節(jié)點的度的信息,并對相鄰節(jié)點依據(jù)獲取的度的信息進行劃分。
推送處理模塊,用于根據(jù)相鄰節(jié)點的劃分結果,優(yōu)先將所要分發(fā)的內(nèi)容推送到度數(shù)較大的節(jié)點,并將接收到推送內(nèi)容的節(jié)點放入激活節(jié)點集合中。
檢測模塊,用于檢測所有激活節(jié)點集合中的節(jié)點是否均完成了推送或者是否滿足用戶設定的推送截止條件,如果沒有滿足上述兩個條件中的任意一個則重復執(zhí)行劃分模塊和推送處理模塊直至滿足兩個條件中的一個。
可選的,上述激活節(jié)點集合中的節(jié)點采用并發(fā)推送的方式向各自的相鄰節(jié)點推送所要分發(fā)的內(nèi)容。
進一步可選的,上述劃分模塊進一步包含:
閾值設置子模塊,用于給定節(jié)點的度的閾值d0;和分類子模塊,用于將相鄰節(jié)點的度大于等于d0的節(jié)點劃分為第一類,將相鄰節(jié)點的度小于d0的節(jié)點劃分為第二類。
上述推送處理模塊進一步包括:
第一處理子模塊,用于檢查第一類相鄰節(jié)點集合中的節(jié)點數(shù)目,若大于等于單個推送消息限制的節(jié)點數(shù)P0,則從第一類相鄰節(jié)點結合中選擇P0個相鄰節(jié)點進行內(nèi)容推送。
第二處理子模塊,用于檢查第一類相鄰節(jié)點集合中的節(jié)點數(shù)目,若小于單個推送消息限制的節(jié)點數(shù)P0,則對所有的相鄰節(jié)點進行內(nèi)容推送,推送的節(jié)點數(shù)量為P1。
第三處理子模塊,用于檢查第二類相鄰節(jié)點集合中的節(jié)點數(shù)目,從中選擇最多“P0-P1”個相鄰節(jié)點進行內(nèi)容推送。
第四處理子模塊,用于將接收到推送內(nèi)容的節(jié)點從第一類相鄰節(jié)點集合和第二類相鄰節(jié)點集合中取出并放入激活節(jié)點集合中。
第五處理子模塊,用于再次檢查第一類相鄰節(jié)點集合和第二類相鄰節(jié)點集合,若都為空,則將完成推送的節(jié)點從激活節(jié)點集合中刪除。
上述第一處理模塊、第二處理模塊和第三處理模塊均隨機選擇推送節(jié)點。
以上所述的具體實施例,對本發(fā)明的目的、技術方案和有益效果進行了進一步詳細說明,應理解的是,以上所述僅為本發(fā)明的具體實施例而已,并不用于限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。