王大鵬 余鵬
摘 要:為了提高軌道交通運行生產(chǎn)管理系統(tǒng)內(nèi)部各個子系統(tǒng)的的通信效率,采用ZeroMQ消息中間件技術(shù)和輕量級的json數(shù)據(jù)交換格式,設(shè)計了一種有效的分布式網(wǎng)絡消息通信架構(gòu)。該架構(gòu)用在軌道交通運行生產(chǎn)管理系統(tǒng),提高了數(shù)據(jù)的傳輸效率;解決了系統(tǒng)內(nèi)部各個子系統(tǒng)之間的通信效率問題,并且可以勝任不斷變化的環(huán)境和任務要求,具有廣泛的適用性和良好的應用性。
關(guān)鍵詞:軌道交通運行生產(chǎn)管理系統(tǒng);消息中間件; ZeroMQ;
引 言 軌道交通供電運行安全生產(chǎn)管理系統(tǒng)從整條軌道交通線路全面考慮,實現(xiàn)供電系統(tǒng)整體的運行安全管理,滿足軌道交通供電系統(tǒng)安全、規(guī)范、可靠的運行要求。系統(tǒng)包括工作票系統(tǒng)、操作票系統(tǒng)、巡視系統(tǒng)、數(shù)據(jù)采集與監(jiān)視系統(tǒng)(SCADA系統(tǒng))、地線管理系統(tǒng)等主要組成部分。各個子系統(tǒng)之間往往需要有高效的信息交互,如果使用一對一的通信方式,不但影響系統(tǒng)的通信效率,還影響系統(tǒng)的運行速度;為了解決這個問題,本方案引用消息中間件和SOA的概念,避免了一對一通信的復雜網(wǎng)絡結(jié)構(gòu),通過成熟的ZEROMQ中間件技術(shù),運用面向服務的思想,完美實現(xiàn)了軌道交通供電運行安全生產(chǎn)管理系統(tǒng)內(nèi)部的高效通信。
1主要技術(shù)介紹:
1.1 ZeroMQ的簡介
ZeroMQ是一種基于消息隊列的多線程網(wǎng)絡庫。其對套接字類型、連接處理、幀、甚至路由的底層細節(jié)進行抽象,提供跨越多種傳輸協(xié)議的套接字,ZeroMQ是網(wǎng)絡通信中新的一層,介于應用層和傳輸層之間(按照TCP/IP劃分),其是一個可伸縮層,可并行運行,分散在分布式系統(tǒng)間??梢杂脕順?gòu)建多對多的連接模式,如發(fā)布-訂閱、任務分發(fā)、請求-應答等,也可以構(gòu)建由單個模式組合成的復雜框架。ZeroMQ的快速足以勝任任何集群應用產(chǎn)品。它的異步I/O機制讓你能夠構(gòu)建多核應用程序,完成異步消息處理任務。ZeroMQ有著眾多語言支持,并能在幾乎所有的操作系統(tǒng)上運行。
1.2 JSON的簡介
JSON(JavaScript Object Notation, JS 對象標記) 是一種輕量級的數(shù)據(jù)交換格式。它基于 ECMAScript (w3c制定的js規(guī)范)的一個子集,采用完全獨立于編程語言的文本格式來存儲和表示數(shù)據(jù)。簡潔和清晰的層次結(jié)構(gòu)使得 JSON 成為理想的數(shù)據(jù)交換語言。 易于人閱讀和編寫,同時也易于機器解析和生成,并有效地提升網(wǎng)絡傳輸效率。
2 技術(shù)方案
2.1 企業(yè)信息服務總線軟件架構(gòu)設(shè)計
本方案采用“SOA”的設(shè)計思想,構(gòu)建出基于ZeroMQ的企業(yè)服務總線,總體分層結(jié)構(gòu)圖如下所示:
、
2.2企業(yè)信息服務總線實現(xiàn)的主要功能:
2.2.1信息交換路由服務
企業(yè)信息服務總線能夠根據(jù)信息內(nèi)容,在不同應用和服務之間進行信息傳輸和路由。
2.2.2通信協(xié)議轉(zhuǎn)換功能
企業(yè)信息服務總線能夠?qū)崿F(xiàn)各個系統(tǒng)或應用之間的通信協(xié)議轉(zhuǎn)換,支持Http、Ftp、Web Service、MQ、JMS等多種數(shù)據(jù)傳輸協(xié)議的相互轉(zhuǎn)換。
2.2.3消息格式轉(zhuǎn)換功能
企業(yè)信息服務總線能夠?qū)崿F(xiàn)各個系統(tǒng)或應用之間的消息格式轉(zhuǎn)換,通過輸入、輸出消息字典的字段對應設(shè)置,可將消息轉(zhuǎn)換成用戶需要的任何格式。
3 功能實現(xiàn)
基于ZeroMQ的企業(yè)信息服務總線,主要處理流程有兩種:請求/應答通信方式和發(fā)布/訂閱通信方式,其它處理流程一般是這兩種的復雜組合,下面以申請操作票票號和設(shè)備狀態(tài)變位的具體實現(xiàn)過程舉例說明:
3.1 功能描述:客戶A在系統(tǒng)A的客戶端上申請操作票票號,企業(yè)服務器總線收到信息后把申請信息發(fā)送給目標系統(tǒng):操作票系統(tǒng),并返回操作票系統(tǒng)的應答給系統(tǒng)A的客戶端。
具體實現(xiàn)過程如下:
3.1.1客戶A在系統(tǒng)B的客戶端上申請開操作票時,首先要申請票號,系統(tǒng)B的客戶端調(diào)用通用接口,并填入正確的信息格式,目標系統(tǒng)和源系統(tǒng)一定要填對,不然會影響功能的實現(xiàn),組成正確的信息json包并發(fā)送到企業(yè)服務總線;
3.1.2企業(yè)服務總線先通過消息格式轉(zhuǎn)換功能模塊,解析出目標系統(tǒng):操作票系統(tǒng)和源系統(tǒng):系統(tǒng)B的客戶端,然后根據(jù)目標系統(tǒng):操作票系統(tǒng)的輸入信息格式組包,信息交換路由模塊把系統(tǒng)B的客戶端的請求經(jīng)一定格式組包后發(fā)送到目標系統(tǒng)“操作票系統(tǒng)”;
3.1.3“操作票系統(tǒng)”解析命令字后并處理收到的請求,得到結(jié)果后更改目標系統(tǒng)和源系統(tǒng)為系統(tǒng)B的客戶端和操作票系統(tǒng),再通過信息交換路由模塊把結(jié)果發(fā)送給系統(tǒng)B的客戶端;
3.2 功能描述:數(shù)據(jù)采集與監(jiān)視系統(tǒng)收到設(shè)備A的變位信息,如果系統(tǒng)B的客戶端在企業(yè)服務總線訂閱了設(shè)備A的變位服務,則企業(yè)服務器總線會把設(shè)備A的變位信息通知給系統(tǒng)B的客戶端;否則,則不發(fā)送。
具體實現(xiàn)過程如下:
3.2.1數(shù)據(jù)采集與監(jiān)視系統(tǒng)采集到設(shè)備A的變位信息后記錄并把變位信息推送給企業(yè)服務總線;
3.2.2如果在企業(yè)服務總線訂閱設(shè)備的變位服務的隊列列表中包含系統(tǒng)B的客戶端,則企業(yè)服務器總線會把設(shè)備A的變位信息組成系統(tǒng)B的數(shù)據(jù)信息格式,并標識好源系統(tǒng)和目標系統(tǒng),通過信息交換路由模塊推送給系統(tǒng)B的客戶端,系統(tǒng)B的客戶端收到后可以做相應的提示或者顯示等處理。
4 結(jié)束語
本文給出了基于ZeroMQ的企業(yè)信息服務總線在軌道交通運行生產(chǎn)管理系統(tǒng)中的應用方案。實現(xiàn)了軌道交通運行生產(chǎn)管理系統(tǒng)各子系統(tǒng)之間的數(shù)據(jù)高速通信,系統(tǒng)穩(wěn)定可靠。同時由于該方案具有智能化、適應不同環(huán)境要求、可靠性好、效率高和易于擴展等特點,也可滿足多種不同環(huán)境的工業(yè)系統(tǒng)部署要求,具有良好的應用前景。