CMACast是中國氣象局新一代氣象資料衛(wèi)星數(shù)據(jù)廣播系統(tǒng)的簡稱,始建于2010年,2011年底將投入業(yè)務試運行。它是對中國氣象局現(xiàn)有的三套衛(wèi)星數(shù)據(jù)廣播系統(tǒng)(中國氣象局衛(wèi)星單向數(shù)據(jù)廣播系統(tǒng)PCVSAT、DVB-S衛(wèi)星單向數(shù)據(jù)廣播試驗系統(tǒng)DVB-S和FENGYUNCast氣象衛(wèi)星數(shù)據(jù)廣播系統(tǒng))的整合和升級。CMACast系統(tǒng)建成后,將涵蓋原有三套系統(tǒng)的全部數(shù)據(jù)資料及用戶,提供高達70Mb/s速率的數(shù)據(jù)廣播,每天可播發(fā)400GB以上的氣象資料,日均播發(fā)文件數(shù)量可達200萬個。
CMACast的數(shù)據(jù)播發(fā)能力較之于中國氣象局原有的衛(wèi)星數(shù)據(jù)廣播系統(tǒng)幾乎提高了10倍之多,其源自于CMACast廣播系統(tǒng)播發(fā)平臺中的若干有針對性的設計。本文將首先分析可能影響主站播發(fā)平臺播發(fā)能力的幾個因素,隨后將重點分析CMACast系統(tǒng)針對這些因素所采取的解決方法。
中國氣象局在建設CMACast系統(tǒng)之前,已經(jīng)建設了PCVSAT、DVB-S和FENGYUNCast三套衛(wèi)星數(shù)據(jù)廣播系統(tǒng),但三套系統(tǒng)的日廣播數(shù)據(jù)量均沒有達到50GB。從已有三套系統(tǒng)的建設經(jīng)驗來看,對于一個數(shù)據(jù)廣播系統(tǒng)來說,從根本上來說其仍然是一個文件的匯聚和分發(fā)系統(tǒng),其本質(zhì)上都是在對文件進行讀寫操作。
因此,影響系統(tǒng)播發(fā)能力的主要因素就是系統(tǒng)在處理大量文件時所產(chǎn)生的I/O消耗,以及這些I/O消耗對系統(tǒng)性能造成的影響。如果在這個方面上處理的不好,將極大影響系統(tǒng)的播發(fā)能力。從這個角度來說,做到對文件的高效讀寫與管理就顯得十分必要。
圖1是CMACast主站播發(fā)平臺的數(shù)據(jù)播發(fā)流程示意圖,如果用一個形象的比喻來理解這個流程示意圖的話,我們可以將整個播發(fā)平臺看作是一個繁忙的“貨運站”。“貨運站”轉(zhuǎn)運的“貨物”是一個個的文件。在“貨運站”中設有專門的“倉庫”,也就是存儲空間,用來對“貨物”進行分類存放,同時貨運站中還有一條繁忙的“傳送帶”,用來將“貨物”裝上一輛輛的“貨車”,最后經(jīng)由“貨運站”的出口發(fā)出。由于播發(fā)平臺使用的是衛(wèi)星信道,其播發(fā)帶寬終究是有限的,因此這個例子中的“貨運站”的“貨車”的數(shù)量和空間是有上限的。而我們關(guān)注的播發(fā)平臺的播發(fā)能力,對于這個“貨運站”來說,就是在固定的“貨車”的情況下,如何最大限度的發(fā)揮“貨運站”的貨運能力。
圖1 CMACast主站播發(fā)平臺的數(shù)據(jù)播發(fā)流程圖
主站播發(fā)平臺對于文件管理的能力,主要取決于操作系統(tǒng)自身對于文件系統(tǒng)的管理機制。以中國氣象局現(xiàn)有的三套廣播系統(tǒng)為例,它們?nèi)慷蓟赪indows操作系統(tǒng)開發(fā),但Windows操作系統(tǒng)在對于大量目錄和文件進行管理時,其處理能力的不足會影響播發(fā)平臺的整體性能。
主站播發(fā)平臺獲取數(shù)據(jù)源上的大量待廣播文件時,如果文件的獲取速度較低,將直接影響主站播發(fā)平臺廣播的數(shù)據(jù)量。以中國氣象局現(xiàn)有的PCVSAT和DVB-S衛(wèi)星廣播系統(tǒng)為例,它們都是通過ftp的方式接收數(shù)據(jù)源提供的待廣播文件。但采用ftp方式傳輸有幾個不足之處:首先,ftp的傳輸速度受網(wǎng)絡帶寬的限制,如果播發(fā)平臺與數(shù)據(jù)源之間的網(wǎng)絡帶寬無法保證,會影響文件傳輸?shù)乃俣龋瑥亩苯咏档椭髡静グl(fā)平臺的廣播數(shù)據(jù)量。其次,一個文件必須等待ftp完整接收后才能開始播發(fā),因此如果從一條低速線路上獲取一個幾百MB的大文件,僅獲取這個文件就需要耗費很多時間,其文件廣播的時效將明顯降低。另外,為了做到從數(shù)據(jù)源同時獲取多個文件,主站播發(fā)平臺上往往需要部署多個ftp應用程序,分別從數(shù)據(jù)源獲取不同的文件。但這給播發(fā)平臺后續(xù)的應用程序維護帶來很大問題,不利于對廣播文件的獲取進行集中監(jiān)視。
播發(fā)平臺的廣播帶寬是有限的,當面對種類繁多的大量待廣播文件時,必須根據(jù)不同類型資料的廣播時效要求做到廣播帶寬的合理分配,否則很容易造成某一類文件的積壓,從而造成系統(tǒng)性能的下降,而且也會造成該類文件廣播時效的滯后。
在原有三套廣播系統(tǒng)中,主站播發(fā)平臺對于待廣播文件的管理機制設計的不夠合理,特別是待廣播文件量突然增大后,經(jīng)常出現(xiàn)待廣播文件的迅速積壓和堆積,當目錄下的文件個數(shù)達到幾千后,目錄的訪問速度就會明顯下降,并使得主站播發(fā)平臺的播發(fā)能力大幅降低。為此,在CMACast系統(tǒng)主站播發(fā)平臺設計過程中,著重在主站播發(fā)平臺文件系統(tǒng)選擇、播發(fā)平臺與數(shù)據(jù)源文件傳輸方式、播發(fā)平臺帶寬統(tǒng)計復用以及播發(fā)平臺播發(fā)隊列設計四個方面進行了有針對性的設計工作。
CMACast系統(tǒng)每日廣播文件個數(shù)保持在120萬以上,每日廣播文件總量在150GB左右。CMACast系統(tǒng)所廣播的文件絕大多數(shù)集中在100KB以下,其中又以20KB以下的文件最多,而小于1KB的文件個數(shù)則達到了3萬個左右。圖2是CMACast目前廣播資料文件大小分布情況統(tǒng)計。
因此,CMACast主站播發(fā)平臺選用了Linux操作系統(tǒng),同時在文件系統(tǒng)方面也選擇了在小文件處理方面相對更加有優(yōu)勢的的ReiserFS文件系統(tǒng)。與Windows操作系統(tǒng)相比,其具有以下幾個優(yōu)勢:
⊙ 系統(tǒng)的安全性更高,一方面是在用戶權(quán)限的管理方面更為細致,同時無需擔心病毒威脅。
⊙ Linux所采用的文件系統(tǒng)具有更高的讀寫效率,而且不易產(chǎn)生磁盤碎片問題。
⊙ 所采用的ReiserFS文件系統(tǒng)處理大小1k左右的文件時,其處理效率比其他文件系統(tǒng)有顯著提高。
CMACast系統(tǒng)的數(shù)據(jù)源是中國氣象局新一代國內(nèi)通信系統(tǒng),它是CMACast廣播資料的惟一來源。它負責收集各類氣象資料、產(chǎn)品以及衛(wèi)星資料等,為CMACast提供充足的數(shù)據(jù)資源。
為提高與新一代國內(nèi)通信系統(tǒng)之間數(shù)據(jù)交換的速度,與CMACast采用了通過集群進行文件系統(tǒng)共享的方式來解決數(shù)據(jù)源與主站播發(fā)平臺的高速數(shù)據(jù)交換。這種方式與ftp傳輸方式相比,明顯減少了文件的讀寫操作,同時節(jié)省了存儲空間。
圖3是采用ftp方式傳輸?shù)臄?shù)據(jù)流程分析,數(shù)據(jù)源在收集待廣播數(shù)據(jù)時需要進行一次寫操作,同時在通過ftp向廣播系統(tǒng)提供數(shù)據(jù)時,還需要再進行一次讀操作。對應的在廣播系統(tǒng)一側(cè),在通過ftp接收數(shù)據(jù)時,將進行一次寫操作,而在最終進行數(shù)據(jù)播發(fā)時,還需要進行一次讀操作,整個過程需要涉及4次I/O操作。
而通過將數(shù)據(jù)源與廣播系統(tǒng)整合到一個集群中,可以使數(shù)據(jù)源與廣播系統(tǒng)共享集群的存儲資源,同時利用共享文件系統(tǒng)來達到減少讀寫操作的目的。圖4是采用集群方式的數(shù)據(jù)流程分析。與圖3進行對照可以發(fā)現(xiàn),利用linux操作系統(tǒng)中提供的文件硬鏈接的方式,數(shù)據(jù)源可以將收集到的數(shù)據(jù)通過硬鏈接的方式提供給廣播系統(tǒng)。Linux系統(tǒng)的硬鏈接方式與文件拷貝不同,它并不創(chuàng)建新的文件,但可以使一份數(shù)據(jù)在多個地方使用。采用這種方式,可以為整個數(shù)據(jù)匯聚流程減少2次讀寫操作,同時也避免了由于文件復制而引起的存儲空間的占用問題。
(1)帶寬統(tǒng)計復用原則
在CMACast系統(tǒng)中,使用邏輯通道的概念來管理不同類型的廣播資料。不同的廣播通道內(nèi)的資料的類型各有不同,同時它們對于廣播時效性的要求也各不相同,有些要求做到分鐘級下發(fā),而有些資料則只需在幾小時之內(nèi)下發(fā)即可。
為了兼顧不同通道的特點,同時最大限度的利用有限的衛(wèi)星信道資源,在CMACast系統(tǒng)中采用了基于邏輯通道的帶寬統(tǒng)計復用機制,它的設計兼顧了以下幾個方面的因素:
⊙ 對播發(fā)平臺總帶寬進行控制,避免超出衛(wèi)星信道總帶寬。
⊙ 在播發(fā)平臺內(nèi)部,允許為不同通道設定帶寬范圍。
⊙ 為不同的通道設定相應的優(yōu)先級。
⊙ 對于優(yōu)先級較高的資料,應優(yōu)先提供系統(tǒng)帶寬供其使用。
⊙ 兼顧優(yōu)先級低的通道,保證低優(yōu)先級的通道也有機會得到系統(tǒng)帶寬。
⊙ 對無數(shù)據(jù)播發(fā)的通道,其原先占用的帶寬應自動釋放,供其他通道使用。
(2)帶寬統(tǒng)計復用中的幾個關(guān)鍵參數(shù)
⊙ 系統(tǒng)最大帶寬。首先根據(jù)租用的衛(wèi)星轉(zhuǎn)發(fā)器帶寬以及采用的調(diào)制方式等參數(shù)計算出衛(wèi)星信道所能支持的最大信息速率,之后去除DVB-S2封裝開銷后得出播發(fā)平臺最大出口IP速率,此速率為系統(tǒng)最大帶寬,即系統(tǒng)帶寬池總?cè)萘?。播發(fā)平臺應嚴格控制輸出的IP包速率不超過該速率,否則將可能造成衛(wèi)星鏈路的數(shù)據(jù)丟包。
⊙ 通道最小帶寬。每個通道的最小帶寬意味著該通道至少能夠占用到的帶寬,它是在該通道有數(shù)據(jù)播發(fā)的前提下,在最差情況下該通道所能獲得的帶寬,即該通道的最低速率(播發(fā)平臺內(nèi)所有通道的最小帶寬之和不得超過系統(tǒng)最大帶寬)。但最小帶寬的設定并不意味著該通道會一直占用此帶寬,在通道沒有數(shù)據(jù)發(fā)送時,該通道的帶寬將被釋放到系統(tǒng)帶寬池中,供其他通道使用。
⊙ 通道最大帶寬。每個通道的最大帶寬意味著該通道能夠占用到的最大帶寬。在任何情況下,該通道的播發(fā)速率都不能超過該通道的最大帶寬,同時單個通道的最大帶寬不得超過系統(tǒng)最大帶寬。
⊙ 通道優(yōu)先級。每個通道的優(yōu)先級代表著該通道所廣播資料的緊急程度,帶寬統(tǒng)計復用算法根據(jù)通道優(yōu)先級從帶寬池中為各通道分配帶寬。
(3)帶寬統(tǒng)計復用中算法設計
在某一時刻,播發(fā)平臺內(nèi)各通道占用帶寬的分配策略:
⊙ 首先僅為當前有數(shù)據(jù)播發(fā)的通道分配帶寬。
⊙ 嘗試為所有有數(shù)據(jù)播發(fā)的通道均預先分配其設定的最大帶寬。
⊙ 如帶寬池不足,則為所有通道預先分配其設定的最小帶寬。
⊙ 在帶寬池有剩余的情況下,為其中優(yōu)先級最高的通道分配帶寬,如相同優(yōu)先級的通道有多個,則嘗試使所有通道均達到最大帶寬,如帶寬池還有剩余,在剩余通道中遞歸此過程;如帶寬池不足,則按各通道設定的最大帶寬值的比例分配帶寬池剩余帶寬。
隨時間變化的帶寬分配策略。在連續(xù)的時間點上不斷的進行帶寬的統(tǒng)計復用時即是在每個時間點上均重復進行上述算法。在這一過程中,無數(shù)據(jù)播發(fā)的通道原先所占用的帶寬將被立即回收到帶寬池中,以便在下一個時間點上供其他通道進行使用。
(1)文件播發(fā)機制設計原則
CMACast主站播發(fā)平臺的工作方式是對數(shù)據(jù)源目錄實時進行輪詢,從中獲取待播發(fā)的數(shù)據(jù),并根據(jù)不同的數(shù)據(jù)類型將其在對應的邏輯通道中進行播發(fā)。為了提高整個流程的工作效率,在CMACast播發(fā)平臺中采用了播發(fā)隊列工作模式,其設計基于以下幾個基本原則:
⊙ 數(shù)據(jù)源目錄下的文件被掃描后應盡快移走進行后續(xù)處理,避免造成數(shù)據(jù)源目錄下文件的堆積。
⊙ 文件移動采用rename方式,減少文件移動時的I/O操作。
⊙ 采用播發(fā)隊列方式對待播發(fā)文件進行快速查找和管理。
⊙ 對由于帶寬不足造成的文件積壓,通過專門的積壓目錄和積壓隊列對其進行管理,避免由于文件積壓而影響正常文件的播發(fā)。
(2)文件播發(fā)流程設計
在CMACast系統(tǒng)中,播發(fā)平臺的主要工作進程分為兩個,一個是文件預處理進程,一個是文件播發(fā)進程。這兩個進程獨立工作,但通過隊列來共享數(shù)據(jù)。根據(jù)應用方式的不同,CMACast設計了四種不同作用的隊列,分別是播發(fā)隊列、定時隊列、重發(fā)隊列和積壓隊列,對于每個邏輯通道,他們都有各自的隊列。
播發(fā)隊列中記錄的是即將在本通道中播發(fā)的文件的路徑和文件名,其按照先入先出規(guī)則進行排隊,文件播發(fā)進程從播發(fā)隊列中取出一個節(jié)點,根據(jù)路徑讀取相應文件進行播發(fā),同時從隊列中刪去該節(jié)點。而預處理進程則不斷將新來的待播發(fā)文件插入隊列,當隊列長度達到上限后,后續(xù)再來的待播發(fā)文件將進入積壓隊列。積壓隊列同樣采用先入先出規(guī)則,一旦播發(fā)隊列有空余后,積壓隊列頭部的節(jié)點將被取出并放入播發(fā)隊列尾部。
除了播發(fā)隊列和積壓隊列,CMACast系統(tǒng)中還設計了重發(fā)隊列和定時隊列,他們分別用于對重復發(fā)送或定時發(fā)送的文件進行管理。
CMACast作為對中國氣象局現(xiàn)有PCVSAT、DVB-S、FENGYUNCast三套衛(wèi)星數(shù)據(jù)廣播系統(tǒng)的整合和升級,其整合了現(xiàn)有三套系統(tǒng)內(nèi)廣播的各類氣象資料及小站接收用戶,且大幅度提升了系統(tǒng)的播發(fā)能力。下圖是中國氣象局原有三套衛(wèi)星廣播系統(tǒng)與CMACast的播發(fā)能力對比。目前,CMACast系統(tǒng)在國內(nèi)已有2000余個省、地、縣級氣象部門用戶,這些用戶并通過這套系統(tǒng)實時接收中國氣象局廣播的氣象觀測資料和產(chǎn)品,開展天氣預測預報及服務業(yè)務。
CMACast是中國氣象局最新一代衛(wèi)星數(shù)據(jù)廣播系統(tǒng),其系統(tǒng)播發(fā)能力與原有幾套系統(tǒng)相比有了顯著提升。目前該系統(tǒng)已建設完成并投入業(yè)務運行,它所具備的高速衛(wèi)星數(shù)據(jù)廣播能力將有力的提升中國氣象局信息網(wǎng)絡服務能力,為全國各級氣象部門提供天氣預報預測工作準確率和精細化程度提供有力的支撐。筆者作為CMACast系統(tǒng)的主要設計和實施人員,重點論述了該系統(tǒng)為達到高速數(shù)據(jù)播發(fā)所做的關(guān)鍵設計,望能對相關(guān)系統(tǒng)的建設工作起到些須啟發(fā)作用。