摘要:針對(duì)企業(yè)中會(huì)存在的各類(lèi)傳感器所產(chǎn)生的關(guān)于自然現(xiàn)象的一些實(shí)時(shí)信息,如果能夠得到及時(shí)的分析處理,并作出相應(yīng)的決策,將會(huì)極大地提高企業(yè)的運(yùn)作效率。提出了一種在信息網(wǎng)格中集成傳感器的方法,并以智能數(shù)字磁場(chǎng)計(jì)HMR2300為例說(shuō)明其實(shí)現(xiàn)過(guò)程。實(shí)踐表明,該方法能夠更方便、更快捷地將傳感器集成在信息網(wǎng)格中,實(shí)現(xiàn)實(shí)時(shí)信息共享。
關(guān)鍵詞:信息網(wǎng)格; 傳感器; Web服務(wù); REML
中圖分類(lèi)號(hào):TP311.5文獻(xiàn)標(biāo)志碼:A
文章編號(hào):1001-3695(2008)03-0833-03
企業(yè)中目前還存在著大量企業(yè)用戶(hù)無(wú)法訪(fǎng)問(wèn)到的由傳感器所產(chǎn)生的信息,這些實(shí)時(shí)信息對(duì)于企業(yè)來(lái)說(shuō)是一筆寶貴的財(cái)富,因此,如何向信息消費(fèi)者共享這些信息已經(jīng)成為當(dāng)前研究的熱點(diǎn)問(wèn)題之一。近幾年來(lái),人們已經(jīng)做了大量的努力來(lái)建立支持傳感器應(yīng)用和開(kāi)發(fā)的更簡(jiǎn)單、更快捷的中間件。為ZebraNet 項(xiàng)目設(shè)計(jì)的Impala[1],采用代碼移動(dòng)技術(shù)來(lái)更新遠(yuǎn)程傳感器功能的同時(shí)考慮到應(yīng)用本身。MiLAN[2]是一個(gè)體系結(jié)構(gòu),它擴(kuò)展了網(wǎng)絡(luò)協(xié)議棧并允許網(wǎng)絡(luò)具體插件將MiLAN命令轉(zhuǎn)換成具體協(xié)議的命令。除了開(kāi)發(fā)支持傳感器應(yīng)用的中間件外,將傳感器網(wǎng)絡(luò)與網(wǎng)格計(jì)算技術(shù)結(jié)合起來(lái)構(gòu)成傳感器網(wǎng)格也是很重要的方法之一。Tham等人[3]概括了傳感器網(wǎng)格的一種基本結(jié)構(gòu),并通過(guò)分布式信息融合和分布式自主決策算法的一種可能實(shí)現(xiàn)的一些例子,描述了在傳感器網(wǎng)格計(jì)算方面的一些早期工作。但是,在這種理想的結(jié)構(gòu)變成現(xiàn)實(shí)之前還有很多需要解決的研究問(wèn)題。Ghanem等人[4]介紹了另一種傳感器網(wǎng)格集成技術(shù),利用網(wǎng)格服務(wù)包裝高吞吐率的傳感器,通過(guò)一個(gè)標(biāo)準(zhǔn)的方法將這個(gè)服務(wù)發(fā)布到一個(gè)注冊(cè)中心以便被其他用戶(hù)訪(fǎng)問(wèn)。
由于Tham和Buyya所提出的結(jié)構(gòu)在目前還沒(méi)有成熟的系統(tǒng),而且對(duì)于企業(yè)來(lái)說(shuō),同時(shí)構(gòu)建網(wǎng)格和傳感器網(wǎng)絡(luò)將是一項(xiàng)企業(yè)自身無(wú)法承受的工程。本文提出直接將傳感器集成到企業(yè)信息網(wǎng)格中的結(jié)構(gòu),提供給企業(yè)用戶(hù)一個(gè)通用的訪(fǎng)問(wèn)接口,實(shí)現(xiàn)傳感器實(shí)時(shí)信息共享,極大地節(jié)約了系統(tǒng)開(kāi)發(fā)成本。
1基本體系結(jié)構(gòu)
企業(yè)信息網(wǎng)格為企業(yè)用戶(hù)提供了一體化的智能信息平臺(tái)。在這個(gè)平臺(tái)上,信息的處理是分布式、協(xié)作和智能化的[5]。用戶(hù)可以通過(guò)單一的入口訪(fǎng)問(wèn)所有信息,以便能夠及時(shí)作出決策,提高企業(yè)的運(yùn)作效率。本文當(dāng)前實(shí)現(xiàn)系統(tǒng)的基本體系結(jié)構(gòu)如圖1所示。
1)物理層它是各類(lèi)傳感器,如溫度傳感器、圖像傳感器、磁阻傳感器等,它們都是通過(guò)標(biāo)準(zhǔn)的接口與計(jì)算機(jī)相連。
2)服務(wù)層中間件它是為上層提供基本的服務(wù),包括傳感器注冊(cè)服務(wù)(sensor register service,SRS)、傳感器操作服務(wù)(sensor operation service,SOS)和信息傳送服務(wù)(information transmission service,ITS)等。
3)開(kāi)發(fā)層中間件它提供高層應(yīng)用的訪(fǎng)問(wèn)接口,包括傳感器編程接口、傳感器實(shí)時(shí)信息管理接口等。
圖1基本體系結(jié)構(gòu)
2主要技術(shù)問(wèn)題
2.1服務(wù)層中間件
對(duì)于科學(xué)計(jì)算來(lái)說(shuō),Web services是一個(gè)極具吸引力的模型,但在幾年前,I. Foster等人[6]提出了將Web services 模型集成在Globus中的建議。作為基于Web services的網(wǎng)格實(shí)現(xiàn)的第一步,Globus聯(lián)盟給出了一些規(guī)范,使得Globus更有效地將應(yīng)用映射為 Web 服務(wù)。在實(shí)現(xiàn)了OGSI(open grid services infrastructure)[7]規(guī)范的“open grid services infrastructure reference implementation”中定義了網(wǎng)格服務(wù)是W3C Web services的擴(kuò)展。
在本文實(shí)現(xiàn)的基礎(chǔ)平臺(tái)中使用網(wǎng)格服務(wù)來(lái)包裝傳感器,即一個(gè)傳感器對(duì)應(yīng)一個(gè)操作本傳感器的SOS,通過(guò)一個(gè)通用的接口將這個(gè)服務(wù)發(fā)布到注冊(cè)中心(UDDI)供其他網(wǎng)格用戶(hù)訪(fǎng)問(wèn)。主要是完成向傳感器發(fā)送控制信息來(lái)控制傳感器工作和從傳感器接收實(shí)時(shí)信息。ITS將從傳感器讀來(lái)的實(shí)時(shí)信息傳送給信息消費(fèi)者。不同傳感器產(chǎn)生的信息格式不同,如溫度傳感器可能產(chǎn)生的是一個(gè)雙精度的值;而圖像傳感器可能產(chǎn)生的是圖像的二進(jìn)制文件。因此,傳感器的位置、產(chǎn)生的信息頻率及格式、傳感器所對(duì)應(yīng)的服務(wù)的RUL等元信息通過(guò)SRS向注冊(cè)中心(UDDI)發(fā)布。下面是發(fā)布智能數(shù)字磁場(chǎng)計(jì)HMR2300的信息(采用的是下文介紹的REML):
〈?xml version=\"1.0\" encoding=\"UTF-8\" ?〉
〈root〉
〈element〉
〈name〉智能數(shù)字磁場(chǎng)計(jì)HMR2300〈/name〉
〈location〉210.26.97.253〈/location〉
〈inforate〉20ms〈/inforate〉
〈infotype〉double〈/infotype〉
〈service〉http://210.26.97.253:8080/grid/services/General_dyn_1〈/service〉
〈method1〉display_p〈/method1〉
〈method2〉display_c〈/method2〉
〈/element〉
〈/root〉
服務(wù)層中間件是完全符合網(wǎng)格的標(biāo)準(zhǔn),對(duì)其的交互操作也是符合網(wǎng)格的標(biāo)準(zhǔn)協(xié)議。但由于本文實(shí)現(xiàn)的網(wǎng)格服務(wù)和傳感器是一一對(duì)應(yīng)的關(guān)系,有以下一些特點(diǎn):
a)功能獨(dú)立性。每一個(gè)傳感器的功能均通過(guò)網(wǎng)格服務(wù)層中間件提供的接口實(shí)現(xiàn),上層網(wǎng)格應(yīng)用必須開(kāi)發(fā)一個(gè)能夠?qū)鞲衅鞑僮鞯哪P蛠?lái)實(shí)現(xiàn)和不同傳感器的交互。
b)面向資源的服務(wù)。不同的傳感器具有不同的功能,各自所需要的啟動(dòng)參數(shù)及返回參數(shù)等一般均不同,因此,提供了一個(gè)開(kāi)發(fā)服務(wù)的API。服務(wù)開(kāi)發(fā)者通過(guò)對(duì)傳感器的功能和一些主要參數(shù)的了解,就能夠調(diào)用這個(gè)API生成面向此傳感器的特定服務(wù),使得服務(wù)開(kāi)發(fā)者能夠更快、更簡(jiǎn)單地開(kāi)發(fā)出符合本系統(tǒng)的網(wǎng)格服務(wù)。
2.2信息格式及編碼
為了使信息能夠方便被上層應(yīng)用所識(shí)別和利用,提出了信息的一種中間格式——REML。其基本結(jié)構(gòu)如下:
〈root〉
〈element〉
〈tag1〉…〈/tag1〉
〈tag2〉…〈/tag2〉
…
〈tagn 〉…〈/tagn〉
〈/element〉
〈/root〉
其中:〈element〉標(biāo)簽表示傳感器一次產(chǎn)生的信息量。有些傳感器(溫度傳感器等)一次只產(chǎn)生一個(gè)雙精度的值;還有的傳感器一次就產(chǎn)生一組數(shù)據(jù)信息(無(wú)論是一個(gè)還是一組,均稱(chēng)之為一幀信息)。〈tagi〉 (i=1,2,…,n)標(biāo)簽是根據(jù)具體傳感器產(chǎn)生信息的類(lèi)別和數(shù)量決定,如智能數(shù)字磁場(chǎng)計(jì)HMR2300可檢測(cè)磁場(chǎng)的強(qiáng)度和方向,輸出X、Y、Z三個(gè)軸的分量。一幀信息的REML如下:
〈?xml version=\"1.0\" encoding=\"UTF-8\" ?〉
〈root〉
〈element〉
〈Xaxis〉1,562〈/Xaxis〉
〈Yaxis〉 7,683〈/Yaxis〉
〈Zaxis〉 5,821〈/Zaxis〉
〈/element〉
〈/root〉
在傳感器與消費(fèi)者之間加入的REML格式信息采用UTF-8編碼。不論是在Windows環(huán)境還是Linux環(huán)境,Java客戶(hù)端還是C客戶(hù)端,只要將這種REML格式的信息在各自的客戶(hù)端解析成本地代碼均能夠成功識(shí)別,而不會(huì)出現(xiàn)亂碼導(dǎo)致上層應(yīng)用無(wú)法處理,很好地解決了跨平臺(tái)訪(fǎng)問(wèn)的問(wèn)題。其基本結(jié)構(gòu)如圖2所示。
圖2傳感器與消費(fèi)者之間的REML
3信息消費(fèi)方式
消費(fèi)者可選擇接收一幀信息(請(qǐng)求—響應(yīng)或是拉模式)或是連續(xù)信息(流或推模式),SOS提供了這兩種方法(display_p和display_c),消費(fèi)者可根據(jù)自己的需求選用不同的消費(fèi)方式進(jìn)行消費(fèi)。
1)拉模式(pull)消費(fèi)者通過(guò)調(diào)用SOS來(lái)請(qǐng)求傳感器實(shí)時(shí)信息,此時(shí)傳感器返回當(dāng)前產(chǎn)生的一幀信息,一次服務(wù)結(jié)束。其基本結(jié)構(gòu)如圖3所示。
圖3拉模式的基本實(shí)現(xiàn)結(jié)構(gòu)
2)推模式(push)為了使消費(fèi)者能夠得到可靠的流格式信息,通過(guò)socket連接來(lái)實(shí)現(xiàn)實(shí)時(shí)信息的可靠連續(xù)傳輸。在這種模式下,消費(fèi)者仍然是通過(guò)服務(wù)調(diào)用的方式來(lái)訪(fǎng)問(wèn)傳感器信息。但消費(fèi)者調(diào)用服務(wù)時(shí)需要指明消費(fèi)頻率(fc),接收傳感器信息的端口號(hào),服務(wù)則啟動(dòng)一個(gè)線(xiàn)程不斷地向接收信息端口發(fā)送傳感器實(shí)時(shí)信息,直到消費(fèi)者明確發(fā)出一個(gè)停止請(qǐng)求。其基本結(jié)構(gòu)如圖4所示。
在此模式中,在客戶(hù)端和服務(wù)器端分別建立一個(gè)緩沖區(qū)bufferc和buffers。Bufferc位于客戶(hù)端與上層應(yīng)用之間,是為了緩存那些已經(jīng)從傳感器中讀出而上層應(yīng)用還沒(méi)有來(lái)得及處理的信息。Buffers位于消費(fèi)者與傳感器之間,解決消費(fèi)者消費(fèi)的頻率與傳感器的發(fā)送頻率不匹配的問(wèn)題。
設(shè)傳感器產(chǎn)生信息的頻率為fp,則
a)fc>fp按fc的大小從buffers中讀取傳感器信息放入bufferc中。
b)fc 第一個(gè)消費(fèi)者請(qǐng)求消費(fèi)時(shí)調(diào)用SOS,服務(wù)調(diào)用讀COM口程序啟動(dòng)傳感器并從傳感器中讀出實(shí)時(shí)信息存放在buffers中。隨后的消費(fèi)者請(qǐng)求消費(fèi)時(shí),仍然調(diào)用SOS,但這時(shí)服務(wù)器檢測(cè)到傳感器已經(jīng)啟動(dòng),就啟動(dòng)一個(gè)線(xiàn)程直接從buffers中按照消費(fèi)者請(qǐng)求消費(fèi)的頻率讀取信息。消費(fèi)者調(diào)用SOS獲得信息的源代碼如下: class Dynamic{ String D_str; myclient my; Mon share ; Dynamic(String endpoint,String method,int a,int b){ share=new Mon(); D_client mythread=new D_client(endpoint,method,a,b); /*從COM口讀數(shù)據(jù)的時(shí)間間隔a和從緩沖區(qū)讀信息送到客戶(hù)端的時(shí)間間隔b,默認(rèn)的時(shí)間間隔是20 ms和20 ms*/ mythread.start();//啟動(dòng)調(diào)用SOS的線(xiàn)程 my=new myclient(share,endpoint); Thread mycli=new Thread(my); mycli.start(); //啟動(dòng)接收socket流信息的線(xiàn)程 } public String dynamicstr(){ Thread myacc=new Thread(my.new access(share)); myacc.start();//啟動(dòng)從客戶(hù)端緩沖區(qū)中讀信息的線(xiàn)程 D_str=my.getmyst(); return D_str;//返回信息 } } 智能數(shù)字磁場(chǎng)計(jì)HMR2300在兩種模式下的訪(fǎng)問(wèn)結(jié)果如圖5所示(圖5(a)中訪(fǎng)問(wèn)到的信息用方框標(biāo)出)。 (a)拉模式(b)推模式 圖5訪(fǎng)問(wèn)智能數(shù)字磁場(chǎng)計(jì)HMR2300的結(jié)果 4性能分析 兩種消費(fèi)方式是基于不同的傳感器及消費(fèi)者不同的消費(fèi)方式提出的,均存在著各自的優(yōu)缺點(diǎn)。實(shí)驗(yàn)數(shù)據(jù)如圖6所示。 (a) 拉模式(b) 推模式 圖6兩種消費(fèi)模式分析 設(shè)調(diào)用SOS讀傳感器實(shí)時(shí)信息的時(shí)間為T(mén)o,調(diào)用ITS 的時(shí)間Tt,初始化COM口的時(shí)間為T(mén)c,建立socket連接的時(shí)間Ts,則 在拉模式下,請(qǐng)求n幀信息的響應(yīng)時(shí)間為 T1n=Tc+∑ni=1(To+Tt) 當(dāng)n=1時(shí), T11=To+Tt+Tc 在推模式下,請(qǐng)求n幀信息的響應(yīng)時(shí)間為 T2n=Tc+To+∑ni=1(Ts+Tt) 當(dāng)n=1時(shí), T21=To+Tt+Tc+Ts 由實(shí)驗(yàn)數(shù)據(jù)及分析可以看出,n=1時(shí),T11 5本系統(tǒng)的優(yōu)點(diǎn) 1)開(kāi)放性本系統(tǒng)采用的是基于Web services的網(wǎng)格技術(shù),網(wǎng)格服務(wù)提供了一種與現(xiàn)有應(yīng)用相集成的有效方式,能夠與現(xiàn)有的企業(yè)應(yīng)用程序整合,使本系統(tǒng)具有良好的開(kāi)放性。 2)松散耦合客戶(hù)端與服務(wù)器端之間以REML為交換數(shù)據(jù),使得本系統(tǒng)具有松散耦合性。 3)重用性網(wǎng)格服務(wù)對(duì)外提供的實(shí)時(shí)信息,可作為其他信息系統(tǒng)的數(shù)據(jù)源,也可供上層應(yīng)用的二次開(kāi)發(fā)之用。 6結(jié)束語(yǔ) 在企業(yè)信息網(wǎng)格中利用網(wǎng)格技術(shù)的客戶(hù)提供傳感器實(shí)時(shí)信息,實(shí)現(xiàn)了企業(yè)中傳感器實(shí)時(shí)信息的全面共享,提高了企業(yè)的運(yùn)作效率。消費(fèi)者可以根據(jù)自己的不同需求選用拉模式或推模式的消費(fèi)方式請(qǐng)求信息供自己觀(guān)測(cè)或二次開(kāi)發(fā)之用。同時(shí),采用REML的中間格式,很好地解決了跨平臺(tái)的問(wèn)題。本文已經(jīng)在自己開(kāi)發(fā)的企業(yè)信息網(wǎng)格Loglo系統(tǒng)中實(shí)現(xiàn)了這兩種模式。實(shí)踐表明,用網(wǎng)格技術(shù)來(lái)提供傳感器實(shí)時(shí)信息共享是一種行之有效的解決傳感器信息孤島的 方法。 參考文獻(xiàn): [1]LIU T, MARTONOSI M. Impala: a middleware system for managing autonomic, parallel sensor systems[C]//Proc of the 9th ACM SIGPLAN Symp on Principles and Practice of Parallel Programming. 2003: 107118. [2]HEINZELMAN W, MURPHY A, CARVALHO H. Middleware to support sensor network applications[J]. IEEE Network Magazine, 2004,18(1):614. [3]THAM C K, BUYYA R. SensorGrid: integrating sensor networks and grid computing[J]. CSI Communications, 2005,29(1):24-29. [4]GHANEM M, GUO Y, HASSARD J, et al. Sensor grids for air pollution monitoring[C]//Proc of the 3rd UK eScience All Hands Mee ̄ting. Nottingham:[s.n.], 2004:106113. [5]徐志偉,馮百明,李偉. 網(wǎng)格計(jì)算技術(shù)[M]. 北京:電子工業(yè)出版社,2004:25-58. [6]FOSTER I, KESSELMAN C, NICK J, et al. The physiology of the grid: an open grid services architecture for distributed systems integration (draft)[EB/OL]. (2002-01).http://www.globus.org/research/papers/ogsa.pdf. [7]TUECKE S, FOSTER I, KESSELMAN C, et al. Open grid ser ̄vices infrastructure (OGSI) (draft)[EB/OL].(2003-02-01). http://www.gridforum.org/ogsiwg/drafts/draftggfogsigridservice-23_ 2003-0217.pdf. “本文中所涉及到的圖表、注解、公式等內(nèi)容請(qǐng)以PDF格式閱讀原文”