專利名稱:非實(shí)時(shí)局域網(wǎng)廣播通訊方法
技術(shù)領(lǐng)域:
本發(fā)明屬于網(wǎng)絡(luò)廣播通訊技術(shù),特別涉及一種非實(shí)時(shí)局域網(wǎng)廣播通訊方法。
背景技術(shù):
目前互聯(lián)網(wǎng)絡(luò)通訊在繁忙時(shí)經(jīng)常發(fā)生網(wǎng)絡(luò)壅塞現(xiàn)象。尤其對很大的數(shù)據(jù)量,多個(gè)用戶幾乎在同一時(shí)間范圍內(nèi)同時(shí)下載,會(huì)出現(xiàn)通訊瓶頸問題,表現(xiàn)出通訊效率很低。提高通訊效率的辦法如增加帶寬等,但也是有極限的。目前有歐洲專利是在網(wǎng)絡(luò)骨干服務(wù)器上統(tǒng)計(jì)通訊數(shù)據(jù)頻率,用擴(kuò)充的內(nèi)存緩沖存儲(chǔ)常見數(shù)據(jù)(越常見數(shù)據(jù)被保存時(shí)間越長)來提高通訊效率。但也不是從跟本上解決通訊瓶頸問題。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種非實(shí)時(shí)局域網(wǎng)廣播通訊技術(shù)方法,充分利用非實(shí)時(shí)和足夠數(shù)量的終端用戶兩個(gè)條件,在英特網(wǎng)/局域網(wǎng)實(shí)現(xiàn)巨量數(shù)據(jù)的高速下載。從而實(shí)際上消除英特網(wǎng)上常見巨量數(shù)據(jù)通訊的少量提供方和廣大接受方的通訊瓶頸問題。
目前網(wǎng)絡(luò)下載是P2P模式,用戶A和用戶B分別要求下載同一個(gè)大文件,相同的數(shù)據(jù)會(huì)在不同時(shí)刻重復(fù)傳送,哪怕A和B發(fā)出請求的時(shí)間差不多。
本發(fā)明是一種附加于擁有相當(dāng)數(shù)目終端用戶局域網(wǎng)的大文件下載服務(wù)系統(tǒng)(小文件增益率較低但總效率仍遠(yuǎn)高于現(xiàn)行網(wǎng)絡(luò))。其主要特征是一種特殊的,基于UDP(用戶數(shù)據(jù)報(bào)協(xié)議)的服務(wù)器面向終端機(jī)的網(wǎng)絡(luò)廣播。
本發(fā)明的基本原理是管理員級別程序能在局域網(wǎng)實(shí)現(xiàn)廣播通訊,即同一個(gè)數(shù)據(jù)包經(jīng)一個(gè)廣播發(fā)送,所有愿意接收該數(shù)據(jù)包的終端用戶都能夠收到。這就是并行通訊相對P2P(點(diǎn)對點(diǎn))通訊的效率放大緣故。當(dāng)然前提是有相當(dāng)數(shù)目的用戶愿意接收該數(shù)據(jù)包。對于擁有一定數(shù)量(幾百以上)的終端用戶的局域網(wǎng),在一定時(shí)間范圍內(nèi)(一天以上),從統(tǒng)計(jì)角度而言,用戶選擇下載的重復(fù)率是很高的。這一點(diǎn)對于網(wǎng)絡(luò)上帶寬要求最高的影視節(jié)目尤其如此。此外符合條件的下載有各類出版物(尤其是定時(shí)出版物如流行報(bào)刊雜志等)。
本發(fā)明設(shè)計(jì)包含若干服務(wù)器及其一套相關(guān)的軟件集成。
該軟件集成由一個(gè)簡單的終端用戶程序和若干運(yùn)行于服務(wù)器上的服務(wù)構(gòu)成。此外,對于具體不同構(gòu)造物理局域網(wǎng),有若干特定設(shè)備改進(jìn)和要求。服務(wù)器/用戶終端機(jī)及軟件集成基于邏輯局域網(wǎng)中,獨(dú)立于具體物理網(wǎng),因此適用于各類型網(wǎng)絡(luò)。
對于具體物理網(wǎng)(常見的如ADSL網(wǎng)-非對稱數(shù)字用戶環(huán)線網(wǎng)),在某個(gè)環(huán)節(jié)上(路由器),廣播通信可能是非常不經(jīng)濟(jì)的,應(yīng)用本發(fā)明需要特殊路由器支持。該特殊路由器中CPU(中央處理器)要運(yùn)行額外處理指令。
一種非實(shí)時(shí)局域網(wǎng)廣播通訊方法,其特征在于包含若干服務(wù)器的物理網(wǎng)及其一套相關(guān)的軟件程序集成;其包含若干服務(wù)器的物理網(wǎng)是由英特網(wǎng)總站服務(wù)器連接的若干個(gè)局域網(wǎng)內(nèi)的路由器,每個(gè)局域網(wǎng)的路由器聯(lián)接若干服務(wù)器,路由器還連接各個(gè)終端用戶;其中的路由器是帶有CPU中央處理器路由器;其軟件程序集成為有軟件塊的工作流程;總站服務(wù)器上的服務(wù)程序-網(wǎng)頁-連同數(shù)據(jù)庫程序一直運(yùn)行,每個(gè)局域網(wǎng)中有一個(gè)配分程序也一直運(yùn)行,并和數(shù)據(jù)庫程序保持實(shí)時(shí)更新;服務(wù)內(nèi)容-大文件-位于每臺(tái)服務(wù)器的大容量儲(chǔ)存器上;每個(gè)正在提供下載的服務(wù)內(nèi)容對應(yīng)一個(gè)運(yùn)行于該服務(wù)器上的派分程序;正在使用本發(fā)明下載的用戶機(jī)上有一個(gè)用戶下載程序,該用戶下載程序?qū)τ诿總€(gè)下載會(huì)調(diào)入一個(gè)下載任務(wù)塊;本發(fā)明的一個(gè)服務(wù)流程由用戶引起;1;用戶訪問總站網(wǎng)頁;2;網(wǎng)頁服務(wù)程序取得用戶實(shí)時(shí)資料;3;用戶通過總站網(wǎng)頁流覽數(shù)據(jù)庫;4;用戶選擇某個(gè)服務(wù)內(nèi)容(大文件)要求下載;5;總站服務(wù)程序根據(jù)用戶實(shí)時(shí)資料從數(shù)據(jù)庫找出對其所屬局域網(wǎng)中對應(yīng)該服務(wù)內(nèi)容的服務(wù)器資料;6;總站服務(wù)程序向用戶機(jī)器上的下載用戶程序返回服務(wù)器資料;7;總站服務(wù)程序啟動(dòng)用戶機(jī)器上的下載用戶程序的一個(gè)下載任務(wù),向用戶報(bào)告任務(wù)初始化完成;其中5部分可能含以下額外步驟;1;若用戶所在局域網(wǎng)不存在該服務(wù)內(nèi)容;2;總站服務(wù)程序從數(shù)據(jù)庫中檢查用戶所在局域網(wǎng)的服務(wù)器多余空間;3;若沒有服務(wù)器有多余空間,則優(yōu)化地(如最長時(shí)間無下載或累計(jì)下載人次最少)刪除可刪內(nèi)容;4;若服務(wù)器A有空間,則找出其它局域網(wǎng)中有該服務(wù)內(nèi)容的服務(wù)器B;5;總站服務(wù)程序啟動(dòng)從服務(wù)器B向服務(wù)器A調(diào)入該服務(wù)內(nèi)容的一個(gè)調(diào)配程序;6;當(dāng)調(diào)配程序成功初始化,總站服務(wù)程序可繼續(xù),否則返回錯(cuò)誤;
在用戶終端機(jī)上的軟件流程是;1;用戶啟動(dòng)下載程序或者總站服務(wù)程序激活該程序;2;總站服務(wù)程序初始化下載任務(wù)后;3;只要用戶不干預(yù)(終止),下載任務(wù)一直運(yùn)行于背景下;4;下載任務(wù)定時(shí)向?qū)?yīng)服務(wù)器的發(fā)出待下載數(shù)據(jù)信息;5;下載任務(wù)一直傾聽UDP廣播;6;若UDP數(shù)據(jù)包是所要的數(shù)據(jù),展開該數(shù)據(jù)包;7;下載任務(wù)隨時(shí)更新已下數(shù)據(jù)樹記錄;8;若服務(wù)內(nèi)容完全下載,下載任務(wù)結(jié)束;9;若所有下載任務(wù)結(jié)束,若用戶仍在訪問總站網(wǎng)頁,則繼續(xù)待命,不然退出;對應(yīng)局域網(wǎng)服務(wù)器上軟件流程是1;服務(wù)器啟動(dòng)同時(shí),服務(wù)器配分程序隨之運(yùn)行;2;服務(wù)器配分程序初始化,和總站數(shù)據(jù)庫建立實(shí)時(shí)更新;3;總站服務(wù)程序應(yīng)用戶要求更新該局域網(wǎng)中某服務(wù)內(nèi)容的需求;服務(wù)器配分程序隨之對該更新做反應(yīng);4;若該服務(wù)內(nèi)容已又對應(yīng)派分程序,服務(wù)器配分程序只需更新自己的記錄,反之,服務(wù)器配分程序啟動(dòng)一個(gè)新的派分程序來分發(fā)該內(nèi)容;5;服務(wù)器配分程序保持對所有運(yùn)行中的派分程序監(jiān)視,和總站數(shù)據(jù)庫保持實(shí)時(shí)更新;6;派分程序保持監(jiān)聽請求入口,隨時(shí)更新下載數(shù)據(jù)樹(略去調(diào)配程序特例的復(fù)雜性);7;派分程序優(yōu)化分發(fā)服務(wù)內(nèi)容的數(shù)據(jù)包,進(jìn)行廣播發(fā)送;8;若派分程序滿足所有用戶對該服務(wù)內(nèi)容的下載請求,派分程序退出;用戶下載塊的工作流程是1.用戶下載程序調(diào)入用戶下載塊,并傳入任務(wù)參數(shù)派分程序所在IP/PORT/ID/SIZE;2.檢查硬盤,若對應(yīng)該ID文件已部分存在(比如上一次用戶中途終止或其它意外)就以此產(chǎn)生用戶下載塊的文件數(shù)據(jù),不然產(chǎn)生一個(gè)全新文件數(shù)據(jù)(無內(nèi)容);3.以2中文件數(shù)據(jù)(無內(nèi)容或有部分內(nèi)容)初始數(shù)據(jù)樹;4.啟動(dòng)輔助線程,在線程初始化時(shí)和派分程序建立下載反饋通道(P&P);5.輔助線程將定時(shí)檢查數(shù)據(jù)樹,以INDEX元形式表示下載狀態(tài);6.輔助線程將定時(shí)向派分程序反饋壓縮后的下載狀態(tài);7.輔助線程在重返5之前會(huì)檢查主線程是否要求退出,是則輔助線程退出,不然重返5;
8.主線程繼續(xù)4以后會(huì)初始UDP傾聽派分程序的IP/PORT;9.主線程保持傾聽UDP(超時(shí)無信號會(huì)退出);10.若收到數(shù)據(jù)包,主線程先檢查錯(cuò)誤,無錯(cuò)包進(jìn)行RAID還原;11.主線程對從順序而言遺漏包嘗試RAID合成,該合成可能需要從已下文件數(shù)據(jù)中讀某些相關(guān)數(shù)據(jù)段;12.主線程對新得到的數(shù)據(jù)包更新數(shù)據(jù)樹,然后將新包數(shù)據(jù)寫入用戶下載塊的文件數(shù)據(jù);13.主線程判斷是否可以退出,退出條件是所有數(shù)據(jù)都已下,或用戶要求終止;14.若不退出,主線程返回9;15.若退出,主線程先存盤,然后要等到輔助線程已經(jīng)ACK推出才能退出;派分程序的工作流程是1.派分程序由配分程序啟動(dòng);2.派分程序根據(jù)初始參數(shù)讀入文件;3.派分程序根據(jù)讀入文件初始數(shù)據(jù)樹;4.派分程序啟動(dòng)用戶反饋線程;5.派分程序啟動(dòng)UDP廣播線程;6.用戶反饋線程初試化時(shí)要建立P&P接口來接受用戶反饋;7.用戶反饋線程保持傾聽反饋接口(超時(shí)無信號會(huì)退出);8.用戶反饋線程得到用戶反饋數(shù)據(jù)包,要先解壓;9.用戶反饋線程將用戶下載狀態(tài)(INDEX元形式)更新到數(shù)據(jù)樹;10.用戶反饋線程判斷是否可以退出,該變量由主線程設(shè)置;11.若不退出,用戶反饋線程返回6;12.UDP線程初試化時(shí)要建立UDP接口來廣播;13.UDP線程判斷是否可以退出,該變量由主線程設(shè)置;14.若不退出,UDP線程檢查待發(fā)送INDEX流,無則IDLE一些時(shí)間,返回12;15.UDP線程從INDEX流以RAID數(shù)取出一組INDEX,INDEX數(shù)不足情形就是所有INDEX;16.UDP線程根據(jù)14中INDEX從文件數(shù)據(jù)讀入對應(yīng)數(shù)據(jù)段;17.UDP線程對15中那組數(shù)據(jù)段進(jìn)行RAID,段數(shù)不足所選定的RAID數(shù)時(shí)用空數(shù)據(jù)段頂替;18.UDP線程按順序?qū)AID后的數(shù)據(jù)包用UDP發(fā)送,特例時(shí)的空段RAID后不空者(取決具體RAID算法)也要發(fā)送,用戶段RAID還原時(shí)會(huì)扔掉空數(shù)據(jù)段的;19.UDP線程返回12;
20.主線程從4繼續(xù),要等到用戶反饋線程和UDP線程初試化完成后,取得反饋接口和UDP接口設(shè)置,初始化優(yōu)化控制塊,和母程序(配分程序)建立聯(lián)系;21.主線程實(shí)時(shí)從配分程序處得知UDP速度參數(shù),新加入用戶ID;22.主線程檢查數(shù)據(jù)樹,更新該文件下載情況,向配分程序返回下載狀態(tài);23.主線程從21中數(shù)據(jù)樹現(xiàn)況,優(yōu)選法下一步待發(fā)INDEX,并放入14中的INDEX流;24.主線程判斷是否可以退出,退出條件是數(shù)據(jù)樹表示無用戶在等待數(shù)據(jù);25.主線程開始退出,要等到配分程序ACK自己最后下載狀態(tài),用戶反饋線程和UDP線程ACK(應(yīng)答)退出后,才能退出。
所述的物理網(wǎng),由廣域網(wǎng)接口連接路由器,路由器連接若干服務(wù)器,每個(gè)服務(wù)器連接有超大容量的存儲(chǔ)器,路由器連接電纜局域網(wǎng)路由器,電纜局域網(wǎng)路由器連接網(wǎng)絡(luò)管理服務(wù)器,電纜局域網(wǎng)路由器通過電纜連接若干用戶終端。
所述的物理網(wǎng),由廣域網(wǎng)接口連接路由器,路由器連接若干服務(wù)器,每個(gè)服務(wù)器連接有超大容量的存儲(chǔ)器,路由器連接局域網(wǎng)路由器和廣播路由器,局域網(wǎng)路由器連接網(wǎng)絡(luò)管理服務(wù)器,局域網(wǎng)路由器和廣播路由器分別連接多個(gè)ADSL路由器,每個(gè)ADSL路由器連接若干用戶終端。
所述的物理網(wǎng),由廣域網(wǎng)接口連接路由器,路由器連接若干服務(wù)器,每個(gè)服務(wù)器連接有超大容量的存儲(chǔ)器,路由器連接局域網(wǎng)路由器,局域網(wǎng)路由器連接網(wǎng)絡(luò)管理服務(wù)器和衛(wèi)星天線發(fā)射臺(tái),局域網(wǎng)路由器和連接多個(gè)ADSL路由器,每個(gè)ADSL路由器連接若干用戶終端;所述的ADSL路由器,由高帶寬通訊線和高帶寬UDP線連接路由器,路由器的CPU及RAM連接廣播回路和信號分配回路,路由器的CPU及RAM、廣播回路和信號分配回路同時(shí)連接高速分路,高速分路再連接低帶寬電話線,低帶寬電話線連接用戶終端。所述的ADSL路由器的CPU及RAM通過數(shù)據(jù)線和控制總線連接信號分配回路。
本發(fā)明的特點(diǎn)是對于本發(fā)明適用的常見大文件(特定條件下可推廣之小文件),和現(xiàn)況相比,本發(fā)明的改進(jìn)是a.使用大容量存儲(chǔ)器將常見文件保存在服務(wù)器上,使寶貴的廣域網(wǎng)接口帶寬得到更有效利用;b.使用廣播方式以最優(yōu)化方式向用戶提供大文件下載,越大,越常下載的文件在用戶越多的局域網(wǎng)得到越高的并行度,即相對說來效率提高越多;
c.終端機(jī)/服務(wù)器上自動(dòng)下載管理程序充分利用用戶對大文件下載實(shí)時(shí)性不介意條件,在方便用戶的同時(shí),盡可能提高網(wǎng)絡(luò)通訊的并行度,即更有效利用網(wǎng)絡(luò)的通信能力;d.由于將大文件盡可能并行下載,綜合而言,使用本發(fā)明的局域網(wǎng)能有更多的帶寬用于非常見數(shù)據(jù)通信;e.將若干使用本發(fā)明的局域網(wǎng)并網(wǎng),由一個(gè)統(tǒng)一的總站服務(wù)器管理,能進(jìn)一步擴(kuò)展可存儲(chǔ)文件種類,使本發(fā)明能應(yīng)用于不那么常見的文件,近一步提高效率;
圖1表示了基于本發(fā)明的網(wǎng)絡(luò)總體概況。
圖2是電纜局域網(wǎng)的情況,圖3是ADSL局域網(wǎng)的情況,圖4是衛(wèi)星微波下行/ADSL或播號上行混合局域網(wǎng)的情況。
圖5是對現(xiàn)有ADSL路由器的最簡潔改進(jìn)。
圖6是對現(xiàn)有ADSL路由器的更復(fù)雜改進(jìn)。
圖7從數(shù)據(jù)流向的角度表示了改進(jìn)2實(shí)際上是兩重信號分配,且新一重是特殊的多頻道N通廣播。
圖8是總站服務(wù)器上的服務(wù)程序(網(wǎng)頁)連同數(shù)據(jù)庫程序一直運(yùn)行,每個(gè)局域網(wǎng)中有一個(gè)配分程序也一直運(yùn)行,并和數(shù)據(jù)庫程序保持實(shí)時(shí)更新。
圖9所示,N用戶通過和總站服務(wù)程序交流取得下載服務(wù)信息,并啟動(dòng)下載。
圖10是用戶下載塊,服務(wù)派送塊和優(yōu)化控制塊的工作原理程序。
具體實(shí)施例圖2-4有一個(gè)共同點(diǎn),即服務(wù)器群及大量可接受廣播信號的終端機(jī)群。位于廣域網(wǎng)中的總站服務(wù)器運(yùn)行一個(gè)服務(wù)程序(網(wǎng)頁)和數(shù)據(jù)庫程序,(數(shù)據(jù)庫程序可以運(yùn)行在另一臺(tái)服務(wù)器上)。每個(gè)局域網(wǎng)中有一個(gè)配分程序運(yùn)行于某一個(gè)服務(wù)器上。配分程序了解該局域網(wǎng)所有服務(wù)內(nèi)容(大文件)的存儲(chǔ)情況,并和總站數(shù)據(jù)庫保持實(shí)時(shí)更新。每個(gè)服務(wù)內(nèi)容(大文件廣播下栽)對應(yīng)一個(gè)派分程序。配分程序負(fù)載啟動(dòng)派分程序,并實(shí)時(shí)監(jiān)控它們。終端用戶通過訪問總站網(wǎng)頁(間接訪問總站數(shù)據(jù)庫)來取得可下內(nèi)容情況。終端用戶由總站網(wǎng)頁給出下載請求。此時(shí),若用戶終端機(jī)上沒有下載用戶軟件,總站網(wǎng)頁會(huì)要求用戶下載該軟件(一次性),若該用戶尚未運(yùn)行該用戶軟件,總站網(wǎng)頁會(huì)啟動(dòng)它,總站網(wǎng)頁返回對應(yīng)該服務(wù)內(nèi)容的派分程序情況,用戶軟件初始化一個(gè)下載任務(wù)。
本發(fā)明核心是下載任務(wù)模塊(同時(shí)運(yùn)行于N個(gè)用戶終端機(jī)上)和配分程序間高效并自動(dòng)糾錯(cuò)的通信。為實(shí)現(xiàn)這一目的,局域網(wǎng)必須附加若干臺(tái)服務(wù)器,其中一臺(tái)須有高速廣域網(wǎng)接口。對于任何局域網(wǎng)內(nèi)的面向終端用戶P2P優(yōu)化的橋式連接(如ADSL路由器)必須加以一定改進(jìn)防止路由器被廣播通信堵塞從而抵消本發(fā)明的增益。
下面就列舉的三種最常見物理局域網(wǎng),逐一介紹硬件細(xì)節(jié)。
電纜局域網(wǎng)如圖2所示,每個(gè)電纜拖帶若干(幾十至幾千)用戶,若干電纜和一個(gè)網(wǎng)絡(luò)管理服務(wù)器經(jīng)一個(gè)路由器連接成局域網(wǎng),若不用本發(fā)明服務(wù),該路由器直接連通廣域網(wǎng)即可。如無意外設(shè)置,電纜局域網(wǎng)用戶始終共享上下行帶寬。
為實(shí)現(xiàn)本發(fā)明服務(wù),若干服務(wù)器要用高速連接和上述路由器如圖構(gòu)成回路,使大量廣播信號能直接下行。
每個(gè)服務(wù)器擁有越大越好的存儲(chǔ)器來保持常見下載文件。網(wǎng)絡(luò)設(shè)置成使其中一臺(tái)服務(wù)器有最大廣域網(wǎng)的帶寬,配分程序即運(yùn)行在該服務(wù)器上。這一點(diǎn)額外硬件對任何應(yīng)用本發(fā)明的各類型局域網(wǎng)(如下面的ADSL網(wǎng)和混合網(wǎng))都是一樣的。
ADSL局域網(wǎng)如圖3所示,用戶的ADSL電話線接入中心的ADSL路由器,一般每個(gè)路由器可拖10-80終端用戶。一般一個(gè)典型ADSL局域網(wǎng)要有兩層路由器才有一定用戶規(guī)模。和電纜網(wǎng)一樣,ADSL局域網(wǎng)也需要一臺(tái)網(wǎng)絡(luò)服務(wù)器做管理。若不用本發(fā)明服務(wù),最頂段路由器直接連通廣域網(wǎng)即可。
和電纜網(wǎng)不同,ADSL用戶始終是獨(dú)享自己ADSL電話線的帶寬的。因此現(xiàn)行的普通ADSL路由器的數(shù)據(jù)傳送是單通的(應(yīng)ADSL支持協(xié)議通常都是P2P形式),結(jié)果廣播數(shù)據(jù)在ADSL路由器內(nèi)是一次一次的發(fā)送給每個(gè)ADSL用戶的。這樣一來,由于廣播通信造成的數(shù)據(jù)風(fēng)暴會(huì)嚴(yán)重堵塞ADSL路由器。
圖5表示了對現(xiàn)有ADSL路由器的最簡潔改進(jìn)。即使用能動(dòng)態(tài)工作于單通與全通兩種模式下的集成電路搭建ADSL路由器中的信號分配電路。然后設(shè)置ADSL路由器中CPU指令,讓它在遇上廣播數(shù)據(jù)包時(shí),將信號分配電路設(shè)成全通,其它時(shí)候單通。圖5表示一個(gè)ADSL路由器為若干個(gè)用戶服務(wù)的原理。每個(gè)用戶段的ADSL解調(diào)器和局中心的一個(gè)ADSL解調(diào)器通過電話線動(dòng)態(tài)連接,每個(gè)局中心ADSL解調(diào)器是路由器的一個(gè)外圍IO設(shè)備(低端)。路由器的高端通向局域網(wǎng)絡(luò)內(nèi)高一級的路由器。在路由器內(nèi)部,高端和低端的每一個(gè)設(shè)備把數(shù)據(jù)包按先進(jìn)先出(高級一點(diǎn)路由器每個(gè)IO設(shè)備都有自己緩存)的原則讀寫于內(nèi)存。通常ADSL的通信協(xié)議都是P2P,故CPU控制下通信以單通為主,即任何時(shí)刻只有一個(gè)低端設(shè)備和高端交換數(shù)據(jù)。假如總線為100M(bps),ADSL實(shí)用帶寬為1。5M(bps),存在60個(gè)低端設(shè)備本發(fā)明廣播就會(huì)堵塞路由器。采用本發(fā)明的路由器需增加共享內(nèi)存(正比于低端設(shè)備數(shù)),使廣播數(shù)據(jù)包能一次復(fù)制到所有低端設(shè)備的對應(yīng)內(nèi)存,即廣播下載是全通。這一點(diǎn)是CPU控制總線分配電路來實(shí)現(xiàn)的。
圖6表示了對現(xiàn)有ADSL路由器的更復(fù)雜改進(jìn)。從硬件構(gòu)件來看,和圖5沒有大的區(qū)別,只是UDP包將由專用路由器傳入(見圖4)。但數(shù)據(jù)流程上多了一重特殊的來自該特定端口的數(shù)據(jù)包N通廣播(沒有網(wǎng)絡(luò)協(xié)議可對應(yīng),完全由路由器完成)。路由器中CPU要運(yùn)行較為復(fù)雜的指令,在記錄ADSL用戶和某個(gè)IP(網(wǎng)際協(xié)議地址)/PORT(端口)(唯一確認(rèn)某個(gè)派分程序)對話同時(shí),在處理來自該IP/PORT的UDP數(shù)據(jù)包時(shí),把所有N個(gè)有記錄的ADSL用戶在共享內(nèi)存中變成N通進(jìn)行同時(shí)讀取。使用這種改進(jìn)ADSL路由器的用戶下載程序在退出下載任務(wù)時(shí)最后和派分程序反饋時(shí)要有一個(gè)特殊數(shù)據(jù)包,ADSL路由器CPU見到此包,會(huì)將該用戶和此IP/PORT對話紀(jì)錄抹去。
圖7從數(shù)據(jù)流向的角度表示了改進(jìn)2實(shí)際上是兩重信號分配,且新一重是特殊的多頻道N通廣播。
這里需要注意網(wǎng)絡(luò)通信中廣播指P個(gè)連接下,來自于其中一個(gè)Pi的信號被發(fā)送到其余P-1個(gè)連接的情況。由于改進(jìn)2中特殊N通廣播需要一個(gè)特殊路由表,故這種情況下,用戶A必須首先向服務(wù)派分程序發(fā)出第一個(gè)成功請求,路由器該特殊路由表中才產(chǎn)生對應(yīng)A的路徑,然后A才能夠得到下載數(shù)據(jù)包,這一點(diǎn)是比較特殊的。
當(dāng)然若局域網(wǎng)中的ADSL路由器性能很好,不存在廣播風(fēng)暴問題(同時(shí)同效率支持橋式和支點(diǎn)式派送,或內(nèi)部芯片性能足以處理廣播是重復(fù)發(fā)送),則上述改進(jìn)都是可省略的。
ADSL或播號混合衛(wèi)星微波局域網(wǎng)如圖4所示,用戶上行信號和ADSL/播號局域網(wǎng)一樣,下行信號是來自于非常高速的微波衛(wèi)星信號。上行用戶始終獨(dú)享帶寬,下行始終共享帶寬。這樣和電纜網(wǎng)一樣,不需要對硬件作大改進(jìn)。這種局域網(wǎng)尤其適用本發(fā)明,因其直接面對的終端用戶數(shù)目巨大,而且其上行下行完全分離,若用戶上網(wǎng)基本上是下載(絕大多數(shù)人除發(fā)大電子郵件外基本如此),則播號上行+微波下行能以最低代價(jià)充分享受本發(fā)明帶來的高速共享下載。
最后,由于應(yīng)用本發(fā)明后,共享下行帶寬會(huì)又有相當(dāng)高比例是廣播通訊,而且相當(dāng)高比例終端用戶在接受這種通信,所以有可能對共享下行帶寬進(jìn)行廣播/非廣播分頻,如用戶數(shù)目龐大,為增加廣播內(nèi)容種類,可進(jìn)一步將廣播帶寬分成若干頻道。終端用戶的接入解調(diào)器改進(jìn)成能動(dòng)態(tài)傾聽不同頻道(廣播+非廣播)。當(dāng)然在這種超規(guī)模用戶/服務(wù)內(nèi)容種類時(shí),用戶下載程序/配分程序都要有額外功能,會(huì)在下一個(gè)發(fā)明中說明。此時(shí)電纜解調(diào)器和衛(wèi)星微波解調(diào)器都要有相應(yīng)改進(jìn)來支持動(dòng)態(tài)頻道,而ADSL路由器傾向于改進(jìn)2。
以下是主要軟件塊的工作流程。
如圖8所示,總站服務(wù)器上的服務(wù)程序(網(wǎng)頁)連同數(shù)據(jù)庫程序一直運(yùn)行,每個(gè)局域網(wǎng)中有一個(gè)配分程序也一直運(yùn)行,并和數(shù)據(jù)庫程序保持實(shí)時(shí)更新。服務(wù)內(nèi)容(大文件)位于每臺(tái)服務(wù)器的大容量儲(chǔ)存器上。每個(gè)正在提供下載的服務(wù)內(nèi)容對應(yīng)一個(gè)運(yùn)行于該服務(wù)器上的派分程序。正在使用本發(fā)明下載的用戶機(jī)上有一個(gè)用戶下載程序,該用戶下載程序?qū)τ诿總€(gè)下載會(huì)調(diào)入一個(gè)下載任務(wù)塊。
本發(fā)明的一個(gè)服務(wù)流程由用戶引起。
1。用戶訪問總站網(wǎng)頁;2。網(wǎng)頁服務(wù)程序取得用戶實(shí)時(shí)資料;3。用戶通過總站網(wǎng)頁流覽數(shù)據(jù)庫;4。用戶選擇某個(gè)服務(wù)內(nèi)容(大文件)要求下載;5??傉痉?wù)程序根據(jù)用戶實(shí)時(shí)資料從數(shù)據(jù)庫找出對其所屬局域網(wǎng)中對應(yīng)該服務(wù)內(nèi)容的服務(wù)器資料;6??傉痉?wù)程序向用戶機(jī)器上的下載用戶程序返回服務(wù)器資料;7??傉痉?wù)程序啟動(dòng)用戶機(jī)器上的下載用戶程序的一個(gè)下載任務(wù),向用戶報(bào)告任務(wù)初始化完成;其中5部分可能含以下額外步驟。
1。若用戶所在局域網(wǎng)不存在該服務(wù)內(nèi)容;2。總站服務(wù)程序從數(shù)據(jù)庫中檢查用戶所在局域網(wǎng)的服務(wù)器多余空間;3。若沒有服務(wù)器有多余空間,則優(yōu)化地(如最長時(shí)間無下載或累計(jì)下載人次最少)刪除可刪內(nèi)容;4。若服務(wù)器A有空間,則找出其它局域網(wǎng)中有該服務(wù)內(nèi)容的服務(wù)器B;5??傉痉?wù)程序啟動(dòng)從服務(wù)器B向服務(wù)器A調(diào)入該服務(wù)內(nèi)容的一個(gè)調(diào)配程序;6。當(dāng)調(diào)配程序成功初始化,總站服務(wù)程序可繼續(xù),否則返回錯(cuò)誤;在用戶終端機(jī)上的軟件流程是。
1。用戶啟動(dòng)下載程序或者總站服務(wù)程序激活該程序;2??傉痉?wù)程序初始化下載任務(wù)后;3。只要用戶不干預(yù)(終止),下載任務(wù)一直運(yùn)行于背景下;4。下載任務(wù)定時(shí)向?qū)?yīng)服務(wù)器的發(fā)出待下載數(shù)據(jù)信息;5。下載任務(wù)一直傾聽UDP廣播;6。若UDP數(shù)據(jù)包是所要的數(shù)據(jù),展開該數(shù)據(jù)包;7。下載任務(wù)隨時(shí)更新已下數(shù)據(jù)樹記錄;8。若服務(wù)內(nèi)容完全下載,下載任務(wù)結(jié)束;9。若所有下載任務(wù)結(jié)束,若用戶仍在訪問總站網(wǎng)頁,則繼續(xù)待命,不然退出;對應(yīng)局域網(wǎng)服務(wù)器上軟件流程是1。服務(wù)器啟動(dòng)同時(shí),服務(wù)器配分程序隨之運(yùn)行;2。服務(wù)器配分程序初始化,和總站數(shù)據(jù)庫建立實(shí)時(shí)更新;
3??傉痉?wù)程序應(yīng)用戶要求更新該局域網(wǎng)中某服務(wù)內(nèi)容的需求;服務(wù)器配分程序隨之對該更新做反應(yīng);4。若該服務(wù)內(nèi)容已又對應(yīng)派分程序,服務(wù)器配分程序只需更新自己的記錄,反之,服務(wù)器配分程序啟動(dòng)一個(gè)新的派分程序來分發(fā)該內(nèi)容;5。服務(wù)器配分程序保持對所有運(yùn)行中的派分程序監(jiān)視,和總站數(shù)據(jù)庫保持實(shí)時(shí)更新;6。派分程序保持監(jiān)聽請求入口,隨時(shí)更新下載數(shù)據(jù)樹(略去調(diào)配程序特例的復(fù)雜性);7。派分程序優(yōu)化分發(fā)服務(wù)內(nèi)容的數(shù)據(jù)包,進(jìn)行廣播發(fā)送;8。若派分程序滿足所有用戶對該服務(wù)內(nèi)容的下載請求,派分程序退出;本發(fā)明的技術(shù)核心是局域網(wǎng)內(nèi)的并行發(fā)送。其具體原理是一種特殊的數(shù)據(jù)廣播。和普通廣播不同,對于某一個(gè)特定用戶而言,廣播是無序的。任務(wù)的結(jié)果是是否收到所有數(shù)據(jù)。這一特性使得派分程序不可能是普通意義上的發(fā)送后不管的廣播。并行的特性又要求派分程序以集合的概念來對待用戶的請求,而不是一個(gè)又一個(gè)地去滿足每一個(gè)用戶的請求。
以下進(jìn)一步詳細(xì)敘述實(shí)現(xiàn)高并行度下,自動(dòng)糾錯(cuò)廣播下載的技術(shù)細(xì)節(jié)。
如圖9所示,N用戶通過和總站服務(wù)程序交流取得下載服務(wù)信息,并啟動(dòng)下載。每個(gè)用戶可同時(shí)下P個(gè)下載。每個(gè)局域網(wǎng)有一個(gè)配分程序來管理K個(gè)派分程序,配分程序負(fù)責(zé)實(shí)時(shí)更新總站數(shù)據(jù)庫。每個(gè)派分程序?qū)?yīng)一個(gè)服務(wù)內(nèi)容(下載文件),每個(gè)派分程序同時(shí)服務(wù)于L個(gè)需要該文件的用戶。局域網(wǎng)A的缺漏文件(局域網(wǎng)B有該文件)由一個(gè)調(diào)配程序從B調(diào)入A。
A線下行通信是高密度RAID(冗余陣列分配)數(shù)據(jù)廣播,黑色上行通信是L*稀疏密栽INDEX(序號)數(shù)據(jù)更新。后者就某個(gè)用戶而言是很稀疏,但若L很大,凈密度也可能很大。
B線通信是實(shí)時(shí)更新,但數(shù)據(jù)量極其小。
C線通信是幾臺(tái)服務(wù)器間,或同一臺(tái)機(jī)器,通信量又極其小。
D線,E線是一次性/偶爾通信。
對照圖9,只有A線通信不同一般,是本發(fā)明的關(guān)鍵。
下面詳細(xì)介紹本發(fā)明對于一個(gè)特定服務(wù)的最關(guān)鍵步驟,即一個(gè)派分程序?qū)⑻囟ň蘖繑?shù)據(jù)向Q個(gè)等待的終端用戶派送。派分程序抽象地將該巨量數(shù)據(jù)分成X個(gè)數(shù)據(jù)包,每次以UDP協(xié)議向局域網(wǎng)廣播一個(gè)包。對于某一個(gè)具體終端用戶而言,特定服務(wù)的完成是該用戶收到所有X個(gè)數(shù)據(jù)包。對該派分程序而言,特定服務(wù)的完成是沒有任何用戶在等待屬于該巨量數(shù)據(jù)的任意一個(gè)數(shù)據(jù)包。
為簡單起見,假定某特定服務(wù)對應(yīng)的巨量數(shù)據(jù)在所討論的時(shí)間段內(nèi)完全存在于局域網(wǎng)的數(shù)據(jù)緩沖中,有N個(gè)用戶在任意不同時(shí)刻要求該特定服務(wù),其間沒有取消,此巨量數(shù)據(jù)依2K的數(shù)據(jù)包大小進(jìn)行打包,若無RAID分配,則共有(數(shù)據(jù)總長度+2K-1)/2K個(gè)包,若有RAID分配,總包數(shù)應(yīng)等比例上升。假定局域網(wǎng)速度令每包發(fā)送消耗時(shí)間T,討論時(shí)間段即N個(gè)用戶都得到滿足>=總包數(shù)*T,且僅在最理想化條件下取等號。
實(shí)現(xiàn)本發(fā)明的核心派分程序共分三大塊,它們是用戶下載塊,服務(wù)派送塊,優(yōu)化控制塊。
若用戶同時(shí)下載幾個(gè)文件(不可能相同),每個(gè)文件下載塊對應(yīng)一個(gè)任務(wù),即用戶下載塊以不同的參數(shù)互不干擾運(yùn)行。服務(wù)派送塊,優(yōu)化控制塊構(gòu)成派分程序(服務(wù)器)主體,一個(gè)服務(wù)派送塊通信于N個(gè)用戶終端機(jī)上的對應(yīng)用戶下載塊。優(yōu)化控制塊根據(jù)N個(gè)用戶的更新情況和下載情況,優(yōu)化控制服務(wù)派送塊的派送。
程序設(shè)計(jì)的原則是盡可能高的并行度,低遺漏率/重復(fù)派送率,同等條件下尊重時(shí)間優(yōu)先。此外盡量允許在整個(gè)該局域網(wǎng)更靈活的下載調(diào)節(jié)。
圖10詳細(xì)表示用戶下載塊,服務(wù)派送塊和優(yōu)化控制塊的工作原理;用戶下載塊的工作流程是16.用戶下載程序調(diào)入用戶下載塊,并傳入任務(wù)參數(shù)派分程序所在IP/PORT/ID/SIZE;17.檢查硬盤,若對應(yīng)該ID文件已部分存在(比如上一次用戶中途終止或其它意外)就以此產(chǎn)生用戶下載塊的文件數(shù)據(jù),不然產(chǎn)生一個(gè)全新文件數(shù)據(jù)(無內(nèi)容);18.以2中文件數(shù)據(jù)(無內(nèi)容或有部分內(nèi)容)初始數(shù)據(jù)樹;19.啟動(dòng)輔助線程,在線程初始化時(shí)和派分程序建立下載反饋通道(P&P);20.輔助線程將定時(shí)檢查數(shù)據(jù)樹,以INDEX元形式表示下載狀態(tài);21.輔助線程將定時(shí)向派分程序反饋壓縮后的下載狀態(tài);22.輔助線程在重返5之前會(huì)檢查主線程是否要求退出,是則輔助線程退出,不然重返5;23.主線程繼續(xù)4以后會(huì)初始UDP傾聽派分程序的IP/PORT;24.主線程保持傾聽UDP(超時(shí)無信號會(huì)退出);25.若收到數(shù)據(jù)包,主線程先檢查錯(cuò)誤,無錯(cuò)包進(jìn)行RAID還原;26.主線程對從順序而言遺漏包嘗試RAID合成,該合成可能需要從已下文件數(shù)據(jù)中讀某些相關(guān)數(shù)據(jù)段;27.主線程對新得到的數(shù)據(jù)包更新數(shù)據(jù)樹,然后將新包數(shù)據(jù)寫入用戶下載塊的文件數(shù)據(jù);28.主線程判斷是否可以退出,退出條件是所有數(shù)據(jù)都已下,或用戶要求終止;
29.若不退出,主線程返回9;30.若退出,主線程先存盤,然后要等到輔助線程已經(jīng)ACK推出才能退出;派分程序的工作流程是26.派分程序由配分程序啟動(dòng);27.派分程序根據(jù)初始參數(shù)讀入文件;28.派分程序根據(jù)讀入文件初始數(shù)據(jù)樹;29.派分程序啟動(dòng)用戶反饋線程;30.派分程序啟動(dòng)UDP廣播線程;31.用戶反饋線程初試化時(shí)要建立P&P接口來接受用戶反饋;32.用戶反饋線程保持傾聽反饋接口(超時(shí)無信號會(huì)退出);33.用戶反饋線程得到用戶反饋數(shù)據(jù)包,要先解壓;34.用戶反饋線程將用戶下載狀態(tài)(INDEX元形式)更新到數(shù)據(jù)樹;35.用戶反饋線程判斷是否可以退出,該變量由主線程設(shè)置;36.若不退出,用戶反饋線程返回6;37.UDP線程初試化時(shí)要建立UDP接口來廣播;38.UDP線程判斷是否可以退出,該變量由主線程設(shè)置;39.若不退出,UDP線程檢查待發(fā)送INDEX流,無則IDLE一些時(shí)間,返回12;40.UDP線程從INDEX流以RAID數(shù)取出一組INDEX,INDEX數(shù)不足情形就是所有INDEX;41.UDP線程根據(jù)14中INDEX從文件數(shù)據(jù)讀入對應(yīng)數(shù)據(jù)段;42.UDP線程對15中那組數(shù)據(jù)段進(jìn)行RAID,段數(shù)不足所選定的RAID數(shù)時(shí)用空數(shù)據(jù)段頂替;43.UDP線程按順序?qū)AID后的數(shù)據(jù)包用UDP發(fā)送,特例時(shí)的空段RAID后不空者(取決具體RAID算法)也要發(fā)送,用戶段RAID還原時(shí)會(huì)扔掉空數(shù)據(jù)段的;44.UDP線程返回12;45.主線程從4繼續(xù),要等到用戶反饋線程和UDP線程初試化完成后,取得反饋接口和UDP接口設(shè)置,初始化優(yōu)化控制塊,和母程序(配分程序)建立聯(lián)系;46.主線程實(shí)時(shí)從配分程序處得知UDP速度參數(shù),新加入用戶ID;47.主線程檢查數(shù)據(jù)樹,更新該文件下載情況,向配分程序返回下載狀態(tài);48.主線程從21中數(shù)據(jù)樹現(xiàn)況,優(yōu)選法下一步待發(fā)INDEX,并放入14中的INDEX流;49.主線程判斷是否可以退出,退出條件是數(shù)據(jù)樹表示無用戶在等待數(shù)據(jù);50.主線程開始退出,要等到配分程序ACK自己最后下載狀態(tài),用戶反饋線程和UDP線程ACK(應(yīng)答)退出后,才能退出;
本發(fā)明核心程序在微軟0S(操作系統(tǒng))局域網(wǎng)中試驗(yàn),實(shí)際增益與預(yù)計(jì)相符。假定大文件已在局域網(wǎng)中中某臺(tái)服務(wù)器上,N個(gè)用戶從有相似網(wǎng)絡(luò)接口的服務(wù)器分別在任意T時(shí)間段下載該文件,不使用本發(fā)明,合計(jì)下載時(shí)間是K。試驗(yàn)表明任意時(shí)間若有N>10用戶下載,則服務(wù)器下行帶寬耗盡,有若干用戶會(huì)持續(xù)得到連接錯(cuò)誤,所以K是在任何時(shí)間N<=10情況下取得。同樣情況下若使用本發(fā)明,合計(jì)下載時(shí)間是T2-T1+P,P是1∶1下載時(shí)間,T1是第一個(gè)開始下載時(shí)間,T2是最后一個(gè)開始下載時(shí)間。結(jié)果是K約等于N*P。這里要注意到使用本發(fā)明時(shí),不會(huì)有N<=10的限制。真正的限制來自于當(dāng)合計(jì)用戶反饋信號量接近文件量時(shí),這需要N很大和下載有一定錯(cuò)誤率,由于條件限制,沒能驗(yàn)證該特性。
本發(fā)明除引入無序但基本連續(xù)(不是完全沒有順序,是不保證大文件下栽一定是從頭到尾)廣播外,另外還有使用RAID和數(shù)據(jù)樹來盡可能減少用戶反饋給服務(wù)器的通信量。現(xiàn)在網(wǎng)絡(luò)質(zhì)量雖很穩(wěn)定,一般還有Q=10^-3以下的隨機(jī)錯(cuò)誤率(如數(shù)據(jù)包在線路上損壞,用戶機(jī)內(nèi)部通信隨機(jī)過忙等等),一級RAID能將錯(cuò)誤率(需要重傳)降至約常數(shù)*Q^2,這樣一來,以數(shù)據(jù)包2K大小為例,一個(gè)幾百兆的大文件只有至多10個(gè)左右錯(cuò)誤包,這樣一來使用戶極少有因隨機(jī)錯(cuò)誤而必須的反饋。用戶若有其它錯(cuò)誤(如斷電,用戶機(jī)其他軟件錯(cuò)誤導(dǎo)致下載任務(wù)終止,用戶因某種原因暫停等等),需要重傳的數(shù)據(jù)包是連續(xù)的,理論上可證明使用數(shù)據(jù)樹表示這些連續(xù)包的INDEX在數(shù)量級上是最優(yōu)化的(壓縮)。
使用數(shù)據(jù)樹的額外好處是針對N用戶可以有方便良好的算法來給出優(yōu)化的下載INDEX序列。
附錄ADSL的幾種協(xié)議局域網(wǎng)(RFC1483-基于ATM(異步傳輸模式)的橋以太網(wǎng)協(xié)議)驅(qū)動(dòng)支持RFC-1483協(xié)議;廣域網(wǎng)(RFC2364-基于ATM的點(diǎn)對點(diǎn)協(xié)議,RFC216-基于以太網(wǎng)的點(diǎn)對點(diǎn)協(xié)議)驅(qū)動(dòng)支持RFC-2364和RFC-216協(xié)議;相關(guān)US專利6,343,0726,366,5836,618,353
本專利中數(shù)據(jù)樹與一般常見樹不同的特征1.數(shù)據(jù)樹以B元樹的形式對一個(gè)大文件進(jìn)行編序,葉單元唯一對應(yīng)一個(gè)序號數(shù)據(jù)包;2.數(shù)據(jù)樹的非葉單元一般包含若干個(gè)子單元,不滿非葉單元只可能是該級別非葉單元的尾單元;3.數(shù)據(jù)樹的葉單元必定是同一級別;4.數(shù)據(jù)樹的非葉單元(滿)最終包含葉單元的總數(shù)是B^K,這里K是級別差;5.數(shù)據(jù)樹的B元值應(yīng)隨RAID,即RAID設(shè)置B個(gè)包變換成傳B+RAID級數(shù)個(gè)包,注解1.P2P(Peer-Peer)指任意兩臺(tái)計(jì)算機(jī)之間的有連接的通訊。
2.FTP,TCP/IP是最普遍的基于連接的通訊協(xié)議。
3.UDP是最普遍的不基于連接的通訊協(xié)議,因?yàn)樵擃愅ㄓ嵅恍枰B接,所以能實(shí)現(xiàn)廣播。
4.歐洲應(yīng)該已有在路由器上用緩存來減少英特網(wǎng)通訊從而優(yōu)化用戶下載的專利。
5.數(shù)據(jù)包是網(wǎng)絡(luò)通訊的最小單位。一般在半K-128K之間。
6.服務(wù)器環(huán)是微軟視窗服務(wù)器的一種特殊配置,一般由若干臺(tái)服務(wù)器組成,對外共用一個(gè)IP地址,好比將N臺(tái)服務(wù)器的通訊帶寬疊加到一臺(tái)機(jī)器上。
7.數(shù)據(jù)緩沖通常指計(jì)算機(jī)的RAM,各種各樣的計(jì)算機(jī)中,RAM被普遍應(yīng)用,以加快CPU和硬盤的通訊速度。在本發(fā)明中,和服務(wù)器(們)直接相連位于局域網(wǎng)內(nèi)的巨量數(shù)據(jù)儲(chǔ)存器就起著和RAM相同的作用。每位用戶好比是CPU中的某個(gè)程序,英特網(wǎng)則好比是硬盤。
8.RAID是數(shù)據(jù)傳輸中常見的一種防錯(cuò)誤方法,尤其常見于存儲(chǔ)裝置。一個(gè)簡單比喻是,A向B傳輸4個(gè)不同的數(shù)值,B必須全部收到才算成功。傳輸過程存在隨機(jī)錯(cuò)誤,使每個(gè)傳輸有一定的錯(cuò)誤/遺漏率Q。RAID即是在4個(gè)原來傳輸?shù)幕A(chǔ)上再加傳4個(gè)不同的數(shù)值的和,在不計(jì)溢出錯(cuò)誤的前提下,A向B的共計(jì)5個(gè)傳輸中,B只要收到任意4個(gè),B就能推算出正確的4個(gè)數(shù)值。由于本發(fā)明是A向N個(gè)B發(fā)送Y個(gè)數(shù)據(jù),假定Q是極小數(shù),無RAID條件下,Y個(gè)發(fā)送的整體成功率是(1-Q)^Y約1-Y*Q,若有一級RAID,Y+1個(gè)發(fā)送的整體成功率是(1-Q)^(Y+1)+(Y+1)*Q*(1-Q)^Y約1-Y(Y+1)*Q^2/2。詳細(xì)RAID原理請參照有關(guān)教科書,此處Y遠(yuǎn)小于本發(fā)明對應(yīng)巨量數(shù)據(jù)的總包數(shù)X,可見合理RAID能使針對N用戶的Y發(fā)送失敗率從Q變成Q^2。
9.最理想化條件指用戶們在同一時(shí)刻提出針對同一個(gè)巨量數(shù)據(jù)的申請,沒有用戶終端會(huì)遺漏接受。很顯然最理想化條件不會(huì)存在,個(gè)別時(shí)間性很強(qiáng)的巨量數(shù)據(jù)會(huì)接近前者,在深更半夜用戶終端會(huì)接近后者,通常情況下兩者都會(huì)嚴(yán)重偏離最理想化條件,呈現(xiàn)隨機(jī)分布。
10.數(shù)據(jù)樹是一種在最常見數(shù)據(jù)結(jié)構(gòu)-樹的基礎(chǔ)上針對本發(fā)明進(jìn)一步延伸的專用結(jié)構(gòu)。試驗(yàn)中采用最普通的兩元樹結(jié)構(gòu)對總長度為S(BYTE)的巨量數(shù)據(jù)作INDEXING(編碼),若取數(shù)據(jù)包中數(shù)據(jù)塊長度為正整數(shù)L,則根編碼取0至(S+L-1)/L-1,從根編碼(樹的葉單元)向上,每一個(gè)母單元的編碼數(shù)目為對應(yīng)子單元的一半。數(shù)據(jù)樹的深度D滿足2^D>=S,且D是所有令前式成立的最小正整數(shù)。事實(shí)上還存在更有針對性的數(shù)據(jù)樹結(jié)構(gòu),由于與本發(fā)明的核心思想關(guān)系不大,故在此省略。
11.母元數(shù)指合法樹結(jié)構(gòu)中一個(gè)單元子集的單元數(shù)目,其成員和某一特定單元P滿足{根單元->A-B->…->P},注意P不算入該子集。
12.是|否就是兩元選擇。
13.占位大小(SIZEOF)對于32操作系統(tǒng),整數(shù)一般是32比特(4BYTE)14.延遲計(jì)算是和計(jì)算技術(shù)中常見硬盤延遲寫入相似的一種優(yōu)化方法。由于對于巨量數(shù)據(jù),數(shù)據(jù)樹子單元的數(shù)目可能很龐大,同時(shí)優(yōu)化算法基本上不涉及葉單元和鄰近底層非葉單元,所以沒有必要對這些數(shù)目很龐大的單元進(jìn)行重復(fù)操作。偶爾需要某葉單元或底層非葉單元的正確數(shù)據(jù)時(shí),只需將記錄在其母單元中的延遲計(jì)算按順序執(zhí)行即可。
15.TX是發(fā)送時(shí)間,對于未曾發(fā)送的預(yù)設(shè)值是計(jì)算方法日期0或服務(wù)器啟動(dòng)時(shí)間,這樣就保證未曾發(fā)送的時(shí)間間隔是最長的。
英文簡略語注釋ACK-應(yīng)答;ADSL-非對稱數(shù)字用戶環(huán)線;ATM-異步傳輸模式;CPU-中央處理器;INDEX-序號;OS-操作系統(tǒng);P2P-點(diǎn)對點(diǎn);RAID-冗余陣列分配;UDP-用戶數(shù)據(jù)報(bào)協(xié)議;
權(quán)利要求
1.一種非實(shí)時(shí)局域網(wǎng)廣播通訊方法,其特征在于包含若干服務(wù)器的物理網(wǎng)及其一套相關(guān)的軟件程序集成;其包含若干服務(wù)器的物理網(wǎng)是由英特網(wǎng)總站服務(wù)器連接的若干個(gè)局域網(wǎng)內(nèi)的路由器,每個(gè)局域網(wǎng)的路由器聯(lián)接若干服務(wù)器,路由器還連接各個(gè)終端用戶;其中的路由器是帶有CPU中央處理器路由器;其軟件程序集成為有軟件塊的工作流程;總站服務(wù)器上的服務(wù)程序-網(wǎng)頁-連同數(shù)據(jù)庫程序一直運(yùn)行,每個(gè)局域網(wǎng)中有一個(gè)配分程序也一直運(yùn)行,并和數(shù)據(jù)庫程序保持實(shí)時(shí)更新;服務(wù)內(nèi)容-大文件-位于每臺(tái)服務(wù)器的大容量儲(chǔ)存器上;每個(gè)正在提供下載的服務(wù)內(nèi)容對應(yīng)一個(gè)運(yùn)行于該服務(wù)器上的派分程序;正在使用本發(fā)明下載的用戶機(jī)上有一個(gè)用戶下載程序,該用戶下載程序?qū)τ诿總€(gè)下載會(huì)調(diào)入一個(gè)下載任務(wù)塊;本發(fā)明的一個(gè)服務(wù)流程由用戶引起;1;用戶訪問總站網(wǎng)頁;2;網(wǎng)頁服務(wù)程序取得用戶實(shí)時(shí)資料;3;用戶通過總站網(wǎng)頁流覽數(shù)據(jù)庫;4;用戶選擇某個(gè)服務(wù)內(nèi)容-大文件-要求下載;5;總站服務(wù)程序根據(jù)用戶實(shí)時(shí)資料從數(shù)據(jù)庫找出對其所屬局域網(wǎng)中對應(yīng)該服務(wù)內(nèi)容的服務(wù)器資料;6;總站服務(wù)程序向用戶機(jī)器上的下載用戶程序返回服務(wù)器資料;7;總站服務(wù)程序啟動(dòng)用戶機(jī)器上的下載用戶程序的一個(gè)下載任務(wù),向用戶報(bào)告任務(wù)初始化完成;其中5部分可能含以下額外步驟;1;若用戶所在局域網(wǎng)不存在該服務(wù)內(nèi)容;2;總站服務(wù)程序從數(shù)據(jù)庫中檢查用戶所在局域網(wǎng)的服務(wù)器多余空間;3;若沒有服務(wù)器有多余空間,則優(yōu)化地(如最長時(shí)間無下載或累計(jì)下載人次最少)刪除可刪內(nèi)容;4;若服務(wù)器A有空間,則找出其它局域網(wǎng)中有該服務(wù)內(nèi)容的服務(wù)器B;5;總站服務(wù)程序啟動(dòng)從服務(wù)器B向服務(wù)器A調(diào)入該服務(wù)內(nèi)容的一個(gè)調(diào)配程序;6;當(dāng)調(diào)配程序成功初始化,總站服務(wù)程序可繼續(xù),否則返回錯(cuò)誤;在用戶終端機(jī)上的軟件流程是;1;用戶啟動(dòng)下載程序或者總站服務(wù)程序激活該程序;2;總站服務(wù)程序初始化下載任務(wù)后;3;只要用戶不干預(yù)-終止,下載任務(wù)一直運(yùn)行于背景下;4;下載任務(wù)定時(shí)向?qū)?yīng)服務(wù)器的發(fā)出待下載數(shù)據(jù)信息;5;下載任務(wù)一直傾聽UDP廣播;6;若UDP數(shù)據(jù)包是所要的數(shù)據(jù),展開該數(shù)據(jù)包;7;下載任務(wù)隨時(shí)更新已下數(shù)據(jù)樹記錄;8;若服務(wù)內(nèi)容完全下載,下載任務(wù)結(jié)束;9;若所有下載任務(wù)結(jié)束,若用戶仍在訪問總站網(wǎng)頁,則繼續(xù)待命,不然退出;對應(yīng)局域網(wǎng)服務(wù)器上軟件流程是1;服務(wù)器啟動(dòng)同時(shí),服務(wù)器配分程序隨之運(yùn)行;2;服務(wù)器配分程序初始化,和總站數(shù)據(jù)庫建立實(shí)時(shí)更新;3;總站服務(wù)程序應(yīng)用戶要求更新該局域網(wǎng)中某服務(wù)內(nèi)容的需求;服務(wù)器配分程序隨之對該更新做反應(yīng);4;若該服務(wù)內(nèi)容已又對應(yīng)派分程序,服務(wù)器配分程序只需更新自己的記錄,反之,服務(wù)器配分程序啟動(dòng)一個(gè)新的派分程序來分發(fā)該內(nèi)容;5;服務(wù)器配分程序保持對所有運(yùn)行中的派分程序監(jiān)視,和總站數(shù)據(jù)庫保持實(shí)時(shí)更新;6;派分程序保持監(jiān)聽請求入口,隨時(shí)更新下載數(shù)據(jù)樹(略去調(diào)配程序特例的復(fù)雜性);7;派分程序優(yōu)化分發(fā)服務(wù)內(nèi)容的數(shù)據(jù)包,進(jìn)行廣播發(fā)送;8;若派分程序滿足所有用戶對該服務(wù)內(nèi)容的下載請求,派分程序退出;用戶下載塊的工作流程是1.用戶下載程序調(diào)入用戶下載塊,并傳入任務(wù)參數(shù)派分程序所在IP/PORT/ID/SIZE;2.檢查硬盤,若對應(yīng)該ID文件已部分存在(比如上一次用戶中途終止或其它意外)就以此產(chǎn)生用戶下載塊的文件數(shù)據(jù),不然產(chǎn)生一個(gè)全新文件數(shù)據(jù)(無內(nèi)容);3.以2中文件數(shù)據(jù)(無內(nèi)容或有部分內(nèi)容)初始數(shù)據(jù)樹;4.啟動(dòng)輔助線程,在線程初始化時(shí)和派分程序建立下載反饋通道(P&P);5.輔助線程將定時(shí)檢查數(shù)據(jù)樹,以INDEX元形式表示下載狀態(tài);6.輔助線程將定時(shí)向派分程序反饋壓縮后的下載狀態(tài);7.輔助線程在重返5之前會(huì)檢查主線程是否要求退出,是則輔助線程退出,不然重返5;8.主線程繼續(xù)4以后會(huì)初始UDP傾聽派分程序的IP/PORT;9.主線程保持傾聽UDP(超時(shí)無信號會(huì)退出);10.若收到數(shù)據(jù)包,主線程先檢查錯(cuò)誤,無錯(cuò)包進(jìn)行RAID還原;11.主線程對從順序而言遺漏包嘗試RAID合成,該合成可能需要從已下文件數(shù)據(jù)中讀某些相關(guān)數(shù)據(jù)段;12.主線程對新得到的數(shù)據(jù)包更新數(shù)據(jù)樹,然后將新包數(shù)據(jù)寫入用戶下載塊的文件數(shù)據(jù);13.主線程判斷是否可以退出,退出條件是所有數(shù)據(jù)都已下,或用戶要求終止;14.若不退出,主線程返回9;15.若退出,主線程先存盤,然后要等到輔助線程已經(jīng)ACK推出才能退出;派分程序的工作流程是1.派分程序由配分程序啟動(dòng);2.派分程序根據(jù)初始參數(shù)讀入文件;3.派分程序根據(jù)讀入文件初始數(shù)據(jù)樹;4.派分程序啟動(dòng)用戶反饋線程;5.派分程序啟動(dòng)UDP廣播線程;6.用戶反饋線程初試化時(shí)要建立P&P接口來接受用戶反饋;7.用戶反饋線程保持傾聽反饋接口(超時(shí)無信號會(huì)退出);8.用戶反饋線程得到用戶反饋數(shù)據(jù)包,要先解壓;9.用戶反饋線程將用戶下載狀態(tài)(INDEX元形式)更新到數(shù)據(jù)樹;10.用戶反饋線程判斷是否可以退出,該變量由主線程設(shè)置;11.若不退出,用戶反饋線程返回6;12.UDP線程初試化時(shí)要建立UDP接口來廣播;13.UDP線程判斷是否可以退出,該變量由主線程設(shè)置;14.若不退出,UDP線程檢查待發(fā)送INDEX流,無則IDLE一些時(shí)間,返回12;15.UDP線程從INDEX流以RAID數(shù)取出一組INDEX,INDEX數(shù)不足情形就是所有INDEX;16.UDP線程根據(jù)14中INDEX從文件數(shù)據(jù)讀入對應(yīng)數(shù)據(jù)段;17.UDP線程對15中那組數(shù)據(jù)段進(jìn)行RAID,段數(shù)不足所選定的RAID數(shù)時(shí)用空數(shù)據(jù)段頂替;18.UDP線程按順序?qū)AID后的數(shù)據(jù)包用UDP發(fā)送,特例時(shí)的空段RAID后不空者(取決具體RAID算法)也要發(fā)送,用戶段RAID還原時(shí)會(huì)扔掉空數(shù)據(jù)段的;19.UDP線程返回12;20.主線程從4繼續(xù),要等到用戶反饋線程和UDP線程初始化完成后,取得反饋接口和UDP接口設(shè)置,初始化優(yōu)化控制塊,和母程序(配分程序)建立聯(lián)系;21.主線程實(shí)時(shí)從配分程序處得知UDP速度參數(shù),新加入用戶ID;22.主線程檢查數(shù)據(jù)樹,更新該文件下載情況,向配分程序返回下載狀態(tài);23.主線程從21中數(shù)據(jù)樹現(xiàn)況,優(yōu)選法下一步待發(fā)INDEX,并放入14中的INDEX流;24.主線程判斷是否可以退出,退出條件是數(shù)據(jù)樹表示無用戶在等待數(shù)據(jù);25.主線程開始退出,要等到配分程序ACK自己最后下載狀態(tài),用戶反饋線程和UDP線程ACK(應(yīng)答)退出后,才能退出。
2.根據(jù)權(quán)利要求1所述的非實(shí)時(shí)局域網(wǎng)廣播通訊方法,其特征在于所述的物理網(wǎng),由廣域網(wǎng)接口連接路由器,路由器連接若干服務(wù)器,每個(gè)服務(wù)器連接有超大容量的存儲(chǔ)器,路由器連接電纜局域網(wǎng)路由器,電纜局域網(wǎng)路由器連接網(wǎng)絡(luò)管理服務(wù)器,電纜局域網(wǎng)路由器通過電纜連接若干用戶終端。
3.根據(jù)權(quán)利要求1所述的非實(shí)時(shí)局域網(wǎng)廣播通訊方法,其特征在于所述的物理網(wǎng),由廣域網(wǎng)接口連接路由器,路由器連接若干服務(wù)器,每個(gè)服務(wù)器連接有超大容量的存儲(chǔ)器,路由器連接局域網(wǎng)路由器和廣播路由器,局域網(wǎng)路由器連接網(wǎng)絡(luò)管理服務(wù)器,局域網(wǎng)路由器和廣播路由器分別連接多個(gè)ADSL路由器,每個(gè)ADSL路由器連接若干用戶終端。
4.根據(jù)權(quán)利要求1所述的非實(shí)時(shí)局域網(wǎng)廣播通訊方法,其特征在于所述的物理網(wǎng),由廣域網(wǎng)接口連接路由器,路由器連接若干服務(wù)器,每個(gè)服務(wù)器連接有超大容量的存儲(chǔ)器,路由器連接局域網(wǎng)路由器,局域網(wǎng)路由器連接網(wǎng)絡(luò)管理服務(wù)器和衛(wèi)星天線發(fā)射臺(tái),局域網(wǎng)路由器和連接多個(gè)ADSL路由器,每個(gè)ADSL路由器連接若干用戶終端;
5.根據(jù)權(quán)利要求3或4所述的非實(shí)時(shí)局域網(wǎng)廣播通訊方法,其特征在于所述的ADSL路由器,由高帶寬通訊線和高帶寬UDP線連接路由器,路由器的CPU及RAM連接廣播回路和信號分配回路,路由器的CPU及RAM、廣播回路和信號分配回路同時(shí)連接高速分路,高速分路再連接低帶寬電話線,低帶寬電話線連接用戶終端。
6.根據(jù)權(quán)利要求5所述的非實(shí)時(shí)局域網(wǎng)廣播通訊方法,其特征在于所述的ADSL路由器的CPU及RAM通過數(shù)據(jù)線和控制總線連接信號分配回路。
全文摘要
本非實(shí)時(shí)局域網(wǎng)廣播通訊方法包含若干服務(wù)器及其一套相關(guān)的軟件集成。軟件集成有軟件塊的工作流程、服務(wù)流程、戶下載塊的工作流程。該件集成由一個(gè)簡單的終端用戶程序和若干運(yùn)行于服務(wù)器上的服務(wù)構(gòu)成。包含若干服務(wù)器的物理網(wǎng)及其一套相關(guān)的軟件程序集成;此外,對于具體不同構(gòu)造物理局域網(wǎng),有若干特定設(shè)備改進(jìn)和要求。服務(wù)器/用戶終端機(jī)及軟件集成基于邏輯局域網(wǎng)中,獨(dú)立于具體物理網(wǎng),因此適用于各類型網(wǎng)絡(luò)。本發(fā)明的特點(diǎn)是對廣域網(wǎng)接口帶寬得到更有效地利用;并提高網(wǎng)絡(luò)的效率;有效利用網(wǎng)絡(luò)的通信能力。能進(jìn)一步擴(kuò)展可存儲(chǔ)文件種類,使本發(fā)明能應(yīng)用于不那么常見的文件,并近一步提高效率。
文檔編號G06F9/44GK1630236SQ20041001923
公開日2005年6月22日 申請日期2004年5月14日 優(yōu)先權(quán)日2004年5月14日
發(fā)明者王弘安, 吳曉蓉 申請人:吳曉蓉, 王弘安