本發(fā)明屬于計(jì)算機(jī)分布式數(shù)據(jù)傳輸領(lǐng)域,涉及一種網(wǎng)絡(luò)實(shí)時(shí)互動(dòng)系統(tǒng)中高并發(fā)動(dòng)態(tài)速率數(shù)據(jù)傳輸?shù)姆椒?,?shí)現(xiàn)在高并發(fā)、帶寬限定以及不穩(wěn)定的情況下,動(dòng)態(tài)調(diào)速、最大化使用網(wǎng)絡(luò)帶寬的傳輸方法。
背景技術(shù):
在大型在線互動(dòng)平臺(tái)(如分布式視頻會(huì)議系統(tǒng))中,在既定較為穩(wěn)定的和波動(dòng)不穩(wěn)定的網(wǎng)絡(luò)帶寬條件下,均能高效率穩(wěn)定支持萬人級(jí)別的客戶端與服務(wù)器之間的數(shù)據(jù)通信,是個(gè)難點(diǎn),也是一個(gè)瓶頸問題,同時(shí)也是區(qū)別在線互動(dòng)平臺(tái)之間質(zhì)量?jī)?yōu)劣的一個(gè)重要指標(biāo)。
對(duì)于實(shí)時(shí)互動(dòng)系統(tǒng)中高并發(fā)數(shù)據(jù)傳輸,常規(guī)的做法是通過分布式負(fù)載均衡來解決,這樣做雖然可以通過由多臺(tái)服務(wù)器來分擔(dān)萬人級(jí)用戶的數(shù)據(jù)請(qǐng)求和傳輸通信壓力,在一定程度上解決問題。但也明顯存在缺陷,對(duì)于同一臺(tái)服務(wù)器上的數(shù)據(jù)通信,還是存在通信峰值和帶寬瓶頸問題。比如每臺(tái)服務(wù)器分擔(dān)1000個(gè)客戶端(用戶),每個(gè)客戶端可能同時(shí)在請(qǐng)求幾兆的數(shù)據(jù),如果不進(jìn)行控制就會(huì)導(dǎo)致網(wǎng)絡(luò)擁堵,用戶體驗(yàn)無法得到保障。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明主要目的是針對(duì)現(xiàn)在常規(guī)的做法僅從負(fù)載均衡來解決的不足,提供一種網(wǎng)絡(luò)實(shí)時(shí)互動(dòng)系統(tǒng)中高并發(fā)動(dòng)態(tài)速率數(shù)據(jù)傳輸?shù)姆椒āR环N動(dòng)態(tài)調(diào)速、最大化使用網(wǎng)絡(luò)帶寬的傳輸方法,支持高并發(fā)數(shù)據(jù)的穩(wěn)定可靠傳輸。
本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案包括如下步驟:
第一部分:數(shù)據(jù)分包策略
本發(fā)明數(shù)據(jù)拆分策略如下:文檔先根據(jù)頁面進(jìn)行拆分,是采取分頁傳輸而不是整個(gè)文檔一起傳輸;每頁根據(jù)64K字節(jié)作為一個(gè)單位拆分成基本包;基本包又以1K字節(jié)為單位拆分成數(shù)據(jù)包。從而形成文檔、頁、基本包、數(shù)據(jù)包的傳輸層次結(jié)構(gòu)。
文檔等之類數(shù)據(jù),一般都比較大,可以到幾十兆甚至幾百兆?;ヂ?lián)網(wǎng)上傳輸數(shù)據(jù),一般都采取分包傳輸?shù)牟呗?,不?huì)全部打包在一起一次性傳過去,這樣容易造成網(wǎng)絡(luò)擁堵。
第二部分:文檔上傳
步驟(1)基于用戶體驗(yàn)的考慮,用戶希望盡快看到文檔數(shù)據(jù)的第一頁。因此客戶端PPT文檔公共頁和第1頁的數(shù)據(jù)傳輸,采用600Kbps(根據(jù)實(shí)驗(yàn)測(cè)定)的傳輸速度根據(jù)前面的拆包規(guī)則上傳數(shù)據(jù)
步驟(2)非PPT公共頁和非第1頁,采用200Kbps的傳輸速度根據(jù)前面的拆包規(guī)則上傳數(shù)據(jù)
步驟(3)服務(wù)器部分將收到的數(shù)據(jù)根據(jù)前面的拆包規(guī)則組包成完整的數(shù)據(jù)后,記錄文檔、頁、基本包、數(shù)據(jù)包之間的邏輯關(guān)系,并在服務(wù)器內(nèi)存中仍舊以數(shù)據(jù)包、基本包、頁、文檔層次關(guān)系保存,以便其他客戶端隨時(shí)來請(qǐng)求,避免了重新組包,有請(qǐng)求可以直接轉(zhuǎn)發(fā),從而提高傳輸效率。
第三部分:文檔下載
服務(wù)器端在收到給客戶端的數(shù)據(jù)請(qǐng)求后,以100Kbps的速率為基準(zhǔn),通過調(diào)整單次發(fā)包個(gè)數(shù)來實(shí)現(xiàn)100Kbps至600Kbps的速率調(diào)整;單個(gè)用戶支持100Kbps、200Kbps、300Kbps、400Kbps、500Kbps、600Kbps這幾個(gè)速率。服務(wù)器理論可用帶寬Kbps,我們一般固定為100*1024Kbps。
服務(wù)器文檔需要傳輸?shù)挠脩魯?shù)的統(tǒng)計(jì)按照如下規(guī)則:
步驟(1)每隔1秒統(tǒng)計(jì)音視頻已占用帶寬Kbps情況
步驟(2)每隔1秒重新統(tǒng)計(jì)當(dāng)前服務(wù)器上有文檔背景數(shù)據(jù)包在發(fā)送的用戶數(shù),和20秒之內(nèi)曾經(jīng)發(fā)過數(shù)據(jù)包的用戶數(shù),并將兩個(gè)用戶數(shù)疊加;
步驟(3)新統(tǒng)計(jì)人數(shù)規(guī)則
新統(tǒng)計(jì)人數(shù)>=上1秒統(tǒng)計(jì)人數(shù),采用新統(tǒng)計(jì)人數(shù),實(shí)現(xiàn)快速降速
新統(tǒng)計(jì)人數(shù)<上1秒統(tǒng)計(jì)人數(shù),傳輸人數(shù)=新統(tǒng)計(jì)人數(shù)*0.2+上1秒統(tǒng)計(jì)人數(shù)*0.8,確保提速平穩(wěn)過渡;
步驟(4)計(jì)算服務(wù)器給客戶端單次發(fā)包個(gè)數(shù)
服務(wù)器給客戶端單次發(fā)包個(gè)數(shù)=(服務(wù)器理論可用帶寬Kbps–音視頻已占用帶寬Kbps)/(100Kbps*服務(wù)器上文檔傳輸用戶數(shù))。
步驟(5)確定服務(wù)器給客戶端的傳輸速率
服務(wù)器給客戶端單次發(fā)包個(gè)數(shù)最小等于1,100Kbps傳輸速率
服務(wù)器給客戶端單次發(fā)包個(gè)數(shù)最大等于6,600Kbps傳輸速率
服務(wù)器給客戶端單次發(fā)包個(gè)數(shù)每1秒調(diào)整一次,以支持瞬間用戶數(shù)上升問題(如瞬間斷網(wǎng),所有用戶重新登錄的情況)。
本發(fā)明有益效果如下:
本發(fā)明解決了現(xiàn)在常規(guī)的做法僅從負(fù)載均衡來解決的不足,提供一種動(dòng)態(tài)調(diào)速、最大化使用網(wǎng)絡(luò)帶寬的傳輸方法,支持高并發(fā)數(shù)據(jù)的穩(wěn)定可靠傳輸。
具體實(shí)施方式
下面集合實(shí)施例對(duì)本發(fā)明做進(jìn)一步說明。
如下以大型在線互動(dòng)平臺(tái)中的文檔數(shù)據(jù)傳輸為例說明,本發(fā)明方法的具體步驟包括:
第一部分:數(shù)據(jù)分包策略
本發(fā)明數(shù)據(jù)拆分策略如下:文檔先根據(jù)頁面進(jìn)行拆分,是采取分頁傳輸而不是整個(gè)文檔一起傳輸;每頁根據(jù)64K字節(jié)作為一個(gè)單位拆分成基本包;基本包又以1K字節(jié)為單位拆分成數(shù)據(jù)包。從而形成文檔、頁、基本包、數(shù)據(jù)包的傳輸層次結(jié)構(gòu)。
文檔等之類數(shù)據(jù),一般都比較大,可以到幾十兆甚至幾百兆。互聯(lián)網(wǎng)上傳輸數(shù)據(jù),一般都采取分包傳輸?shù)牟呗?,不?huì)全部打包在一起一次性傳過去,這樣容易造成網(wǎng)絡(luò)擁堵。
第二部分:文檔上傳
步驟(1)基于用戶體驗(yàn)的考慮,用戶希望盡快看到文檔數(shù)據(jù)的第一頁。因此客戶端PPT文檔公共頁和第1頁的數(shù)據(jù)傳輸,采用600Kbps(根據(jù)實(shí)驗(yàn)測(cè)定)的傳輸速度根據(jù)前面的拆包規(guī)則上傳數(shù)據(jù)
步驟(2)非PPT公共頁和非第1頁,采用200Kbps的傳輸速度根據(jù)前面的拆包規(guī)則上傳數(shù)據(jù)
步驟(3)服務(wù)器部分將收到的數(shù)據(jù)根據(jù)前面的拆包規(guī)則組包成完整的數(shù)據(jù)后,記錄文檔、頁、基本包、數(shù)據(jù)包之間的邏輯關(guān)系,并在服務(wù)器內(nèi)存中仍舊以數(shù)據(jù)包、基本包、頁、文檔層次關(guān)系保存,以便其他客戶端隨時(shí)來請(qǐng)求,避免了重新組包,有請(qǐng)求可以直接轉(zhuǎn)發(fā),從而提高傳輸效率。
第三部分:文檔下載
服務(wù)器端在收到給客戶端的數(shù)據(jù)請(qǐng)求后,以100Kbps的速率為基準(zhǔn),通過調(diào)整單次發(fā)包個(gè)數(shù)來實(shí)現(xiàn)100Kbps至600Kbps的速率調(diào)整;單個(gè)用戶支持100Kbps、200Kbps、300Kbps、400Kbps、500Kbps、600Kbps這幾個(gè)速率。服務(wù)器理論可用帶寬Kbps,我們一般固定為100*1024Kbps。
服務(wù)器文檔需要傳輸?shù)挠脩魯?shù)的統(tǒng)計(jì)按照如下規(guī)則:
步驟(1)每隔1秒統(tǒng)計(jì)音視頻已占用帶寬Kbps情況
步驟(2)每隔1秒重新統(tǒng)計(jì)當(dāng)前服務(wù)器上有文檔背景數(shù)據(jù)包在發(fā)送的用戶數(shù),和20秒之內(nèi)曾經(jīng)發(fā)過數(shù)據(jù)包的用戶數(shù),并將兩個(gè)用戶數(shù)疊加;
步驟(3)新統(tǒng)計(jì)人數(shù)規(guī)則
新統(tǒng)計(jì)人數(shù)>=上1秒統(tǒng)計(jì)人數(shù),采用新統(tǒng)計(jì)人數(shù),實(shí)現(xiàn)快速降速
新統(tǒng)計(jì)人數(shù)<上1秒統(tǒng)計(jì)人數(shù),傳輸人數(shù)=新統(tǒng)計(jì)人數(shù)*0.2+上1秒統(tǒng)計(jì)人數(shù)*0.8,確保提速平穩(wěn)過渡;
步驟(4)計(jì)算服務(wù)器給客戶端單次發(fā)包個(gè)數(shù)
服務(wù)器給客戶端單次發(fā)包個(gè)數(shù)=(服務(wù)器理論可用帶寬Kbps–音視頻已占用帶寬Kbps)/(100Kbps*服務(wù)器上文檔傳輸用戶數(shù))。
步驟(5)確定服務(wù)器給客戶端的傳輸速率
服務(wù)器給客戶端單次發(fā)包個(gè)數(shù)最小等于1,100Kbps傳輸速率
服務(wù)器給客戶端單次發(fā)包個(gè)數(shù)最大等于6,600Kbps傳輸速率
服務(wù)器給客戶端單次發(fā)包個(gè)數(shù)每1秒調(diào)整一次,以支持瞬間用戶數(shù)上升問題(如瞬間斷網(wǎng),所有用戶重新登錄的情況)。
實(shí)施例:
以一個(gè)總帶寬為500Mbps的系統(tǒng)為例,當(dāng)系統(tǒng)當(dāng)前用戶數(shù)為1000,且正在播放一個(gè)流量為400Kbps的視頻時(shí),視頻所占用的總流量為400Kbps*1000=400000Kbps,假如當(dāng)時(shí)統(tǒng)計(jì)得到的文檔傳輸用戶數(shù)是300,而記錄的上一秒的文檔傳輸用戶數(shù)是250,則根據(jù)300來計(jì)算單次發(fā)包數(shù),即(500000Kbps-400000Kbps)/(100Kbps*300)=3.333…,即每次發(fā)送3個(gè)數(shù)據(jù)包,再過一秒后,若統(tǒng)計(jì)得到的文檔傳輸用戶數(shù)變?yōu)?0,則傳輸人數(shù)變?yōu)?00*0.8+10*0.2=242,單次發(fā)包數(shù)為(500000Kbps-400000Kbps)/(100Kbps*242)=4.132…,即每次發(fā)送4個(gè)數(shù)據(jù)包。