基于SOA的物聯(lián)網(wǎng)平臺(tái)開(kāi)發(fā)
引言
近年來(lái),物聯(lián)網(wǎng)技術(shù)得到了突飛猛進(jìn)的發(fā)展。但在實(shí)際應(yīng)用中,許多物聯(lián)網(wǎng)項(xiàng)目仍然面臨著各種困難。在實(shí)際落地時(shí),項(xiàng)目往往采用平臺(tái)+應(yīng)用的設(shè)計(jì)策略。其中,平臺(tái)的作用尤為重要,但實(shí)際上,許多物聯(lián)網(wǎng)項(xiàng)目在建設(shè)過(guò)程中,由于平臺(tái)設(shè)計(jì)不夠完善,致使隨著項(xiàng)目建設(shè)的深入,暴露出越來(lái)越多的問(wèn)題,造成項(xiàng)目無(wú)法順利按照預(yù)想的設(shè)計(jì)完成。
針對(duì)當(dāng)前物聯(lián)網(wǎng)平臺(tái)設(shè)計(jì)上的一些缺陷,我們提出了基于SOA的平臺(tái)設(shè)計(jì)理念,來(lái)解決物聯(lián)網(wǎng)項(xiàng)目中平臺(tái)的設(shè)計(jì)問(wèn)題。
1物聯(lián)網(wǎng)平臺(tái)
1.1物聯(lián)網(wǎng)平臺(tái)概述
在IT項(xiàng)目中,平臺(tái)可以分為技術(shù)平臺(tái)和業(yè)務(wù)平臺(tái)兩類(lèi)。前者是一系列通用開(kāi)發(fā)組件的集合及項(xiàng)目開(kāi)發(fā)框架等技術(shù)要素。本文主要討論用于支撐物聯(lián)網(wǎng)業(yè)務(wù)的業(yè)務(wù)平臺(tái)。一般來(lái)說(shuō),業(yè)務(wù)平臺(tái)應(yīng)具有兩個(gè)原則:一是平臺(tái)的支撐作用;二是平臺(tái)的業(yè)務(wù)無(wú)關(guān)性。前者保證了整個(gè)業(yè)務(wù)系統(tǒng)的層次劃分,和具體業(yè)務(wù)不相關(guān)的功能,應(yīng)放置到平臺(tái)層面,使得應(yīng)用系統(tǒng)能夠重點(diǎn)關(guān)注自身的業(yè)務(wù)邏輯,而不必關(guān)心通用功能或底層功能;而后者則保證了平臺(tái)的支撐作用。一般來(lái)說(shuō),平臺(tái)應(yīng)滿(mǎn)足開(kāi)閉原則(OCP),即對(duì)擴(kuò)展開(kāi)放,對(duì)修改關(guān)閉。平臺(tái)一旦完成之后,不應(yīng)該隨著上層應(yīng)用的變動(dòng)而頻繁、大規(guī)模地修改自身。但同時(shí),平臺(tái)必須保證其開(kāi)放性,即在一定的范圍內(nèi),能夠通過(guò)擴(kuò)展自身實(shí)現(xiàn)對(duì)各種新的業(yè)務(wù)進(jìn)行支撐。
1.2物聯(lián)網(wǎng)平臺(tái)設(shè)計(jì)的誤區(qū)
在采用“平臺(tái)+應(yīng)用”的建設(shè)策略時(shí),平臺(tái)的建設(shè)往往存在兩個(gè)誤區(qū):
(1)試圖建設(shè)一個(gè)能夠支持所有物聯(lián)網(wǎng)業(yè)務(wù)或某一行業(yè)所有業(yè)務(wù)的平臺(tái)
這種平臺(tái)的建設(shè)策略,是希望能夠支撐盡可能多的具體業(yè)務(wù)。一般來(lái)說(shuō),在物聯(lián)網(wǎng)項(xiàng)目的整體建設(shè)中,都希望能夠規(guī)劃出這樣一個(gè)平臺(tái),一方面,使得上層應(yīng)用能夠盡可能專(zhuān)注于自身業(yè)務(wù)邏輯的開(kāi)發(fā);另一方面,也希望借著本次或本期項(xiàng)目的建設(shè),能夠?yàn)楹罄m(xù)新業(yè)務(wù)的擴(kuò)展,奠定一個(gè)平臺(tái)基礎(chǔ)。但事實(shí)上,試圖建設(shè)一個(gè)能夠支持盡可能多的業(yè)務(wù)的平臺(tái),往往導(dǎo)致該平臺(tái)只能完成最基本的一些服務(wù)。為了能夠盡可能實(shí)現(xiàn)通用,平臺(tái)會(huì)逐漸削弱自己,越來(lái)越多的功能被上移到應(yīng)用層,最終僅保留了最底層的服務(wù),從而失去了平臺(tái)的支撐作用。
(2)平臺(tái)過(guò)分參與了業(yè)務(wù)應(yīng)用
這種誤區(qū)會(huì)造成了一個(gè)應(yīng)用對(duì)一個(gè)平臺(tái)的結(jié)果。這種架構(gòu),固然對(duì)于系統(tǒng)層次劃分、合作開(kāi)發(fā)等方面有所幫助。但它削弱了平臺(tái)的通用支撐作用,使得平臺(tái)對(duì)后續(xù)擴(kuò)展的支持變得很差。同時(shí),在實(shí)際開(kāi)發(fā)中,哪些功能放到應(yīng)用中,哪些功能放到平臺(tái)中,成為一個(gè)棘手的問(wèn)題,稍不留神就會(huì)打亂集成系統(tǒng)的體系結(jié)構(gòu),最終使得平臺(tái)成為一個(gè)有名無(wú)實(shí)的組件。
針對(duì)上述問(wèn)題,本文提出了基于SOA的物聯(lián)網(wǎng)平臺(tái)開(kāi)發(fā)策略,用以解決平臺(tái)建設(shè)過(guò)程中的種種問(wèn)題。后文將具體描述基于SOA的物聯(lián)網(wǎng)平臺(tái)開(kāi)發(fā)策略。
2基于SOA的物聯(lián)網(wǎng)平臺(tái)建設(shè)策略
2.1物聯(lián)網(wǎng)平臺(tái)的組成
物聯(lián)網(wǎng)業(yè)務(wù)涵蓋的范圍非常廣,開(kāi)發(fā)一個(gè)能夠支撐所有應(yīng)用的物聯(lián)網(wǎng)平臺(tái)是不現(xiàn)實(shí)的。但從行業(yè)的角度來(lái)說(shuō),每個(gè)行業(yè)內(nèi)部各種具體的業(yè)務(wù)還是具有一定的共性,能夠?qū)⑦@些共同的東西沉淀到平臺(tái)中。以智能物流行業(yè)為例,我們提出物流行業(yè)的物聯(lián)網(wǎng)平臺(tái),應(yīng)當(dāng)包含如下的組件,具體如圖1所示。
該平臺(tái)需要承擔(dān)8個(gè)方面的作用:
(1)支撐作用:平臺(tái)需要提供應(yīng)用依賴(lài)的基礎(chǔ)組件庫(kù),包括報(bào)表、日志、權(quán)限、工作流、安全等組件。
(2)統(tǒng)計(jì)分析作用:平臺(tái)需要提供統(tǒng)計(jì)分析功能,用于分析商品流通數(shù)據(jù)、物流運(yùn)輸異常記錄等,主要提供給稅收和海關(guān)等政府部門(mén)。
(3)數(shù)據(jù)中心作用:平臺(tái)需要提供數(shù)據(jù)中心的作用,存儲(chǔ)和維護(hù)行業(yè)數(shù)據(jù)和管理數(shù)據(jù)。
(3)數(shù)據(jù)采集作用:平臺(tái)需要提供統(tǒng)一的數(shù)據(jù)采集與轉(zhuǎn)換功能,實(shí)現(xiàn)對(duì)下層具體數(shù)據(jù)采集設(shè)備的屏蔽,即一個(gè)綜合采集中間件。
(5)決策支撐作用:平臺(tái)需要提供決策支撐作用,用于指導(dǎo)行業(yè)的正規(guī)運(yùn)營(yíng)。
(6)企業(yè)管理作用:平臺(tái)需要提供企業(yè)管理的功能,對(duì)企業(yè)加入物聯(lián)網(wǎng)運(yùn)營(yíng)、獲取物聯(lián)網(wǎng)資源等提供指導(dǎo)和管理。
(7)門(mén)戶(hù)作用:平臺(tái)需要提供門(mén)戶(hù)作用,對(duì)外發(fā)布政策法規(guī)、行業(yè)情況以及其他信息服務(wù),也可以提供用戶(hù)注冊(cè)和資源下載等服務(wù)。
(8)運(yùn)維作用:系統(tǒng)運(yùn)維,主要是設(shè)備的遠(yuǎn)程維護(hù)和管理。
圖1物聯(lián)網(wǎng)平臺(tái)應(yīng)當(dāng)包含的組件圖
2.2基于SOA的平臺(tái)組織
在SOA體系中,處于核心位置的基礎(chǔ)設(shè)施是企業(yè)服務(wù)總線(xiàn)(ESB),所有的功能點(diǎn)以服務(wù)的形式向ESB注冊(cè),由ESB來(lái)提供基于標(biāo)準(zhǔn)的連接服務(wù),包括動(dòng)態(tài)查找、選擇服務(wù)、消息傳遞、路由及轉(zhuǎn)換、協(xié)議轉(zhuǎn)換等。
顯然,采用了SOA之后,基礎(chǔ)設(shè)施(如ESB)已經(jīng)構(gòu)成
了相比'物聯(lián)網(wǎng)平臺(tái)”更加底層的平臺(tái)。因此,從SOA體系來(lái)看,“平臺(tái)”服務(wù)與“應(yīng)用”服務(wù)可以等同起來(lái),都僅僅是SOA架構(gòu)中的平級(jí)服務(wù)而已,從而解決了平臺(tái)擴(kuò)展性與業(yè)務(wù)支撐上面的矛盾?;赟OA的物聯(lián)網(wǎng)業(yè)務(wù)體系結(jié)構(gòu)如圖2所示。
而對(duì)于每個(gè)組件(或系統(tǒng))來(lái)說(shuō),也通過(guò)SOA的架構(gòu)來(lái)進(jìn)行整合。從邏輯上講,整個(gè)系統(tǒng)構(gòu)成一個(gè)ESB級(jí)聯(lián)的結(jié)構(gòu),在實(shí)際實(shí)施時(shí),根據(jù)項(xiàng)目需要,也可以考慮只部署一套ESB系統(tǒng)。
這種組織方式,可成功實(shí)現(xiàn)平臺(tái)的OCP原則。下面以數(shù)據(jù)采集中間件為例論述該架構(gòu)的開(kāi)放擴(kuò)展特性。
對(duì)于物聯(lián)網(wǎng)系統(tǒng)來(lái)說(shuō),數(shù)據(jù)采集層是重要的一層,是各類(lèi)上層業(yè)務(wù)的基礎(chǔ)。對(duì)于物流行業(yè)來(lái)說(shuō),常見(jiàn)的數(shù)據(jù)采集方式有RFID、條碼、GPS、抓拍識(shí)別等。數(shù)據(jù)采集體系建設(shè)上,往往涉及基礎(chǔ)設(shè)施建設(shè)、設(shè)備架設(shè)施工。因此,采集層設(shè)備穩(wěn)定性較高,一般來(lái)說(shuō)只可能出現(xiàn)新增采集設(shè)備或采集方式,不大可能出現(xiàn)大規(guī)模整體方案替換的場(chǎng)景,最多也就是逐步演進(jìn)。因此,可以說(shuō)采集中間件部分是相對(duì)穩(wěn)定的。
基于SOA的采集中間件體系如圖3所示。
在綜合采集中間件系統(tǒng)中,各個(gè)設(shè)備的驅(qū)動(dòng)、中間件自身業(yè)務(wù)、外部訪問(wèn)接口等,都以服務(wù)的方式構(gòu)建,并掛載到子系統(tǒng)內(nèi)部的ESB上。各個(gè)部分的擴(kuò)展性支撐機(jī)制如下:
(1)設(shè)備驅(qū)動(dòng)服務(wù)
每個(gè)設(shè)備驅(qū)動(dòng)應(yīng)包含設(shè)備的鏈路維護(hù)、通信協(xié)議、原始數(shù)據(jù)收集等功能。當(dāng)增加一種新的設(shè)備到系統(tǒng)時(shí),只需要增加對(duì)應(yīng)的設(shè)備驅(qū)動(dòng)服務(wù)即可。
(2)中間件自身業(yè)務(wù)服務(wù)
中間件自身應(yīng)包含一部分的數(shù)據(jù)轉(zhuǎn)換、過(guò)濾、分組、去重等業(yè)務(wù)。這些業(yè)務(wù)也通過(guò)服務(wù)的形式發(fā)布到ESB上,由ESB負(fù)責(zé)將對(duì)應(yīng)設(shè)備驅(qū)動(dòng)服務(wù)產(chǎn)生的數(shù)據(jù)路由到對(duì)應(yīng)的中間件業(yè)務(wù)上。
(3)外部訪問(wèn)接口服務(wù)
經(jīng)中間件處理后的數(shù)據(jù),應(yīng)以統(tǒng)一的方式上報(bào)給上層業(yè)務(wù)。數(shù)據(jù)訪問(wèn)接口是連接中間件自身ESB和大系統(tǒng)ESB的門(mén)戶(hù)(如果物理上無(wú)ESB級(jí)聯(lián),則外部訪問(wèn)接口只起到邏輯上的作用)。由ESB負(fù)責(zé)將處理好的數(shù)據(jù)路由到對(duì)應(yīng)的發(fā)布接口。隨著后續(xù)業(yè)務(wù)的增多,當(dāng)需要新的接口形式時(shí),可以擴(kuò)展或增加新的外部接口服務(wù)。
由此可見(jiàn),基于SOA的體系成功適應(yīng)了物聯(lián)網(wǎng)平臺(tái)的擴(kuò)展性和支撐性要求。實(shí)踐證明,這種架構(gòu)能夠使得物聯(lián)網(wǎng)平臺(tái)的體系更加清晰,為后續(xù)深入和擴(kuò)展打好基礎(chǔ)。
2.2物聯(lián)網(wǎng)平臺(tái)的部署
由于SOA架構(gòu)天生就適應(yīng)了分布式的部署方式,它使得物聯(lián)網(wǎng)平臺(tái)能夠跟隨實(shí)際項(xiàng)目的要求進(jìn)行更加靈活的部署,總體來(lái)說(shuō),可以存在兩種部署方式:
(1)與應(yīng)用結(jié)合的部署方式
對(duì)于規(guī)模較小、業(yè)務(wù)較單一的項(xiàng)目,可以采用這種方式。即“一個(gè)平臺(tái)-一個(gè)應(yīng)用”的方式。這種部署方式下,物聯(lián)網(wǎng)平臺(tái)不獨(dú)立運(yùn)營(yíng),而是與應(yīng)用一起發(fā)布到一臺(tái)服務(wù)器,或一個(gè)小型服務(wù)器集群上??梢钥紤]選用較為輕量級(jí)的ESB產(chǎn)品來(lái)進(jìn)行整合。服務(wù)間的相互調(diào)用,宜采用各種輕量級(jí)的調(diào)用方式,甚至本地調(diào)用,服務(wù)注冊(cè)等功能(如UDDI)可以省去。這種部署方式同樣保留了SOA的種種優(yōu)勢(shì),同時(shí)不會(huì)使得整個(gè)系統(tǒng)變得過(guò)分臃腫。
(2)獨(dú)立運(yùn)營(yíng)的物聯(lián)網(wǎng)平臺(tái)
對(duì)于大型業(yè)務(wù),后續(xù)擴(kuò)展可能性較大的項(xiàng)目,宜采用獨(dú)立運(yùn)營(yíng)物聯(lián)網(wǎng)平臺(tái)的方式進(jìn)行部署。物聯(lián)網(wǎng)平臺(tái)單獨(dú)運(yùn)營(yíng)于一個(gè)服務(wù)器集群之上,并由專(zhuān)門(mén)的運(yùn)營(yíng)團(tuán)隊(duì)進(jìn)行日常維護(hù)。物聯(lián)網(wǎng)平臺(tái)除保證完善的支撐業(yè)務(wù)功能外,還要實(shí)現(xiàn)完善的安全機(jī)制和服務(wù)注冊(cè)機(jī)制。所有外部服務(wù)(具體業(yè)務(wù)應(yīng)用)通過(guò)完善的遠(yuǎn)程調(diào)用機(jī)制(如WebService)來(lái)實(shí)現(xiàn)與平臺(tái)服務(wù)或其他外部應(yīng)用服務(wù)的交互。
綜上所述,基于SOA的物聯(lián)網(wǎng)平臺(tái)是非常靈活的,能夠?qū)嶋H項(xiàng)目特點(diǎn),選擇合適的部署方式。同時(shí),兩種部署方式也能夠方便地進(jìn)行轉(zhuǎn)換。
3結(jié)語(yǔ)
本文結(jié)合相關(guān)經(jīng)驗(yàn),對(duì)基于SOA的物聯(lián)網(wǎng)平臺(tái)設(shè)計(jì)進(jìn)行了詳細(xì)討論,以物流行業(yè)綜合采集中間件為例,討論了物聯(lián)網(wǎng)平臺(tái)擴(kuò)展性與支撐性通過(guò)SOA的實(shí)現(xiàn)策略。為各類(lèi)物聯(lián)網(wǎng)項(xiàng)目的建設(shè),提供了一定的經(jīng)驗(yàn)參考。
20211222_61c3481b7a2ba__基于SOA的物聯(lián)網(wǎng)平臺(tái)開(kāi)發(fā)