梁 波,陳騰達(dá),于孔林,劉應(yīng)波,2,鄧 輝,柳翠寅,王 鋒,2
(1. 昆明理工大學(xué)云南省計(jì)算機(jī)技術(shù)應(yīng)用重點(diǎn)實(shí)驗(yàn)室,云南 昆明 650500;2. 中國科學(xué)院云南天文臺(tái),云南 昆明 650011)
?
分布式實(shí)時(shí)存儲(chǔ)環(huán)境下的FITS數(shù)據(jù)一致性研究*
梁波1,陳騰達(dá)1,于孔林1,劉應(yīng)波1,2,鄧輝1,柳翠寅1,王鋒1,2
(1. 昆明理工大學(xué)云南省計(jì)算機(jī)技術(shù)應(yīng)用重點(diǎn)實(shí)驗(yàn)室,云南 昆明650500;2. 中國科學(xué)院云南天文臺(tái),云南 昆明650011)
在大型太陽望遠(yuǎn)鏡觀測(cè)數(shù)據(jù)的分布式高速實(shí)時(shí)存儲(chǔ)過程中,作為元數(shù)據(jù)的FITS頭和FITS數(shù)據(jù)文件的不一致,導(dǎo)致應(yīng)用程序不能根據(jù)構(gòu)建在元數(shù)據(jù)上的索引信息檢索到相對(duì)應(yīng)的FITS數(shù)據(jù)文件。研究了這種環(huán)境下,兩類數(shù)據(jù)的一致性模型;分析總結(jié)了二者在實(shí)時(shí)存儲(chǔ)時(shí)的一致性保障機(jī)制和解決方案,提出了應(yīng)用改進(jìn)的兩段提交協(xié)議來協(xié)商這兩種數(shù)據(jù)之間的一致性關(guān)系,并給出了兩段提交協(xié)議在高速數(shù)據(jù)存儲(chǔ)背景下的算法實(shí)現(xiàn),研究過程和方法能夠?qū)ζ渌茖W(xué)領(lǐng)域的相關(guān)應(yīng)用提供參考。
FITS;元數(shù)據(jù);一致性;兩段提交協(xié)議
普適圖像傳輸系統(tǒng)(Flexible Image Transport System, FITS)是天文數(shù)據(jù)管理的一種主要格式,數(shù)據(jù)文件頭包含了豐富的描述數(shù)據(jù)的元信息。它是元數(shù)據(jù)的主要構(gòu)成部分,也是天文數(shù)據(jù)檢索和查詢服務(wù)的主要依據(jù)。同時(shí),在海量高速的太陽數(shù)據(jù)觀測(cè)應(yīng)用場(chǎng)景下,為了便于數(shù)據(jù)管理,最大化地提高存儲(chǔ)性能,使用元數(shù)據(jù)和FITS數(shù)據(jù)文件分離的存儲(chǔ)模式。這種模式能夠提高數(shù)據(jù)構(gòu)建索引和查詢的效率,減少打開FITS文件獲取元數(shù)據(jù)信息的資源開銷。元數(shù)據(jù)和數(shù)據(jù)文件分布存儲(chǔ)的模式在提高存儲(chǔ)性能的同時(shí)也容易導(dǎo)致數(shù)據(jù)之間的不一致,主要包含兩方面:存儲(chǔ)了FITS元數(shù)據(jù)沒有對(duì)應(yīng)的FITS文件和存儲(chǔ)了FITS文件沒有對(duì)應(yīng)的FITS元數(shù)據(jù)。這兩類問題的結(jié)果都導(dǎo)致在查詢數(shù)據(jù)時(shí),無法正確訪問某些FITS數(shù)據(jù)文件,從而造成數(shù)據(jù)的假丟失現(xiàn)象。這個(gè)問題在天文數(shù)據(jù)存儲(chǔ)領(lǐng)域還沒有相關(guān)文獻(xiàn)對(duì)其進(jìn)行細(xì)致的研究。
為了保證高速的數(shù)據(jù)存儲(chǔ),減少元數(shù)據(jù)和FITS數(shù)據(jù)文件之間的不一致性,研究了兩類數(shù)據(jù)之間的關(guān)系,主要包括:(1)分析了高速太陽觀測(cè)數(shù)據(jù)存儲(chǔ)時(shí),元數(shù)據(jù)和FITS文件數(shù)據(jù)分離存儲(chǔ)時(shí)的一致性數(shù)據(jù)模型;(2)對(duì)高速的分離數(shù)據(jù)產(chǎn)生不一致狀態(tài)進(jìn)行分析并分類;(3)應(yīng)用改進(jìn)的兩段提交協(xié)議來處理這種一致性問題,并對(duì)高速數(shù)據(jù)存儲(chǔ)性能需求和一致性要求之間的關(guān)系進(jìn)行了討論。本文的研究也可為其他科學(xué)領(lǐng)域的數(shù)據(jù)存儲(chǔ)系統(tǒng)中不同數(shù)據(jù)之間的一致性和數(shù)據(jù)同步提供參考。
1.1FITS文件頭
FITS頭通常包含觀測(cè)環(huán)境下望遠(yuǎn)鏡配置、觀測(cè)條件、觀測(cè)者、日期時(shí)間、觀測(cè)的實(shí)際環(huán)境參數(shù)等其他附加信息,這些數(shù)據(jù)可以被看成FITS文件和觀測(cè)活動(dòng)的元數(shù)據(jù),是元數(shù)據(jù)信息的主要組成部分,因?yàn)樗嗣枋鰯?shù)據(jù)結(jié)構(gòu)和觀測(cè)的信息[1],它們被單獨(dú)存儲(chǔ)到元數(shù)據(jù)倉庫。文[2]認(rèn)為FITS文件頭包含了重要的元數(shù)據(jù)信息,并研究了在分布式環(huán)境下如何高效提取FITS的頭信息;文[3]討論了FITS頭中保存的信息可以滿足大部分FITS數(shù)據(jù)文件查詢檢索的需求,設(shè)計(jì)了一個(gè)使用離線方式提取FITS頭的系統(tǒng)。這些相關(guān)工作都沒有對(duì)二者之間的一致性關(guān)系進(jìn)行處理。
1.2元數(shù)據(jù)
天文可視化元數(shù)據(jù)沒有統(tǒng)一的觀測(cè)元數(shù)據(jù)標(biāo)準(zhǔn),目前通常認(rèn)為FITS頭中包含了重要的元數(shù)據(jù)信息[1-2]。澳大利亞望遠(yuǎn)鏡陣列(Australia Telescope Compact Array, ATCA)的數(shù)據(jù)存儲(chǔ)使用元數(shù)據(jù)和數(shù)據(jù)分離的方式,元數(shù)據(jù)存儲(chǔ)在關(guān)系型數(shù)據(jù)庫中,數(shù)據(jù)則存儲(chǔ)于文件服務(wù)器[4]。文[1]為歐洲南方天文臺(tái)(European Southern Observatory, ESO)設(shè)計(jì)了FITS的元數(shù)據(jù)處理框架,由于觀測(cè)的實(shí)時(shí)性需要,一些元數(shù)據(jù)要從FITS頭中提取并存儲(chǔ)到元數(shù)據(jù)庫,用于構(gòu)建查詢服務(wù)[1]和數(shù)據(jù)挖掘[5]。數(shù)據(jù)溯源是科學(xué)活動(dòng)中的重要工作,在FITS文件的FITS頭中通過HISTORY和COMMENT兩個(gè)關(guān)鍵字段可以回溯FITS文件的歷史記錄[6]。
1.3一致性提交協(xié)議
在具有分布式存儲(chǔ)特征的系統(tǒng)中,為了達(dá)成數(shù)據(jù)副本之間的一致性,通常在數(shù)據(jù)提交前進(jìn)行一致性協(xié)商確認(rèn),使用的相關(guān)協(xié)議主要有兩段提交協(xié)議[7]、三段提交協(xié)議[8]、Paxos協(xié)議[9]等,這些協(xié)議在理論和實(shí)踐中都已被成功應(yīng)用[10-11],但是主要用于底層系統(tǒng)之間的原子性應(yīng)用和同步,對(duì)于在科學(xué)領(lǐng)域的高層應(yīng)用較少。
2.1基于元數(shù)據(jù)的查詢模式
FITS元數(shù)據(jù)(或FITS頭)和FITS數(shù)據(jù)文件分離的存儲(chǔ)模式影響數(shù)據(jù)的查詢方式,在基于元數(shù)據(jù)的查詢時(shí),應(yīng)用程序先到元數(shù)據(jù)的存儲(chǔ)庫進(jìn)行查詢,得到查詢結(jié)果后,再根據(jù)結(jié)果信息中包含的原始文件的引用信息去數(shù)據(jù)存儲(chǔ)庫獲取原始數(shù)據(jù)文件。這種原始數(shù)據(jù)的獲取,依賴元數(shù)據(jù)和數(shù)據(jù)文件之間的一致性關(guān)系,如果這種一致性關(guān)系不能保證,便不能通過元數(shù)據(jù)中的數(shù)據(jù)引用信息正確地獲取數(shù)據(jù)文件,即根據(jù)元數(shù)據(jù)存儲(chǔ)庫建立的檢索信息里找不到FITS文件,或者數(shù)據(jù)存儲(chǔ)庫中存在FITS文件,但是在元數(shù)據(jù)存儲(chǔ)庫中的檢索信息沒有對(duì)應(yīng)的記錄。所以,在這種存儲(chǔ)模式下,要求元數(shù)據(jù)和數(shù)據(jù)之間能夠保證一致性。
2.2分離存儲(chǔ)的一致性要求
分離存儲(chǔ)的元數(shù)據(jù)和數(shù)據(jù)之間的一致性滿足實(shí)時(shí)數(shù)據(jù)檢索和查詢的需要。觀測(cè)時(shí),為了實(shí)時(shí)了解觀測(cè)結(jié)果,掌握觀測(cè)信息,根據(jù)當(dāng)前的觀測(cè)結(jié)果調(diào)整觀測(cè)策略,要求應(yīng)用系統(tǒng)能夠?qū)崟r(shí)反應(yīng)已持久化存儲(chǔ)的觀測(cè)數(shù)據(jù)情況。通過元數(shù)據(jù)信息以及在元數(shù)據(jù)上構(gòu)建的索引進(jìn)行快速檢索是有效提高實(shí)時(shí)性的手段,這就要求不同類型之間的數(shù)據(jù)具有嚴(yán)格的一致性對(duì)應(yīng)關(guān)系。
2.3不一致產(chǎn)生的原因
元數(shù)據(jù)和數(shù)據(jù)分離存儲(chǔ)時(shí),二者之間不一致性主要來源于網(wǎng)絡(luò)分區(qū)和主機(jī)失效等情況,這些情況主要由兩方面原因造成:(1) 存儲(chǔ)系統(tǒng)本身的原因,如網(wǎng)絡(luò)通信故障,主機(jī)軟、硬件故障,磁盤故障等;(2)由于太陽觀測(cè)的實(shí)際觀測(cè)計(jì)劃改變,可能因?yàn)轱L(fēng)速、天氣等因素,即時(shí)調(diào)整觀測(cè)狀態(tài),改變觀測(cè)策略或者停止觀測(cè),人為影響了存儲(chǔ)系統(tǒng)各分離存儲(chǔ)部件之間的同步。
2.4一致性提交協(xié)議
在具有分布式存儲(chǔ)特征的系統(tǒng)中,為了達(dá)成數(shù)據(jù)副本之間的一致性,通常在數(shù)據(jù)提交前進(jìn)行一致性協(xié)商確認(rèn),使用的相關(guān)協(xié)議主要有兩段提交協(xié)議[7]、三段提交協(xié)議[8]、Paxos協(xié)議[9]等,這些協(xié)議在理論和實(shí)踐中都已被成功應(yīng)用[10-11],但是主要用于底層系統(tǒng)之間的原子性和同步,在科學(xué)領(lǐng)域的高層應(yīng)用較少。
2.5一致性基本狀態(tài)
FITS元數(shù)據(jù)與數(shù)據(jù)文件的不一致性表現(xiàn)為:在元數(shù)據(jù)存儲(chǔ)庫中,元數(shù)據(jù)記錄中的關(guān)鍵字段與對(duì)應(yīng)數(shù)據(jù)文件之間的關(guān)系丟失。對(duì)太陽進(jìn)行觀測(cè)時(shí),常用的觀測(cè)模式是放置一臺(tái)前置采集服務(wù)器合成FITS文件,并分別即時(shí)推送元數(shù)據(jù)和數(shù)據(jù)文件到各自的存儲(chǔ)庫中,這種元數(shù)據(jù)和數(shù)據(jù)文件分開存儲(chǔ)的模式被應(yīng)用到太陽觀測(cè)中,例如歐洲南方天文臺(tái)[1],分離存儲(chǔ)模式見圖1。
圖1元數(shù)據(jù)和數(shù)據(jù)存儲(chǔ)時(shí)的分離存儲(chǔ)模式以及FITS數(shù)據(jù)頭作為元數(shù)據(jù)存儲(chǔ)時(shí)和FITS文件數(shù)據(jù)不一致狀態(tài)
Fig.1The model of metadata and data in separated condition; states of inconsistency between FITS header and FITS Data
FITS元數(shù)據(jù)存儲(chǔ)時(shí),普遍的存儲(chǔ)方式是把元數(shù)據(jù)保存到關(guān)系型數(shù)據(jù)庫中,以便能夠滿足數(shù)據(jù)查詢的需要[3]。關(guān)系型數(shù)據(jù)庫中表結(jié)構(gòu)的字段域主要來自FITS頭中的關(guān)鍵字域,在所有保存的字段域中,其中有一條關(guān)鍵的數(shù)據(jù)字段域,例如圖1中取名為 “Refer” 的字段,該域包含了對(duì)當(dāng)前元數(shù)據(jù)記錄對(duì)應(yīng)的數(shù)據(jù)文件引用,當(dāng)查詢獲取該數(shù)據(jù)后,再根據(jù)該條Refer指向進(jìn)一步獲取數(shù)據(jù)文件。這就出現(xiàn)了查詢關(guān)系跨越不同的主機(jī),可能因?yàn)橄到y(tǒng)故障的原因造成引用信息丟失的情況,文中把這種跨越網(wǎng)絡(luò)在不同主機(jī)之間的引用關(guān)系分為4類:
(1)正常狀態(tài):FITS文件元數(shù)據(jù)的引用信息和FITS文件之間存在嚴(yán)格的一致性對(duì)應(yīng);
(2)空狀態(tài):元數(shù)據(jù)存儲(chǔ)在元數(shù)據(jù)存儲(chǔ)庫中,但是未能通過其中的引用在數(shù)據(jù)存儲(chǔ)庫中找到對(duì)應(yīng)的FITS數(shù)據(jù)文件;
(3)孤立狀態(tài):數(shù)據(jù)文件在存儲(chǔ)庫中存在,但是未能在元數(shù)據(jù)存儲(chǔ)庫中找到對(duì)應(yīng)的記錄;
(4)不匹配狀態(tài):數(shù)據(jù)存儲(chǔ)時(shí)產(chǎn)生的不一致對(duì)應(yīng)。
在這4種狀態(tài)中,(2)、(3)、(4)屬于不一致的情況;下面章節(jié)主要針對(duì)這些情況進(jìn)行詳細(xì)分析。
2.6兩類狀態(tài)的分布式存儲(chǔ)分析
文中2.1節(jié)提到的數(shù)據(jù)存儲(chǔ)模式可以進(jìn)一步抽象成如下圖2中(b)和(c)。圖2中的(a)是FITS元數(shù)據(jù)和FITS數(shù)據(jù)文件存儲(chǔ)在同一主機(jī)上的情況;(b)和(c)是(a)存儲(chǔ)模式的擴(kuò)展,是在網(wǎng)絡(luò)環(huán)境下的一種抽象表示,數(shù)據(jù)之間的不一致性較(a)更容易發(fā)生。文中主要以(b)和(c)的情況作為研究對(duì)象。在(b)和(c)中元數(shù)據(jù)被存儲(chǔ)到元數(shù)據(jù)存儲(chǔ)庫(MS)中,F(xiàn)ITS數(shù)據(jù)文件被存儲(chǔ)到數(shù)據(jù)存儲(chǔ)庫(DS)中,數(shù)據(jù)存儲(chǔ)庫和元數(shù)據(jù)存儲(chǔ)庫是對(duì)物理上獨(dú)立的一臺(tái)或多臺(tái)服務(wù)器的抽象。
圖2元數(shù)據(jù)和數(shù)據(jù)分離存儲(chǔ)時(shí)的兩種不一致狀態(tài)
Fig.2Two states of inconsistency when the metadata and data are stored separately
兩類存儲(chǔ)數(shù)據(jù)的分離增加了整個(gè)存儲(chǔ)系統(tǒng)的復(fù)雜性,這兩類數(shù)據(jù)之間可能因?yàn)榇鎯?chǔ)介質(zhì)、網(wǎng)絡(luò)的異常導(dǎo)致數(shù)據(jù)存儲(chǔ)之間的一致性問題,本文把存儲(chǔ)介質(zhì)和網(wǎng)絡(luò)異常統(tǒng)一看成是前置機(jī)和元數(shù)據(jù)、數(shù)據(jù)服務(wù)器之間不能進(jìn)行數(shù)據(jù)交換的情況。在此條件下,對(duì)于(b)和(c)兩種情況,假設(shè)元數(shù)據(jù)存儲(chǔ)庫和數(shù)據(jù)存儲(chǔ)庫能夠提供足夠的存儲(chǔ)帶寬和數(shù)據(jù)讀寫速度支持前置采集服務(wù)器產(chǎn)生的數(shù)據(jù)流的存儲(chǔ),那么在元數(shù)據(jù)和原始數(shù)據(jù)發(fā)生異常的時(shí)候,導(dǎo)致前置采集服務(wù)器不能正確分辨元數(shù)據(jù)存儲(chǔ)庫和數(shù)據(jù)存儲(chǔ)庫的狀態(tài),這種異常情況在實(shí)際環(huán)境中描述如下:
(1)如圖2中的(b)所示,在前置采集服務(wù)器要求進(jìn)行數(shù)據(jù)(元數(shù)據(jù)和數(shù)據(jù))存儲(chǔ)時(shí),與元數(shù)據(jù)存儲(chǔ)庫失去聯(lián)系,但是與數(shù)據(jù)存儲(chǔ)庫之間的數(shù)據(jù)通信能夠正常進(jìn)行,在這種情況下,將丟失FITS元數(shù)據(jù),由于沒有丟失原始數(shù)據(jù),元數(shù)據(jù)中FITS頭的數(shù)據(jù)收集工作可以通過其他措施進(jìn)行維護(hù)。
(2)如圖2中的(c)所示,在前置采集服務(wù)器要求進(jìn)行數(shù)據(jù)(元數(shù)據(jù)和數(shù)據(jù))存儲(chǔ)時(shí),與數(shù)據(jù)存儲(chǔ)庫服務(wù)器出現(xiàn)數(shù)據(jù)通信異常,但是能夠與元數(shù)據(jù)存儲(chǔ)庫服務(wù)器進(jìn)行通信。這種情況發(fā)生時(shí),存儲(chǔ)元數(shù)據(jù)將沒有意義。
根據(jù)觀測(cè)數(shù)據(jù)的重要性,討論(1):在不進(jìn)行任何一致性數(shù)據(jù)保障的情況下,假設(shè)某一CCD觀測(cè)通道觀測(cè)速率為v(fps),每幀數(shù)據(jù)大小為φ(megabyte),從某一時(shí)刻τ開始,前置采集服務(wù)器與元數(shù)據(jù)存儲(chǔ)庫之間的通信發(fā)生故障,經(jīng)過φ秒后恢復(fù),此時(shí)原始數(shù)據(jù)將存儲(chǔ)v×φ張F(tuán)ITS圖片,這些數(shù)據(jù)在元數(shù)據(jù)庫中未能找到對(duì)應(yīng)的記錄,通過元數(shù)據(jù)進(jìn)行實(shí)時(shí)數(shù)據(jù)查詢時(shí),就出現(xiàn)了數(shù)據(jù)假丟失的現(xiàn)象。
2.7實(shí)例研究
為了說明(1)的情況,以目前國內(nèi)最大的太陽光學(xué)望遠(yuǎn)鏡1 m紅外太陽望遠(yuǎn)鏡[12](New Vacuum Solar Telescope, NVST)的數(shù)據(jù)采集存儲(chǔ)為例,1 m太陽望遠(yuǎn)鏡采用多通道多波段的數(shù)據(jù)采集模式,各個(gè)通道按照預(yù)定的觀測(cè)計(jì)劃,在合適的觀測(cè)條件下產(chǎn)生數(shù)據(jù)的速率見表1。
表1 1 m太陽望遠(yuǎn)鏡預(yù)定觀測(cè)數(shù)據(jù)的速率①*①實(shí)際觀測(cè)速率受觀測(cè)條件制約
1 m太陽望遠(yuǎn)鏡的存儲(chǔ)系統(tǒng)的設(shè)計(jì)為了滿足高性能存儲(chǔ)目標(biāo),將采用元數(shù)據(jù)和原始數(shù)據(jù)分離的數(shù)據(jù)存儲(chǔ)模式。實(shí)時(shí)數(shù)據(jù)觀測(cè)監(jiān)視系統(tǒng)中的實(shí)時(shí)數(shù)據(jù)查詢模塊基于元數(shù)據(jù)查詢,由于意外故障(網(wǎng)絡(luò)異常、存儲(chǔ)異常、人為原因等)導(dǎo)致前置機(jī)與數(shù)據(jù)存儲(chǔ)的元數(shù)據(jù)庫不能通信而發(fā)生(1)的情況,經(jīng)過φ秒恢復(fù),那么按照表1的數(shù)據(jù)存儲(chǔ)速率,將產(chǎn)生如表2的不一致數(shù)據(jù)文件。
通過表2可以看出,因?yàn)?0 s的短暫故障,系統(tǒng)將產(chǎn)生1 321個(gè)狀態(tài)不一致的數(shù)據(jù)文件,在這種情況下,基于對(duì)元數(shù)據(jù)的實(shí)時(shí)查詢和檢索[3]就不能正確檢索到這些數(shù)據(jù)文件,甚至可能影響正常的觀測(cè)活動(dòng)。
3.1簡(jiǎn)單的一致性處理
由于太陽觀測(cè)的實(shí)時(shí)、高性能要求,可以使用消息傳遞來協(xié)商保持一致性,在不考慮FITS文件頭和FITS數(shù)據(jù)分布存儲(chǔ)副本的情況,通常保證一致性的做法主要有如圖3的4種方式,下面結(jié)合天文數(shù)據(jù)存儲(chǔ)的特征,分析這4種方式的優(yōu)缺點(diǎn)。
表2原始數(shù)據(jù)和元數(shù)據(jù)在發(fā)生故障時(shí),系統(tǒng)產(chǎn)生的不一致數(shù)據(jù)
Table 2 The inconsistent data when systems failed
(1)模型(a)
使用異步非阻塞的方式存儲(chǔ)FITS頭和FITS文件,二者之間不存在一致性的協(xié)商手段,一致性建立在假設(shè)的基礎(chǔ)上,主要依賴于主機(jī)的可靠性,所以一旦出現(xiàn)異常,二者之間的一致性難以保障。
(2)模型(b)
FITS頭的存儲(chǔ)必須等到FITS數(shù)據(jù)存儲(chǔ)后,并接收到FITS文件存儲(chǔ)完成的消息后才能進(jìn)行FITS頭的存儲(chǔ),當(dāng)FITS頭存儲(chǔ)完成后再通知數(shù)據(jù)存儲(chǔ)進(jìn)程,元數(shù)據(jù)存儲(chǔ)完畢,就可以進(jìn)行下一個(gè)FITS文件的存儲(chǔ)。
該方式中 “Header” 和 “Data” 的位置可以互換,先存儲(chǔ)FITS頭的存儲(chǔ)過程和先存儲(chǔ)FITS文件類似。區(qū)別在于,先存儲(chǔ)FITS文件,即使在FITS頭不能安全保存到存儲(chǔ)介質(zhì)的情況下,仍然可以通過其他方式在事后對(duì)未進(jìn)行標(biāo)記的數(shù)據(jù)掃描提取FITS頭信息彌補(bǔ)。這是一種較為安全的存儲(chǔ)方式,但是實(shí)時(shí)性會(huì)受到影響。
圖3FITS文件在線存儲(chǔ)使用消息傳遞保持一致性的幾種模式
Fig.3Several models of consistency guaranteed by message delivering in online FITS Storage
(3)模型(c)
FITS頭和FITS文件按照異步非阻塞的方式進(jìn)行,在二者存儲(chǔ)后再進(jìn)行通信確認(rèn)一致。
(4)模型(d)
該模型只存儲(chǔ)FITS文件,待FITS文件持久化存儲(chǔ)在數(shù)據(jù)存儲(chǔ)庫后,再提取FITS頭部分,把它存儲(chǔ)到元數(shù)據(jù)存儲(chǔ)庫中,這個(gè)模式是通常的離線存儲(chǔ)方式。文[2]和文[3]中的離線收集文件頭方式可以看成是該模式的特殊情況。
3.2兩段提交協(xié)議
本文使用成熟的兩段提交協(xié)議做數(shù)據(jù)服務(wù)之間的同步,文[13]提出了一種分布的數(shù)據(jù)服務(wù)器之間的同步方法。兩段提交協(xié)議被認(rèn)為是在分布式環(huán)境下,保證原子性事務(wù)和數(shù)據(jù)之間一致性的有效方案,能夠容忍進(jìn)程、網(wǎng)絡(luò)和通信的失效[7]。
為了便于表述,把太陽觀測(cè)數(shù)據(jù)存儲(chǔ)時(shí)的各個(gè)參與部分按照兩段提交的角色進(jìn)行劃分如圖4:前置采集服務(wù)器充當(dāng)協(xié)調(diào)者(Coordinator)的角色,元數(shù)據(jù)存儲(chǔ)庫和數(shù)據(jù)存儲(chǔ)庫充當(dāng)成員(Cohorts)的角色,三者之間通過兩段提交協(xié)議協(xié)商是否對(duì)前置采集服務(wù)器發(fā)出的存儲(chǔ)數(shù)據(jù)進(jìn)行一致性確認(rèn),圖4是在數(shù)據(jù)存儲(chǔ)系統(tǒng)的一個(gè)基本拓?fù)浣Y(jié)構(gòu)和角色劃分。
該協(xié)議存在節(jié)點(diǎn)之間因?yàn)閰f(xié)商一致性而等待,以至于死鎖導(dǎo)致系統(tǒng)的處理過程無法進(jìn)行的情況,這就需要引入超時(shí)機(jī)制解決這些問題[14]。
3.3兩段提交協(xié)議的具體實(shí)現(xiàn)
兩段提交協(xié)議應(yīng)用到高速太陽觀測(cè)的環(huán)境下,由于高速數(shù)據(jù)存儲(chǔ)性能的要求,在實(shí)際使用中沒有達(dá)到協(xié)商一致的情況,盡量減少寫日志操作,表3(a)和表3(b)是使用改進(jìn)的兩階段提交協(xié)議[15]結(jié)合觀測(cè)系統(tǒng)的存儲(chǔ)應(yīng)用算法描述,表3(a)描述了協(xié)調(diào)者的工作流程,對(duì)應(yīng)表3(b)為參與者的工作流程。
表3(a) 協(xié)調(diào)者的工作流程
表3(b) 參與者的工作流程
圖4兩段提交協(xié)議應(yīng)用到太陽數(shù)據(jù)存儲(chǔ)中的角色劃分
Fig.4The roles of 2PC in the use of solar data storage
3.4超時(shí)時(shí)間選擇
兩段提交協(xié)議用于保證兩類數(shù)據(jù)之間的一致性問題,為了兼顧實(shí)時(shí)的數(shù)據(jù)存儲(chǔ)性能,合理選擇超時(shí)時(shí)間能夠減少引入該算法后對(duì)性能造成的影響,下面通過單緩沖數(shù)據(jù)存儲(chǔ)的方式分析超時(shí)時(shí)間的選擇。
假設(shè)CCD產(chǎn)生的速率為ν(fps),每幀F(xiàn)ITS圖像大小為μ(MB),在數(shù)據(jù)存儲(chǔ)過程中使用了一個(gè)由n塊內(nèi)存區(qū)域構(gòu)成的單緩沖池輔助數(shù)據(jù)讀寫,每塊緩沖大小為了方便討論,設(shè)定為FITS圖像的大小為μ(MB),那么可供使用的緩沖池的容量大小為S=n×μ(MB),采集的數(shù)據(jù)填滿其中一塊緩沖的時(shí)間消耗為
(1)
系統(tǒng)同時(shí)可以使用這個(gè)單緩沖的填充時(shí)間充當(dāng)超時(shí)等待的時(shí)間,當(dāng)?shù)?張F(tuán)ITS圖像存儲(chǔ)時(shí),緩沖中沒有任何待存儲(chǔ)數(shù)據(jù),則該FITS圖像可以等待的時(shí)間為n×τ,第2張F(tuán)ITS圖像存儲(chǔ)時(shí),可以等待(n-1) ×τ,以此類推,那么平均超時(shí)等待時(shí)間為
(2)
通過上述分析,Δ這個(gè)時(shí)間界限就是兩段提交算法中各參與部件間一致性的協(xié)商時(shí)間,如果時(shí)間大于這個(gè)值,將影響數(shù)據(jù)存儲(chǔ)的性能,甚至丟失采集的數(shù)據(jù)。同樣的分析方法可以應(yīng)用在多緩沖情況下超時(shí)時(shí)間的設(shè)計(jì)中。
結(jié)合上文的討論,為了驗(yàn)證兩段提交協(xié)議在采集數(shù)據(jù)過程中的一致性要求,設(shè)計(jì)了一個(gè)原型系統(tǒng)驗(yàn)證其可行性。原型系統(tǒng)使用Java1.8,Rpc協(xié)議使用Thrft,元數(shù)據(jù)持久層使用MongoDB,所有的運(yùn)行平臺(tái)均在CentOS6.6上。根據(jù)上文分析,對(duì)不同采集速率的要求,在給定128 MB緩存的情況下,做了如下超時(shí)時(shí)間的理論參考,根據(jù)這個(gè)參考,設(shè)計(jì)的實(shí)驗(yàn)結(jié)果如表4,一致性驗(yàn)證使用抽樣的方法。
表4中通過128 MB單緩存得到的各個(gè)系統(tǒng)參數(shù),最終通過(2)式可以得出最佳的超時(shí)時(shí)間。表示在該時(shí)間內(nèi),兩段提交協(xié)議可以協(xié)商是否保持一致的時(shí)間,如果不能在該時(shí)間內(nèi)得到一致性結(jié)果,就把該次采集的文件標(biāo)記為未一致。結(jié)合兩段提交的實(shí)現(xiàn),通過原型得到如表5中重要過程的存儲(chǔ)性能??梢钥吹綌?shù)據(jù)服務(wù)器和元數(shù)據(jù)服務(wù)器的第一階段投票時(shí)間為14 ms,這段時(shí)間對(duì)于數(shù)據(jù)存儲(chǔ)的時(shí)間TDS來說可以忽略不計(jì),而近似于FITS頭的存儲(chǔ)時(shí)間TMS,這主要由于測(cè)試使用的FITS頭只有12個(gè)字段,時(shí)間主要用于部分?jǐn)?shù)據(jù)的存儲(chǔ)。
可以看出超時(shí)時(shí)間兩段提交過程中,等待一致性的時(shí)間遠(yuǎn)遠(yuǎn)小于超時(shí)時(shí)間[(VoteDS+VoteMS)/Δ],只占2%、2.4%和0.3%,結(jié)合上文分析,超時(shí)時(shí)間的設(shè)置符合設(shè)計(jì)要求,另外給出了64 MB~512 MB之間的超時(shí)時(shí)間(表6),可以看出在當(dāng)前實(shí)驗(yàn)環(huán)境下,滿足設(shè)計(jì)要求。
表4 超時(shí)時(shí)間128 MB緩存、不同速率下的設(shè)計(jì)
表5實(shí)測(cè)兩段提交關(guān)鍵過程性能
Table 5The performance of key stages in TPC
μ/MBVoteDS/msVoteMS/msTDS/msTMS/ms21.00778092.0915.738.007746844.8215.820.6377141.9115.27
表6不同緩存大小下的超時(shí)時(shí)間
Table 6The timeout period in different cache sizes
μ/MBS/MB64/MB128/MB256/MB512/MB21.000.400.711.322.548.000.310.581.122.210.632.074.128.2116.40
綜上,通過原型系統(tǒng)的實(shí)際驗(yàn)證,從實(shí)驗(yàn)結(jié)果來看,引入兩段提交協(xié)議的好處能夠最大限度地保障天文觀測(cè)數(shù)據(jù)存儲(chǔ)中的不同數(shù)據(jù)的一致性,其協(xié)商的耗時(shí)對(duì)于數(shù)據(jù)存儲(chǔ)來說幾乎可以忽略不計(jì),但在一定程度上,對(duì)于FITS頭字段較少的元數(shù)據(jù)存儲(chǔ),需要考慮。另外超時(shí)時(shí)間的設(shè)置通過理論結(jié)合實(shí)驗(yàn)可以看出,其設(shè)置方式合理。
FITS元數(shù)據(jù)和FITS文件數(shù)據(jù)的分離存儲(chǔ)改變了數(shù)據(jù)的訪問方式,在應(yīng)用程序訪問FITS文件時(shí),首先從元數(shù)據(jù)庫獲取FITS數(shù)據(jù)文件的引用信息,然后再根據(jù)這些引用信息,從FITS數(shù)據(jù)服務(wù)器獲得數(shù)據(jù)文件,這種數(shù)據(jù)存儲(chǔ)模式在提高存儲(chǔ)和查詢性能的同時(shí)也帶來了這兩類數(shù)據(jù)之間的不一致性問題。在高速數(shù)據(jù)存儲(chǔ)情況下,這個(gè)問題若不加以考慮,可能因?yàn)榇鎯?chǔ)節(jié)點(diǎn)、網(wǎng)絡(luò)等故障導(dǎo)致大量數(shù)據(jù)出現(xiàn)不一致的狀態(tài),造成FITS數(shù)據(jù)文件的假丟失現(xiàn)象。為了能夠兼顧存儲(chǔ)性能和數(shù)據(jù)之間的一致性,本文使用了兩段提交協(xié)議來協(xié)商這種分布式存儲(chǔ)下兩類數(shù)據(jù)的一致性。使用FITS數(shù)據(jù)存儲(chǔ)的緩沖時(shí)間做兩段提交協(xié)議的協(xié)商超時(shí)時(shí)間,這樣既可以協(xié)商兩類數(shù)據(jù)之間的一致性關(guān)系,又能保證高速數(shù)據(jù)存儲(chǔ)系統(tǒng)的存儲(chǔ)性能。
[1]Vera I, Dobrzycki A, Vuong M H, et al. Centralized FITS metadata handling framework at ESO[C]// Astronomical Data Analysis Software and Systems XX. ASP Conference Proceedings. 2011: 33-36.
[2]Goodrich B D, Wampler S B, Hubbard J R. Gathering headers in a distributed environment[C]// Prcoeedings of SPIE. 2008.
[3]崔辰州, 李文, 于策, 等. FITS 數(shù)據(jù)文件的檢索和訪問[J]. 天文研究與技術(shù)——國家天文臺(tái)臺(tái)刊, 2008, 5(2): 116-123.
Cui Chenzhou, Li Wen, Yu Ce, et al. Search an location of FITS data files[J]. Astronomical Research & Technology——Publications of National Astronomical Observatories of China, 2008, 5(2): 116-123.
[4]Murphy T, Lamb P, Owen C, et al. Data storage, processing, and visualization for the Australia telescope compact array[J]. Publications of the Astronomical Society of Australia, 2006, 23(1): 25-32.
[5]Blatnik M, Clegg A W, Beaudet C, et al. Mining the GBT metadata archive: statistics on radio frequency use, 2002-2010[C]// Bulletin of the American Astronomical Society. 2011.
[6]Mann B. Some data derivation and provenance issues in astronomy[C]// Workshop on Data Derivation and Provenance. 2002.
[7]Bernstein P A, Hadzilacos V, Goodman N. Concurrency control and recovery in database systems[M]. New York: Addison-Wesley, 1987.
[8]Skeen D, Stonebraker M. A formal model of crash recovery in a distributed system[J]. IEEE Transactions on Software Engineering, 1983, SE-9(3): 219-228.
[9]Lamport L. The part-time parliament[J]. ACM Transactions on Computer Systems (TOCS), 1998, 16(2): 133-169.
[10]Bernstein P A, Newcomer E. Principles of transaction processing[M]. San Francisco: Morgan Kaufmann, 2009.
[11]Weikum G, Vossen G. Transactional information systems: theory, algorithms, and the practice of concurrency control and recovery[M]. San Francisco: Morgan Kaufmann, 2001.
[12]Liu Zhong, Xu Jun. 1-meter near-infrared solar telescope[C]// First Asia-Pacific Solar Physics Meeting ASI Conference Series. 2011: 9-17.
[13]董立巖, 毛銳, 余宜誠, 等. 基于分布式多服務(wù)系統(tǒng)的數(shù)據(jù)同步方法[J]. 吉林大學(xué)學(xué)報(bào): 理學(xué)版, 2011, 49(4): 745-749.
Dong Liyan, Mao Rui, Yu Yicheng, et al. Synchronization method based on distributed multi-service system[J]. Journal of Jilin University: Science Edition, 2011, 49(4): 745-749.
[14]李光, 李性存. 分布式事務(wù)處理系統(tǒng)中超時(shí)值的一種計(jì)算方法[J]. 計(jì)算機(jī)學(xué)報(bào), 1990, 13(11): 824-830.
Li Guang, Li Xincun. A method for estimating timeout value in distributed transaction processing system[J]. Chinese Journal of Computers, 1990, 13(11): 824-830.
[15]于紅, 高艷萍, 郭連喜. 改進(jìn)的兩階段提交協(xié)議[J]. 大連水產(chǎn)學(xué)院學(xué)報(bào), 2005, 20(4): 335-339.
Yu Hong, Gao Yanping, Guo Lianxi. Improved two-phase commit protocol[J]. Journal of Dalian Fisheries University, 2005, 20(4): 335-339.
Research on the Consistency of FITS Data in the Process of Distributed Real-time Storage
Liang Bo1, Chen Tengda1, Yu Konglin1, Liu Yingbo1,2, Deng Hui1, Liu Cuiyin1, Wang Feng1,2
(1. Computer Technology Application Key Laboratory of Yunnan Province, Kunming University of Science and Technology,Chenggong 650500, China; 2. Yunnan Observatories, Chinese Academy of Sciences,Kunming 650011, China, Email: wangfeng@cnlab.net)
In the process of a distributed high-speed real-time storage of data from a large solar telescope, inconsistency occurs between FITS header, a kind of meta-data, and FITS data files, which causes applications unable to retrieve correct FITS data files when applying the index information built on the meta-data. In this paper, models of consistency between the above-mentioned two types of data are studied during high-speed data storage; and the mechanism and solutions are summarized to achieve consistency for real-time data storage. A two-phase commit protocol (2PC) is proposed to ensure consistency, and 2PC algorithm implementation in high-speed data storage is given. The present study on different applications of data storage, with its unique research process and methods, can serve as
to other fields of scientific study.Key words: FITS, Meta-data; Consistency; Two phase commit protocol
國家自然科學(xué)基金 (U1231205); 云南省應(yīng)用基礎(chǔ)研究基金重點(diǎn)項(xiàng)目 (2013FA013, 2013FA032) 資助.
2016-03-06;
2016-05-11
梁波,男,講師. 研究方向:計(jì)算機(jī)數(shù)據(jù)庫技術(shù). Email: liangbo@cnlab.net
王鋒,男,教授. 研究方向:分布式數(shù)據(jù)存儲(chǔ)與計(jì)算、物聯(lián)網(wǎng)技術(shù)、云計(jì)算等. Email: wangfeng@cnlab.net
TP39
A
1672-7673(2016)04-0489-09
CN 53-1189/PISSN 1672-7673