張玉杰 王軒
摘 要:針對(duì)目前傳統(tǒng)一體化服務(wù)架構(gòu)的不足,為構(gòu)建具有分布式、擴(kuò)展性強(qiáng)以及容錯(cuò)性高等特點(diǎn)的城市照明控制系統(tǒng),提出以微服務(wù)架構(gòu)為基本框架搭建系統(tǒng)應(yīng)用服務(wù)平臺(tái)。通過分析系統(tǒng)應(yīng)用服務(wù)平臺(tái)的設(shè)計(jì)需求以及微服務(wù)架構(gòu)的特點(diǎn)與優(yōu)勢(shì),進(jìn)而制定出完善的服務(wù)平臺(tái)設(shè)計(jì)方案。在整個(gè)系統(tǒng)中,分別定義出產(chǎn)品、設(shè)備、從機(jī)、用戶等四個(gè)概念,對(duì)終端設(shè)備和管理人員進(jìn)行抽象描述,并闡述各個(gè)概念之間的相互層級(jí)關(guān)系以及所對(duì)應(yīng)的系統(tǒng)原型,以達(dá)到服務(wù)平臺(tái)便于對(duì)大量設(shè)備終端和操作用戶統(tǒng)一管理的目的。該服務(wù)平臺(tái)采用去中心化設(shè)計(jì),具有易于擴(kuò)展、易于訪問、部署靈活等微服務(wù)特性,在提升服務(wù)平臺(tái)性能的同時(shí),從應(yīng)用層面提出一種城市照明控制設(shè)備管理分散的解決方案。
關(guān)鍵詞:微服務(wù);城市照明;服務(wù)平臺(tái);設(shè)備終端
中圖分類號(hào):TP311.5文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):2095-1302(2019)01-00-04
0 引 言
隨著城市化規(guī)模的不斷擴(kuò)大和品質(zhì)要求的不斷提升,以及城市照明范圍和燈具數(shù)量的逐漸增加,將城市照明進(jìn)行有效控制、統(tǒng)一管理尤為重要[1]。目前,國(guó)內(nèi)城市照明控制應(yīng)用系統(tǒng)多以單體照明系統(tǒng)為主,城市級(jí)的各個(gè)照明系統(tǒng)管理分散,導(dǎo)致后期的管理與維護(hù)較為困難,若能將其接入同一服務(wù)平臺(tái)統(tǒng)一管理,則問題即可得以解決。服務(wù)平臺(tái)處于整個(gè)控制系統(tǒng)的核心部分,主要是對(duì)數(shù)據(jù)的存儲(chǔ)與智能分析處理提供功能支撐[2]。但現(xiàn)有的服務(wù)平臺(tái)存在諸多共性弊端。例如,采用整體架構(gòu)模式設(shè)計(jì),所有功能封裝在一個(gè)應(yīng)用系統(tǒng)中,導(dǎo)致系統(tǒng)擴(kuò)展性差;系統(tǒng)耦合性高、集合度低,程序難以復(fù)用與維護(hù),與低耦合高內(nèi)聚的軟件開發(fā)原則相悖[3]。針對(duì)上述問題,本文提出基于微服務(wù)架構(gòu)(Micro-Service Architecture,MSA)的服務(wù)平臺(tái)系統(tǒng),有助于改善服務(wù)平臺(tái)性能,創(chuàng)新其構(gòu)建風(fēng)格,發(fā)揮積極的作用。
1 微服務(wù)架構(gòu)機(jī)制及其特點(diǎn)
微服務(wù)是一種構(gòu)建分布式系統(tǒng)的架構(gòu)風(fēng)格,將傳統(tǒng)單體結(jié)構(gòu)應(yīng)用劃分成一組小的服務(wù),每個(gè)服務(wù)器根據(jù)其負(fù)責(zé)的具體業(yè)務(wù)職責(zé)提煉單一業(yè)務(wù)功能,由于其均有自己的處理和通信機(jī)制,因此可部署在單個(gè)以及多個(gè)服務(wù)器上,同時(shí)服務(wù)之間相互獨(dú)立,采用輕量級(jí)通信機(jī)制,達(dá)到相互協(xié)作、互相配合的目的。微服務(wù)具有獨(dú)立部署和擴(kuò)展、功能解耦、獨(dú)立開發(fā)和演化、團(tuán)隊(duì)自治等特點(diǎn),能夠有效降低應(yīng)用復(fù)雜度、提升復(fù)用率、縮短應(yīng)用開發(fā)周期,同時(shí)適應(yīng)資源的彈性伸縮,進(jìn)而實(shí)現(xiàn)提升整體系統(tǒng)穩(wěn)定性與可用性的目標(biāo)。
2 系統(tǒng)服務(wù)平臺(tái)需求分析
目前,現(xiàn)行城市照明通過計(jì)算機(jī)技術(shù)、通信技術(shù)、軟件技術(shù)和自動(dòng)化控制技術(shù)等實(shí)現(xiàn)對(duì)分散照明設(shè)備的統(tǒng)一管理和自動(dòng)化控制,進(jìn)而達(dá)到改進(jìn)控制方式和降低能耗的目的。通常的照明控制系統(tǒng)體系結(jié)構(gòu)如圖1所示,主要分為四個(gè)不同的層級(jí),由上到下依次為應(yīng)用層、服務(wù)平臺(tái)層、接入層和物理設(shè)備層。
應(yīng)用層針對(duì)特定用戶的自身需求,創(chuàng)建相應(yīng)的實(shí)際應(yīng)用,是整個(gè)系統(tǒng)中照明控制設(shè)備與用戶交流的窗口。其中,通過應(yīng)用開發(fā)、智能控制為不同用戶提供對(duì)照明設(shè)備更為方便、直觀的管理方式。
服務(wù)平臺(tái)層可以稱為整個(gè)控制系統(tǒng)的核心層,承擔(dān)著多設(shè)備終端數(shù)據(jù)匯聚、處理、融合和優(yōu)化的核心功能,即為系統(tǒng)應(yīng)用的功能提供技術(shù)支撐。具體地,通過服務(wù)平臺(tái)提供的一系列接口,實(shí)現(xiàn)用戶應(yīng)用和照明設(shè)備終端的正常接入,實(shí)現(xiàn)上下層的數(shù)據(jù)傳輸,以達(dá)到用戶對(duì)照明設(shè)備能夠?qū)崟r(shí)檢測(cè)與控制的目標(biāo)。同時(shí),為應(yīng)用層提供統(tǒng)一的設(shè)備終端與用戶管理功能,并提供標(biāo)準(zhǔn)化的統(tǒng)一接口,使得數(shù)據(jù)傳輸更加簡(jiǎn)單直接。
接入層是設(shè)備層和服務(wù)平臺(tái)之間通信的橋梁,主要任務(wù)是將設(shè)備終端采集到的數(shù)據(jù)通過適當(dāng)?shù)膮f(xié)議進(jìn)行轉(zhuǎn)換,將數(shù)據(jù)以多種不同的網(wǎng)絡(luò)通信方式發(fā)送至上層,實(shí)現(xiàn)設(shè)備終端的接入。
物理設(shè)備層的主要功能是設(shè)備終端信息獲取,包括不同的物理傳感器和數(shù)據(jù)采集設(shè)備。各層之間互相配合,共同搭建物聯(lián)網(wǎng)應(yīng)用框架。
為滿足系統(tǒng)結(jié)構(gòu)各層不同的功能,服務(wù)平臺(tái)的需求主要有以下幾點(diǎn):
(1)照明控制設(shè)備能夠通過接入層的統(tǒng)一接入與管理;
(2)可對(duì)物理設(shè)備層上傳的數(shù)據(jù)進(jìn)行合理分析,判斷照明設(shè)備的運(yùn)行狀況,進(jìn)而做出相應(yīng)的處理,并能夠?qū)?shù)據(jù)與處理結(jié)果進(jìn)行存儲(chǔ),通過應(yīng)用層供用戶查詢;
(3)具備自動(dòng)化控制功能,實(shí)現(xiàn)對(duì)照明設(shè)備的智能控制。
基于上述分析,本文構(gòu)建一種可實(shí)現(xiàn)對(duì)不同終端設(shè)備進(jìn)行無縫接入和統(tǒng)一管理的開放式平臺(tái),并且該平臺(tái)可對(duì)設(shè)備終端數(shù)據(jù)進(jìn)行實(shí)時(shí)分析處理與存儲(chǔ),實(shí)現(xiàn)告警檢測(cè)、智能控制的功能,以達(dá)到遠(yuǎn)程監(jiān)控與節(jié)能的目的。
3 基于微服務(wù)架構(gòu)設(shè)計(jì)系統(tǒng)服務(wù)平臺(tái)
微服務(wù)架構(gòu)下城市照明控制服務(wù)平臺(tái)設(shè)計(jì)的目標(biāo)是將現(xiàn)有傳統(tǒng)物聯(lián)網(wǎng)服務(wù)平臺(tái)的服務(wù)進(jìn)行劃分和復(fù)用,同時(shí)整合新服務(wù),建設(shè)一個(gè)高內(nèi)聚松耦合可擴(kuò)展的服務(wù)平臺(tái)。
基于以上準(zhǔn)則,采用的基本思想是:將整體功能分解至各個(gè)單一的服務(wù)中,以實(shí)現(xiàn)對(duì)解決方案的解耦,即將整體復(fù)雜的系統(tǒng)拆分為一系列小且功能專一的微服務(wù),并通過各個(gè)服務(wù)之間的相互協(xié)作構(gòu)建整體應(yīng)用系統(tǒng)。
3.1 系統(tǒng)管理模型介紹
實(shí)踐中,為便于對(duì)照明控制系統(tǒng)中不同的終端設(shè)備進(jìn)行管理,定義用戶、產(chǎn)品、設(shè)備、從機(jī)四個(gè)概念,對(duì)終端設(shè)備進(jìn)行抽象描述。
(1)用戶是指用戶端的信息;
(2)產(chǎn)品是一類設(shè)備的統(tǒng)稱,亦可理解為“項(xiàng)目”或“系統(tǒng)”,是對(duì)同一類設(shè)備的集中化管理;
(3)設(shè)備通常是對(duì)系統(tǒng)中網(wǎng)關(guān)的抽象描述,主要用于幫助照明控制設(shè)備通過各種聯(lián)網(wǎng)方式接入服務(wù)平臺(tái),其屬性信息包括設(shè)備名稱、MAC、地址等;
(4)從機(jī)是設(shè)備下屬的某一類物理傳感器集合或開關(guān)控制設(shè)備集合。
用戶與設(shè)備的關(guān)系:每個(gè)設(shè)備只能有唯一的最高操作權(quán)限的用戶,可對(duì)設(shè)備信息進(jìn)行增刪改查等操作,稱為設(shè)備的“管理員”,而其余用戶可向該設(shè)備的管理員發(fā)送授權(quán)請(qǐng)求,授權(quán)成功后只能以“分享者”的角色對(duì)設(shè)備信息進(jìn)行查看,不可修改、刪除。
產(chǎn)品與設(shè)備的關(guān)系:每個(gè)產(chǎn)品下可包含多個(gè)設(shè)備,單個(gè)設(shè)備只能屬于一個(gè)產(chǎn)品。
設(shè)備與從機(jī)的關(guān)系:為便于對(duì)設(shè)備數(shù)據(jù)進(jìn)行管理,提出“從機(jī)”的概念,對(duì)設(shè)備數(shù)據(jù)進(jìn)行適當(dāng)分類,包括模擬量從機(jī)和開關(guān)量從機(jī)。從機(jī)位于設(shè)備之下,每個(gè)設(shè)備可包含多個(gè)從機(jī),單個(gè)從機(jī)只能屬于一個(gè)設(shè)備。
用戶和產(chǎn)品兩者之間沒有直接關(guān)系:產(chǎn)品是針對(duì)設(shè)備生產(chǎn)廠家為便于對(duì)設(shè)備進(jìn)行分類管理而產(chǎn)生的概念,同一類設(shè)備屬于同一產(chǎn)品,設(shè)備生產(chǎn)完成后需在服務(wù)平臺(tái)中將設(shè)備注冊(cè)于某一產(chǎn)品下;用戶是針對(duì)設(shè)備的普通使用者而產(chǎn)生的概念,用戶購(gòu)買設(shè)備后需在平臺(tái)中驗(yàn)證該設(shè)備注冊(cè)與否,并添加相關(guān)設(shè)備信息與自身用戶完成綁定。系統(tǒng)管理模型關(guān)系如圖2所示。
3.2 系統(tǒng)平臺(tái)設(shè)計(jì)
為方便上述管理模型的實(shí)際應(yīng)用以及對(duì)照明設(shè)備的智能控制與檢測(cè),在系統(tǒng)服務(wù)平臺(tái)中將整體服務(wù)拆分為多個(gè)微服務(wù)。其中,設(shè)備管理服務(wù)用于實(shí)現(xiàn)用戶對(duì)設(shè)備信息的添加與修改等;消息隊(duì)列遙測(cè)傳輸(Message Queuing Telemetry Transport,MQTT)服務(wù)用于為平臺(tái)提供即時(shí)通信功能;智能控制服務(wù)用于根據(jù)用戶提前設(shè)定好的時(shí)間計(jì)劃,智能控制對(duì)應(yīng)開關(guān)量的開關(guān)狀態(tài)等功能??梢姡總€(gè)服務(wù)的功能具體且專一,各自分別完成整個(gè)系統(tǒng)的部分功能。服務(wù)之間通過協(xié)作完成復(fù)雜的系列任務(wù),如智能控制服務(wù)功能的實(shí)現(xiàn)需由設(shè)備管理服務(wù)查看當(dāng)前所接入的設(shè)備,同時(shí)通過從機(jī)管理服務(wù)查看開關(guān)量從機(jī)的時(shí)間計(jì)劃設(shè)置情況,智能控制相應(yīng)設(shè)備的開關(guān)狀態(tài)。根據(jù)系統(tǒng)平臺(tái)的需求與功能和微服務(wù)架構(gòu)特征,設(shè)計(jì)結(jié)構(gòu)如圖3所示。
其中,基礎(chǔ)服務(wù)層對(duì)具有共性業(yè)務(wù)特征的功能進(jìn)一步抽取、內(nèi)聚,形成服務(wù)中心,在系統(tǒng)內(nèi)的多個(gè)微服務(wù)中共享使用。中間件層主要實(shí)現(xiàn)服務(wù)的統(tǒng)一管理,為服務(wù)間的相互協(xié)作運(yùn)行提供技術(shù)支撐。監(jiān)控層通過對(duì)應(yīng)用、服務(wù)、服務(wù)調(diào)用鏈等進(jìn)行監(jiān)控,形成一種對(duì)整個(gè)微服務(wù)系統(tǒng)平穩(wěn)運(yùn)行的安全保障機(jī)制。業(yè)務(wù)服務(wù)層對(duì)系統(tǒng)整體的應(yīng)用功能進(jìn)行專業(yè)化分工,通過去中心化的服務(wù)方式,實(shí)現(xiàn)功能解耦。
3.3 服務(wù)平臺(tái)工作流程
從系統(tǒng)架構(gòu)圖中可以看出,系統(tǒng)中每個(gè)服務(wù)的功能與數(shù)據(jù)與其他服務(wù)均相互獨(dú)立,服務(wù)之間采用RESTful HTTP協(xié)議的通信機(jī)制,下文通過添加設(shè)備信息過程中的具體業(yè)務(wù)說明微服務(wù)架構(gòu)的工作流程。
(1)應(yīng)用端訪問設(shè)備管理服務(wù),攜帶用戶驗(yàn)證信息(tokenId)和設(shè)備信息(包括MAC、設(shè)備名稱、地址等),發(fā)起添加設(shè)備信息請(qǐng)求;
(2)設(shè)備管理服務(wù)接收到請(qǐng)求后,根據(jù)用戶驗(yàn)證信息(tokenId)訪問用戶管理服務(wù),驗(yàn)證該用戶信息的合法性;
(3)根據(jù)應(yīng)用端請(qǐng)求中的MAC信息訪問產(chǎn)品管理服務(wù),驗(yàn)證該MAC信息的合法性;
(4)驗(yàn)證通過后,設(shè)備管理服務(wù)生成deviceId,并在數(shù)據(jù)庫(kù)中添加設(shè)備信息;
(5)將生成的deviceId告知MQTT服務(wù),用于構(gòu)成MQTT消息發(fā)送與接收的主題號(hào),至此添加設(shè)備信息完成。
上述過程中用到的RESTful API見表1所列。
4 系統(tǒng)原型實(shí)現(xiàn)
目前,開源的微服務(wù)基礎(chǔ)框架主要有Dropwizard和Spring Boot,兩大框架在實(shí)現(xiàn)技術(shù)上存在一定的差異[5]。Dropwizard的突出特點(diǎn)是簡(jiǎn)單、輕量,但依賴注入不完整,需開發(fā)者自行選擇,使得初期開發(fā)具有一定的難度。Spring Boot核心有依賴注入,解決大量的配置問題,提供模塊化的依賴管理工作,使其具有自動(dòng)化配置、快速開發(fā)、輕松部署等特性。因此本文選擇Spring Boot作為構(gòu)建微服務(wù)的基礎(chǔ)框架。本文以設(shè)備管理服務(wù)中獲取設(shè)備MAC信息為例,程序?qū)崿F(xiàn)如下:
其中,@RestController用于告知Spring該類是一個(gè)用于暴露HTTP端點(diǎn)的控制器(可以暴露GET,PUT和POST等基于HTTP協(xié)議的功能);@RequestMapping用于映射HTTP URI到對(duì)應(yīng)的類或方法。
在微服務(wù)架構(gòu)中,為實(shí)現(xiàn)正常的服務(wù)運(yùn)行管理功能,引入Spring Cloud組件。Spring Cloud是一個(gè)基于Spring Boot實(shí)現(xiàn)的云應(yīng)用開發(fā)工具,它為基于JVM 的云應(yīng)用開發(fā)中的配置管理、服務(wù)發(fā)現(xiàn)、斷路器、智能路由、分布式會(huì)話和集群狀態(tài)管理等操作提供了一種簡(jiǎn)單的開發(fā)方式[5]。以Eureka為例,Eureka是Spring Cloud Netflix的一個(gè)子模塊,也是核心模塊之一,用于服務(wù)注冊(cè)和服務(wù)發(fā)現(xiàn)。通過注解的方式使用Eureka,如通過注解@EnableEurekaServer啟動(dòng)一個(gè)服務(wù)注冊(cè)中心提供給其他應(yīng)用進(jìn)行對(duì)話,代碼如下所示:
5 結(jié) 語(yǔ)
本文將微服務(wù)應(yīng)用于城市照明控制系統(tǒng)服務(wù)平臺(tái),不僅能夠從應(yīng)用層面解決控制系統(tǒng)中的某些應(yīng)用問題,而且適用于對(duì)開放性、可擴(kuò)展性需求較高的城市照明控制系統(tǒng)。除此之外,分布式設(shè)計(jì)易于實(shí)現(xiàn)API跨服務(wù)通信,容易將多個(gè)照明控制系統(tǒng)整合到一個(gè)平臺(tái)中,實(shí)現(xiàn)統(tǒng)一管理,進(jìn)而從應(yīng)用、管理、維護(hù)等多個(gè)角度對(duì)城市照明控制系統(tǒng)進(jìn)行改進(jìn)。
參 考 文 獻(xiàn)
[1]劉廷章,王健,楊曉.基于Web的城市景觀照明遠(yuǎn)程監(jiān)控技術(shù)研究[J].電氣應(yīng)用,2009,28(3):32-35.
[2]程冬梅,王瑞聰,劉燕,等.基于REST架構(gòu)風(fēng)格的物聯(lián)網(wǎng)服務(wù)平臺(tái)研發(fā)[J].計(jì)算機(jī)工程與應(yīng)用,2012,48(14):74-79.
[3]吳昌雨,李云松,劉青,等.基于微服務(wù)架構(gòu)的物聯(lián)網(wǎng)應(yīng)用基礎(chǔ)框架設(shè)計(jì)[J].宿州學(xué)院學(xué)報(bào),2015,30(7):88-92.
[4]趙善龍,孫婉婷.基于微服務(wù)架構(gòu)的互聯(lián)網(wǎng)+農(nóng)業(yè)平臺(tái)設(shè)計(jì)[J].通信管理技術(shù),2017,33(2):53-55.
[5]張晶,黃小鋒,李春陽(yáng).微服務(wù)框架的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2017,26(6):259-262.
[6]張向祺.基于微服務(wù)的企業(yè)移動(dòng)辦公平臺(tái)規(guī)劃設(shè)計(jì)[J].信息技術(shù)與標(biāo)準(zhǔn)化,2016,25(3):71-74.
[7]王志勃,王麒森,畢艷茹.互聯(lián)網(wǎng)環(huán)境下微服務(wù)框架分析與研究[J].信息與電腦,2017(22):23-25.
[8]辛園園,鈕俊,謝志軍.微服務(wù)體系結(jié)構(gòu)實(shí)現(xiàn)框架綜述[J].計(jì)算機(jī)工程與應(yīng)用,2018,54(19):10-17.