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