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