国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

電視臺(tái)節(jié)目遷移技術(shù)的研究與實(shí)現(xiàn)

2012-09-25 04:33文丨李繼青唐繼勇白新躍
中國(guó)傳媒科技 2012年20期
關(guān)鍵詞:磁盤(pán)線程內(nèi)存

文丨李繼青 唐繼勇 白新躍

(電子科技大學(xué),成都 611731)

現(xiàn)今電視臺(tái)已經(jīng)用視頻服務(wù)器的硬盤(pán)播出系統(tǒng)取代了傳統(tǒng)的錄像機(jī)播出,并逐漸形成電視全臺(tái)制作播出網(wǎng)絡(luò),目前電視臺(tái)所有節(jié)目有三種存儲(chǔ)方式:在線存儲(chǔ)(On-Line)、近線存儲(chǔ)[1](Near-Line)和離線存儲(chǔ)(Off-Line),也分別稱(chēng)為一級(jí)、二級(jí)、三級(jí)存儲(chǔ)。在線存儲(chǔ)[2]方式是將所有的節(jié)目都用硬盤(pán)保存起來(lái),直接存儲(chǔ)在視頻服務(wù)器中,當(dāng)有播出請(qǐng)求時(shí),就可以立即取得數(shù)據(jù),訪問(wèn)速度快,但視頻服務(wù)器存儲(chǔ)容量有限制;離線存儲(chǔ)使用磁盤(pán)陣列、光盤(pán)、磁帶作為節(jié)目存儲(chǔ)的載體,其最大的優(yōu)點(diǎn)就在于其廉價(jià)的存儲(chǔ)成本,以及其靈活的擴(kuò)展性能,但訪問(wèn)速度較慢,效率較低。近線存儲(chǔ)方式有機(jī)將離線存儲(chǔ)和在線存儲(chǔ)的優(yōu)點(diǎn)結(jié)合,能實(shí)現(xiàn)較大容量節(jié)目的存儲(chǔ),而且遷入在線存儲(chǔ)速度也比離線遷入快。由于高清/標(biāo)清節(jié)目所需要磁盤(pán)容量較大,目前在電視臺(tái)中一般用多臺(tái)節(jié)目存儲(chǔ)服務(wù)器作為二級(jí)存儲(chǔ)設(shè)備。如圖1,在電視全臺(tái)網(wǎng)的節(jié)目播出和節(jié)目管理中,需要在一級(jí)、二級(jí)和三級(jí)存儲(chǔ)間進(jìn)行相互的遷入和回遷。本文重點(diǎn)以二級(jí)存儲(chǔ)遷移到在線存儲(chǔ)為討論對(duì)象,其它情況的遷移與此類(lèi)似。

圖1 電視臺(tái)節(jié)目存儲(chǔ)三級(jí)架構(gòu)

1 節(jié)目遷移需求分析

近線存儲(chǔ)方式的節(jié)目當(dāng)需要進(jìn)行播出時(shí)需要遷移到視頻服務(wù)器(在線存儲(chǔ)方式),或者對(duì)于有主備二級(jí)存儲(chǔ)的電視全臺(tái)網(wǎng)系統(tǒng)中,二級(jí)存儲(chǔ)之間也需要進(jìn)行節(jié)目的遷移。目前電視臺(tái)節(jié)目的遷移過(guò)程一般是基于FTP協(xié)議先下載再上傳。要實(shí)現(xiàn)遷移任務(wù),現(xiàn)在較為通用遷移步驟如下(以近線遷移到在線為例):(1)將近線存儲(chǔ)的節(jié)目下載到節(jié)目遷移服務(wù)器磁盤(pán)的特定目錄下。(2)將遷移服務(wù)器中已下載的節(jié)目遷移到視頻服務(wù)器(在線存儲(chǔ)),如果有主備冗余機(jī)制,則同時(shí)遷移到主備視頻服務(wù)器進(jìn)行在線存儲(chǔ)。(3)如果遷移到視頻服務(wù)器成功,則刪除自動(dòng)遷移服務(wù)器中下載的節(jié)目,完成遷移任務(wù)。

從以上步驟可以看出,遷移服務(wù)器作為中間橋梁實(shí)現(xiàn)遷移,每個(gè)節(jié)目的遷移都需要首先存入遷移服務(wù)器,完成任務(wù)后又刪除節(jié)目。由于現(xiàn)在電視臺(tái)節(jié)目一般都是大容量的音視頻文件,遷移過(guò)程中對(duì)遷移服務(wù)器要求高,要頻繁的讀寫(xiě)磁盤(pán),導(dǎo)致遷移速度慢,如果遇到臨時(shí)應(yīng)急情況,需要緊急遷移,基于以上的遷移過(guò)程在效率上得不到保證。針對(duì)先下載后上傳的遷移方法中的不足之處,對(duì)于采用分級(jí)存儲(chǔ)[3-4]的遷移系統(tǒng)功能分析如下:(1)下載和上載過(guò)程并發(fā)執(zhí)行,下載一部分文件數(shù)據(jù)的同時(shí),上載這部分?jǐn)?shù)據(jù)到目標(biāo)存儲(chǔ)服務(wù)器,以提高遷移效率。(2)傳統(tǒng)遷移方法利用硬盤(pán)作為臨時(shí)存儲(chǔ)空間,但磁盤(pán)速度遠(yuǎn)遠(yuǎn)低于內(nèi)存讀寫(xiě)速度,故應(yīng)使用內(nèi)存作為臨時(shí)存儲(chǔ)空間,提高遷移的速度。(3)內(nèi)存容量的有限性,對(duì)于大容量文件,不能分配與文件大小匹配的內(nèi)存作為臨時(shí)存儲(chǔ)區(qū),因而需設(shè)計(jì)一塊內(nèi)存空間供循環(huán)讀寫(xiě),實(shí)現(xiàn)內(nèi)存空間的高效利用。

針對(duì)以上需求分析,在實(shí)際電視廣播工程實(shí)踐開(kāi)發(fā)中,提出了循環(huán)內(nèi)存流遷移的方式來(lái)滿足以上需求,避免了頻繁的磁盤(pán)I/O讀寫(xiě)操作,設(shè)計(jì)合適的循環(huán)內(nèi)存流,能有效實(shí)現(xiàn)多個(gè)遷移任務(wù)并發(fā)執(zhí)行。

2 循環(huán)內(nèi)存流設(shè)計(jì)與實(shí)現(xiàn)

循環(huán)內(nèi)存流設(shè)計(jì)的基本思想是:在內(nèi)存空間中開(kāi)辟出指定大小的內(nèi)存塊(例如10M),一個(gè)Writer線程從局域網(wǎng)中某FTP服務(wù)器不斷下載數(shù)據(jù)到該內(nèi)存塊中;另一個(gè)Read線程源源不斷從內(nèi)存塊中取出數(shù)據(jù)進(jìn)行遷移到局域網(wǎng)中另外的FTP服務(wù)器。兩個(gè)線程共用一塊內(nèi)存區(qū),并能循環(huán)對(duì)此內(nèi)存區(qū)進(jìn)行讀寫(xiě)。如圖2所示,沿著循環(huán)流的方向,Read線程讀取數(shù)據(jù)總在Write線程寫(xiě)入之后,以保證每次能讀到數(shù)據(jù);Write線程每次寫(xiě)到流末尾,即進(jìn)行跳轉(zhuǎn)到流開(kāi)始處,從頭開(kāi)始寫(xiě)入數(shù)據(jù),Read線程與Write線程類(lèi)似。為了能保證循環(huán)讀寫(xiě)的順利進(jìn)行,假設(shè)每次讀寫(xiě)的數(shù)據(jù)量為Count(一般為32K),每次讀數(shù)據(jù)時(shí)要求不超過(guò)已寫(xiě)入數(shù)據(jù)的位置,而每次寫(xiě)時(shí)要求寫(xiě)入的位置的數(shù)據(jù)已經(jīng)讀出,每次寫(xiě)完時(shí),總有Write線程所指向內(nèi)存流的位置比讀線程所指向位置大于或者等于Count成立。兩個(gè)線程同步進(jìn)行,不停循環(huán)進(jìn)行讀寫(xiě)操作,從而實(shí)現(xiàn)文件基于循環(huán)內(nèi)存流的遷移過(guò)程。

為了實(shí)現(xiàn)數(shù)據(jù)的準(zhǔn)確傳輸,不會(huì)產(chǎn)生數(shù)據(jù)的丟失和讀寫(xiě)誤操作,必須進(jìn)行線程間同步,即保證讀數(shù)據(jù)之前,已經(jīng)有數(shù)據(jù)寫(xiě)入,循環(huán)再次寫(xiě)入時(shí),該內(nèi)存塊數(shù)據(jù)已經(jīng)被讀出。實(shí)現(xiàn)中采用面向?qū)ο蠹夹g(shù),編寫(xiě)了TMemoryStream類(lèi)實(shí)現(xiàn)循環(huán)內(nèi)存流,以下對(duì)循環(huán)內(nèi)存流的實(shí)際工作原理關(guān)鍵性節(jié)點(diǎn)進(jìn)行闡述。

圖2 循環(huán)內(nèi)存流原理示意圖

類(lèi)中部分關(guān)鍵字段定義。Memory Capacity:設(shè)定內(nèi)存流的大?。籆ount:每次讀出或者寫(xiě)入流的大小。FPosition:本次進(jìn)行讀或者寫(xiě)流的位置指針; WritePosition :寫(xiě)位置指針,指向遷移文件已經(jīng)寫(xiě)入了的文件位置;ReadPosition:讀位置指針,指向遷移文件已經(jīng)讀出了的文件位置;IdMutex:保證讀寫(xiě)線程同步的互斥量。例如,要實(shí)現(xiàn)從二級(jí)存儲(chǔ)A服務(wù)器遷移到一級(jí)存儲(chǔ)B視頻服務(wù)器,某次遷移的文件大小為1G,假設(shè)內(nèi)存流設(shè)置為10M,每次讀入或者寫(xiě)入流的數(shù)據(jù)為32K。依據(jù)字段定義Memory Capacity為10*1024*1024(單位為字節(jié));Count為32768;WritePosition和ReadPosition取值范圍為0到1*1024*1024*1024(1G),且為Count的整數(shù)倍;F Position每次讀出或者寫(xiě)入時(shí)需要計(jì)算,計(jì)算方法為WritePosition或者ReadPosition對(duì)F Capacity求余,這樣能順利實(shí)現(xiàn)讀寫(xiě)到末尾重新從內(nèi)存流頭部開(kāi)始,實(shí)現(xiàn)循環(huán)內(nèi)存流。

圖3 循環(huán)內(nèi)存流類(lèi)Write方法流程

類(lèi)中關(guān)鍵方法實(shí)現(xiàn)。SetCapacity方法,該方法主要在初始化內(nèi)存流時(shí)指定內(nèi)存大小,即指定MemoryCapacity大小,并用malloc函數(shù)開(kāi)辟循環(huán)內(nèi)存流所需空間。Seek方法用于實(shí)現(xiàn)每次寫(xiě)入或者讀出時(shí)計(jì)算FPositon,以確定要每次進(jìn)行操作的內(nèi)存流位置。Write和Read方法分別用于下載近線存儲(chǔ)文件到內(nèi)存流和上載內(nèi)存流到在線存儲(chǔ)服務(wù)器。

由于需要并發(fā)進(jìn)行遷移,讀寫(xiě)也要求并發(fā)進(jìn)行,循環(huán)內(nèi)存流設(shè)計(jì)中用IdMutex互斥量保證并發(fā)時(shí)數(shù)據(jù)讀寫(xiě)的準(zhǔn)確性。以Write方法流程作為詳細(xì)闡述,簡(jiǎn)化流程如圖3,讀過(guò)程類(lèi)似。進(jìn)行某次數(shù)據(jù)寫(xiě)入之前,必須保證寫(xiě)指針在讀指針之前,這樣做能有效保證寫(xiě)入數(shù)據(jù)安全性,因而寫(xiě)流程進(jìn)入后首先需要判斷是否滿足寫(xiě)的條件,具體為WritePosition和ReadPosition之差是否大于或者等于Count。如果不滿足,則進(jìn)行等待,一直等不到條件成立,7秒后退出,滿足則進(jìn)入互斥量保護(hù)的寫(xiě)入過(guò)程。寫(xiě)過(guò)程首先找到本次要寫(xiě)入的位置,然后判斷這次寫(xiě)入是否在流的最后位置,如果在最后位置,最后位置又沒(méi)有Count容量供本次寫(xiě)入,則需要進(jìn)行分次寫(xiě)入,先寫(xiě)滿流末尾部分,之后再流的開(kāi)始部分再寫(xiě)入本次剩余的數(shù)據(jù),不需要分次直接一次寫(xiě)滿Count數(shù)據(jù)到內(nèi)存流。最后改變WritePosition位置,釋放互斥量,返回寫(xiě)入數(shù)據(jù)量,結(jié)束寫(xiě)過(guò)程。

3 測(cè)試及小結(jié)

圖4 循環(huán)內(nèi)存流遷移方法測(cè)試結(jié)果對(duì)比圖

圖4為測(cè)試對(duì)比結(jié)果,測(cè)試環(huán)境為兩臺(tái)FTP服務(wù)器,一臺(tái)遷移服務(wù)器,三臺(tái)機(jī)器配置如下:windowsServer2003系統(tǒng),CPU型號(hào)為Pentium(R) Dual-Core E5200,內(nèi)存2G,F(xiàn)TP軟件為Server-U。對(duì)比先下載后上傳方法和循環(huán)內(nèi)存流遷移方法可以發(fā)現(xiàn),循環(huán)內(nèi)存流效果比先下載再上傳速度要快了將近一倍。對(duì)于自動(dòng)遷移服務(wù)器來(lái)說(shuō),采用循環(huán)內(nèi)存流的遷移方法大大減輕了遷移服務(wù)器的負(fù)擔(dān),遷移服務(wù)器可以工作更為穩(wěn)定且延長(zhǎng)磁盤(pán)使用壽命,在實(shí)際應(yīng)用過(guò)程中,基于循環(huán)內(nèi)存流的遷移系統(tǒng)能在遷移過(guò)程中實(shí)現(xiàn)任務(wù)并發(fā)操作,已經(jīng)成功在多個(gè)地方電視臺(tái)上線使用,具有較大的實(shí)際意義。

[1]肖艷平.數(shù)字電視播出系統(tǒng)中的近線存儲(chǔ)[J].中國(guó)數(shù)字電視,2011(2):82.

[2]何建,唐繼勇.硬盤(pán)播出數(shù)據(jù)存儲(chǔ)技術(shù)分析[J].中國(guó)有線電視,2005(1):19.

[3]趙曉楠,李戰(zhàn)懷.分級(jí)存儲(chǔ)管理技術(shù)研究[J].計(jì)算機(jī)研究與發(fā)展,2011(3):48.

[4]羅敏.數(shù)據(jù)分級(jí)存儲(chǔ)策略[J].城建檔案,2009(5).

猜你喜歡
磁盤(pán)線程內(nèi)存
葉臘石聚合成型及其旋轉(zhuǎn)磁盤(pán)的制作方法
基于C#線程實(shí)驗(yàn)探究
它的好 它的壞 詳解動(dòng)態(tài)磁盤(pán)
基于國(guó)產(chǎn)化環(huán)境的線程池模型研究與實(shí)現(xiàn)
解決Windows磁盤(pán)簽名沖突
線程池調(diào)度對(duì)服務(wù)器性能影響的研究*
筆記本內(nèi)存已經(jīng)在漲價(jià)了,但幅度不大,升級(jí)擴(kuò)容無(wú)須等待
“春夏秋冬”的內(nèi)存
Windows系統(tǒng)下動(dòng)態(tài)磁盤(pán)卷的分析與研究
內(nèi)存搭配DDR4、DDR3L還是DDR3?
揭东县| 赤水市| 娄烦县| 桂林市| 佳木斯市| 昆山市| 加查县| 大田县| 永仁县| 乾安县| 炎陵县| 石泉县| 松阳县| 天全县| 青龙| 伊川县| 威信县| 景谷| 富锦市| 丹东市| 抚宁县| 丁青县| 罗平县| 巴南区| 金山区| 阿合奇县| 涞水县| 华亭县| 凭祥市| 阜宁县| 定日县| 泗洪县| 定西市| 五台县| 登封市| 西充县| 东城区| 南平市| 北流市| 龙州县| 蓬莱市|