董一兵,高景春,劉勝國,毛國良,孫貴成,劉 新
地震計和地震數(shù)據(jù)采集器是測震臺網(wǎng)技術(shù)系統(tǒng)的關(guān)鍵設(shè)備,它們的運行狀態(tài)直接決定著臺網(wǎng)的監(jiān)測質(zhì)量。在運行過程中,受到外部環(huán)境 (供電、GPS等)和儀器自身 (元器件的物理性質(zhì)、系統(tǒng)軟件等)等多種因素的影響,地震計和地震數(shù)據(jù)采集器可能出現(xiàn)一些異常情況,例如,地震計發(fā)生零位偏移,數(shù)據(jù)采集器出現(xiàn)時間錯誤等。這些異常如果得不到及時處置,輕則影響觀測數(shù)據(jù)的質(zhì)量,重則導(dǎo)致數(shù)據(jù)喪失使用價值。目前主流的數(shù)據(jù)采集器均提供了健康狀態(tài)信息查詢服務(wù),用戶可以通過專用客戶端軟件查詢數(shù)采的電壓、溫度、鐘差、地震計機械零位等狀態(tài)參數(shù)?,F(xiàn)有的研究成果并未充分利用數(shù)采的健康狀態(tài)服務(wù)(陳吉鋒等,2012)。針對這種現(xiàn)實需求,我們?yōu)闇y震臺網(wǎng)設(shè)計、開發(fā)了一套測震儀器健康狀態(tài)數(shù)據(jù)交換軟件平臺。針對不同類型數(shù)據(jù)采集器輸出健康狀態(tài)信息方式的差異,分門別類地設(shè)計開發(fā)了客戶端程序,實現(xiàn)了與多種數(shù)采的網(wǎng)絡(luò)數(shù)據(jù)通信功能。在開發(fā)過程中,引入開源的消息中間件ActiveMQ作為統(tǒng)一交換平臺 (Snyder,2011),為儀器健康狀態(tài)的交換共享提供了統(tǒng)一的數(shù)據(jù)接口,便于實現(xiàn)系統(tǒng)與新業(yè)務(wù)的無縫集成,增強了系統(tǒng)的彈性和可擴展性。整套方案具有性能優(yōu)異、易于管理和擴展的特點,具有良好的推廣應(yīng)用前景。
測震儀器的健康狀態(tài) (State Of Health,簡稱SOH),是關(guān)于儀器運行狀態(tài)的信息,由數(shù)據(jù)采集器輸出的一系列物理量及其取值來描述。目前,在各區(qū)域測震臺網(wǎng)應(yīng)用比較普遍的儀器包括:港震機電的EDAS24系列數(shù)據(jù)采集器和BBVS系列地震計,Guralp的CMG-DM24數(shù)據(jù)采集器和CMG-3ESPC地震計,Kinemtrics的Q330系列數(shù)據(jù)采集器和STS系列地震計等。這些儀器廠商對SOH信息的定義、編碼方式和傳輸協(xié)議均有所不同。本著求同存異的原則,我們初步擬定了11個比較有共性的SOH參數(shù),分別是:數(shù)據(jù)采集器的供電電壓、輸出電壓、電瓶電壓、機箱溫度、時間誤差、頻率誤差、內(nèi)存總空間、內(nèi)存可用空間,地震計A的垂直向零位、北南向零位、東西向零位。
系統(tǒng)由3個松散耦合的功能模塊構(gòu)成:①SOH接收與發(fā)布模塊,② ActiveMQ消息服務(wù)器,③SOH訂閱與應(yīng)用模塊。其中,模塊 ① 的功能是:與多部數(shù)據(jù)采集器建立并發(fā)連接,定時接收SOH數(shù)據(jù),并通過ActiveMQ的消息隊列進行發(fā)布。模塊②的功能是:作為統(tǒng)一交換平臺,管理SOH消息隊列,是系統(tǒng)實現(xiàn)分布式應(yīng)用的關(guān)鍵環(huán)節(jié)。模塊③的功能是:訂閱SOH消息,實現(xiàn)自定義的業(yè)務(wù)應(yīng)用。
系統(tǒng)應(yīng)滿足測震臺網(wǎng)對應(yīng)用軟件的可靠性、可擴展性、可移植性和安全性等方面的要求。
系統(tǒng)運行的網(wǎng)絡(luò)環(huán)境如圖1所示。模塊①部署在SOH應(yīng)用服務(wù)器上,模塊②部署在ActiveMQ服務(wù)器上,模塊③部署在SOH訂閱客戶端上。系統(tǒng)運行約束見表1。
圖1 系統(tǒng)網(wǎng)絡(luò)環(huán)境圖Fig.1 System network environment
表1 系統(tǒng)運行約束表Tab.1 Restriction table of system running environment
在程序設(shè)計過程中,主要用到了以下技術(shù):
(1)Java TCP/IP Socket編程技術(shù) (Fall,Stevens,2012;Calvert,Donahoo,2008)。目前,不同儀器廠家對數(shù)據(jù)采集器網(wǎng)絡(luò)通信協(xié)議的實現(xiàn)方式不同,例如,EDAS24系列數(shù)據(jù)采集器支持TCP通信協(xié)議;CMG-DM24可利用數(shù)據(jù)通信單元擴展實現(xiàn)UDP通信協(xié)議;而Q330HRS的Baler單元則提供了用HTTP協(xié)議傳輸健康狀態(tài)信息的服務(wù)。針對這種差異性,我們的解決方案是為每一種儀器編寫相應(yīng)的客戶端類,實現(xiàn)通信連接的維護、報文分組的分類解析等功能。
(2)Java并發(fā)編程技術(shù) (Goetz et al,2012)。每個地震區(qū)域臺網(wǎng)中心都下屬若干個地震臺站,要同時維護與多個臺站的通信連接,有兩種實現(xiàn)方式——多進程方式和多線程方式。在操作系統(tǒng)中,進程是一個重量級的對象,每一個進程都獨占一部分系統(tǒng)資源,線程是輕量級對象,同一進程內(nèi)的多個線程間共享該進程所保有的資源 (Silberschats et al,2009)。基于易于實現(xiàn)和優(yōu)化性能的考慮,我們采用多線程方式來實現(xiàn)與多臺站的并發(fā)通信連接。
(3)Java消息服務(wù) (Java Messaging Service,簡稱JMS)。JMS是Java平臺上有關(guān)面向消息中間件(Message Oriented Middleware)的技術(shù)規(guī)范(Monson et al,2009)。ActiveMQ是一個完全支持JMS1.1的JMS Provider實現(xiàn)。在系統(tǒng)中,我們利用JMS與ActiveMQ通信,實現(xiàn)SOH消息的交換。
系統(tǒng)的框架結(jié)構(gòu)如圖2所示。其中,SOH接收與發(fā)布模塊由各類數(shù)采的客戶端程序和SOH發(fā)布程序所構(gòu)成。
圖2 系統(tǒng)框架結(jié)構(gòu)圖Fig.2 Fram structure of the system
系統(tǒng)完整的業(yè)務(wù)流程可歸納為以下幾個主要步驟:
①系統(tǒng)初始化;
②數(shù)采客戶端程序與數(shù)采進行通信,對接收到的報文分組進行解析,將解出的SOH數(shù)據(jù)交給SOH發(fā)布程序;
③SOH發(fā)布程序?qū)OH數(shù)據(jù)格式化為SOH消息,并交給AMQ消息服務(wù)器;
④SOH訂閱與顯示模塊從AMQ消息服務(wù)器訂閱SOH消息,并進行處理;
⑤繼續(xù)執(zhí)行步驟2。
在開發(fā)SOH接收與發(fā)布模塊時,需先行分析儀器的通信協(xié)議和數(shù)據(jù)格式,掌握每一種數(shù)采輸出SOH數(shù)據(jù)的內(nèi)容和方式,以此為基礎(chǔ)來設(shè)計業(yè)務(wù)邏輯。模塊將按照配置文件的內(nèi)容進行初始化,配置文件采用XML格式,詳細說明見表2。
表2 配置文件說明表Tab.2 Description of configuration file
2.3.1 數(shù)采客戶端的設(shè)計與實現(xiàn)
數(shù)采客戶端的主要功能是:與數(shù)采進行通信、接收SOH數(shù)據(jù)。下面分別介紹EDAS24系列數(shù)據(jù)采集器、CMG-DM24以及Q330HRS客戶端程序的設(shè)計和實現(xiàn)技術(shù)。
(1)EDAS24系列數(shù)據(jù)采集器 (EDAS-24GN和EDAS-24IP)利用TCP協(xié)議傳輸SOH數(shù)據(jù)。程序在處理與數(shù)采的通信連接時,采用的是長連接的方式,即在成功建立起通信連接之后長期保持該連接。之所以采用這種方式,主要基于以下考慮:TCP連接的建立和釋放過程需要占用一定的系統(tǒng)資源 (謝希仁,2008),頻繁的連接和釋放操作將給數(shù)采帶來較大的負擔(dān),對數(shù)采的穩(wěn)定運行造成一定影響。經(jīng)過實際測試,長連接方式比短連接方式更加安全、可靠,有利于保障數(shù)采的正常穩(wěn)定運行。在獲取SOH數(shù)據(jù)時,采用請求/響應(yīng)方式,即客戶端程序向數(shù)采發(fā)送查詢請求,數(shù)采輸出響應(yīng)。EDAS24系列數(shù)采客戶端的業(yè)務(wù)流程如下:
①程序初始化;
②測試數(shù)采網(wǎng)絡(luò)地址的可達性;
③與數(shù)采建立控制連接,獲得數(shù)據(jù)端口;
④與數(shù)采建立數(shù)據(jù)連接;
⑤通過數(shù)據(jù)連接發(fā)送查詢幀,獲得響應(yīng)幀,從中解析出SOH數(shù)據(jù);
⑥將SOH數(shù)據(jù)交給SOH發(fā)布程序;
⑦繼續(xù)執(zhí)行步驟②。
(2)CMG-DM24數(shù)據(jù)采集器的TCP/IP通信功能需要借助DCM來實現(xiàn)。DCM通常利用UDP協(xié)議傳輸數(shù)據(jù)。與TCP不同,UDP是一種無連接的服務(wù),與EDAS24系列數(shù)采所采用的通信方式相比,Guralp的通信方式使得數(shù)采不必花費額外的開銷來維護通信連接、保證通信質(zhì)量,在通信鏈路質(zhì)量良好的情況下,這有利于數(shù)采的穩(wěn)定運行,同時也簡化了客戶端程序的業(yè)務(wù)邏輯。它的SOH數(shù)據(jù)由狀態(tài)流和地震計零位流分別傳輸,其中,用ID“00”來標(biāo)識狀態(tài)流,數(shù)據(jù)采用ASCII格式編碼;用ID“M8”、“M9”和“MA”分別標(biāo)識地震計的垂直向、北南向和東西向零位流,數(shù)據(jù)采用GCF格式編碼。與EDAS24系列不同的是,CMG-DM24不支持通過請求/響應(yīng)方式獲取SOH數(shù)據(jù)的方式,故在程序設(shè)計時只能采用數(shù)采主動傳輸、客戶端程序被動接收的方式。CMG-DM24客戶端的業(yè)務(wù)流程如下:
①程序初始化;
②測試DCM網(wǎng)絡(luò)地址的可達性;
③將DCM通信端口與本地端口相綁定;
④接收DCM的UDP數(shù)據(jù)報,從中解析出SOH數(shù)據(jù);
⑤將SOH數(shù)據(jù)交給SOH發(fā)布程序;
⑥繼續(xù)執(zhí)行步驟②。
(3)Q330HRS由數(shù)據(jù)采集器 (Q330S)和通信單元 (Baler)兩部分集成。其中,Baler提供了通過HTTP協(xié)議定時傳輸SOH數(shù)據(jù)的服務(wù)。HTTP協(xié)議定義了Web服務(wù)器和Web瀏覽器之間通信的規(guī)則 (Gourley et al,2002),我們可以利用這個服務(wù)來設(shè)計客戶端程序。Q330HRS客戶端的業(yè)務(wù)流程如下:
①程序初始化;
②測試Baler網(wǎng)絡(luò)地址的可達性;
③與 Baler建立 HTTP Socket連接,解析出SOH數(shù)據(jù);
④將SOH數(shù)據(jù)交給SOH發(fā)布程序;
⑤繼續(xù)執(zhí)行步驟②。
2.3.2 SOH發(fā)布程序的設(shè)計與實現(xiàn)
SOH發(fā)布程序的主要功能是:按照JMS規(guī)范,將接收到的SOH數(shù)據(jù)格式化為SOH消息,并將其傳遞給ActiveMQ消息服務(wù)器。程序在處理與ActiveMQ的通信連接時,采用的是長連接的方式。SOH消息包括消息屬性和消息體。其中,消息屬性的說明見表3,消息體采用XML格式,詳細說明見表4。
表3 SOH消息屬性說明表Tab.3 Description of SOH message properties
表4 SOH消息體說明表Tab.4 Description of SOH message body
為了對系統(tǒng)方案進行全面的測試,我們開發(fā)了測震臺站儀器狀態(tài)監(jiān)視程序,將其作為系統(tǒng)的SOH訂閱和應(yīng)用模塊。在河北測震臺網(wǎng)搭建了測試環(huán)境 (表5),接入了30個運行中的測震臺站。經(jīng)過若干個月的試運行和觀察總結(jié),我們認為系統(tǒng)整體表現(xiàn)穩(wěn)定,功能和性能均達到了預(yù)期的設(shè)計要求,證明了系統(tǒng)方案的可行性。圖3是該監(jiān)視程序運行時的截圖。
表5 系統(tǒng)測試環(huán)境說明表Tab.5 Description of sysytem testing environment
圖3 測震臺站儀器狀態(tài)監(jiān)視程序Fig.3 Monitoring program of the state of seismic station instrument
介紹了測震儀器健康狀態(tài)交換平臺的設(shè)計與實現(xiàn)。本系統(tǒng)的創(chuàng)新主要表現(xiàn)在:第一,通過儀器適配器程序的研制和多線程技術(shù),實現(xiàn)了與多種地震數(shù)據(jù)采集器的并發(fā)式網(wǎng)絡(luò)通信以及SOH數(shù)據(jù)的統(tǒng)一接收;第二,通過引進ActiveMQ消息中間件,實現(xiàn)了SOH數(shù)據(jù)的統(tǒng)一交換,為消息訂閱程序的開發(fā)提供了統(tǒng)一數(shù)據(jù)的接口,增強了系統(tǒng)的彈性和可擴展性;第三,經(jīng)測試證明,本系統(tǒng)作為一套完整的解決方案,具有性能優(yōu)異、易于管理和易于擴展的特點,在測震臺網(wǎng)的應(yīng)用將有利于保障臺網(wǎng)的運行質(zhì)量。
目前系統(tǒng)的功能和性能均達到了設(shè)計預(yù)期效果,但是我們認為系統(tǒng)仍有很大的上升空間。例如,可以考慮為SOH接收和發(fā)布模塊增加人機交互界面,用來監(jiān)控和調(diào)整線程的運行狀態(tài),這有利于提高程序的靈活性和健壯性;另外,本文所介紹的SOH監(jiān)視程序只是系統(tǒng)應(yīng)用的一種模式,本系統(tǒng)更重要的意義在于:在實踐過程中,利用AMQ提供的統(tǒng)一數(shù)據(jù)接口,不斷探索SOH數(shù)據(jù)應(yīng)用的新思路、新方法,推動現(xiàn)有成果的應(yīng)用和轉(zhuǎn)化。軟件工程學(xué)認為:軟件生命周期的結(jié)束意味著一個新的生命周期的開始 (Sommerville,2010)。因此,不斷增強系統(tǒng)的功能、優(yōu)化系統(tǒng)的性能,是我們下一個階段的工作任務(wù)。
陳吉鋒,陳軍輝,應(yīng)昶,等.2012.無人職守地震臺站遠程監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)[J].地震研究,35(3):429-433.
謝希仁.2008.計算機網(wǎng)絡(luò)(第五版)[M].北京:電子工業(yè)出版社.
Calvert K L,Donahoo M J.2008.TCP/IP Sockets in Java,Second Edition:Practical Guide for Programmers[M].California:Morgan Kaufmann.
Fall K R,Stevens W R.2012.TCP/IP Illustrated Volume 1(Second Edition)[M].New Jersey:Addison-Wesley Educational Publishers Inc.
Goetz B,Peierls T,Bloch J,et al.2012.Java Concurrency in Practice[M].Texas:Pearson Education,Inc.
Gourley D,Totty B,Sayer M,et al.2002.HTTP[M].California:O'Reilly Media,Inc.
Monson H R,Richards M,Chappell D A.2009.Java Message Service(Second Edition)[M].California:O'Reilly Media,Inc.
Silberschats A,Galvin P B,Gagne G.2009.Operation System Concepts(8th Edition)[M].New York:John Wiley& Sons Ltd.
Snyder B.2011.ActiveMQ in Action[M].New York:Manning Publications.
Sommerville I.2010.Software Engineering(9th Edition)[M].Texas:Pearson Education.