计算机系统应用  2021, Vol. 30 Issue (9): 110-115   PDF    
基于微服务架构的智慧照明管理平台
杨斌, 王加阳     
中南大学 计算机学院, 长沙 410083
摘要:随着国内城市路灯数量的逐年增加, 路灯耗电费用在政府财政支出中所占比例也急速上涨, 而传统的路灯系统由于缺乏稳定性与灵活性, 并不能有效地降低能耗, 节省开支. 本文结合微服务技术组件, 通过将具体功能抽离组成多个微服务的方式, 设计并实现了一种基于微服务架构的智慧照明管理平台, 目前系统已经完成开发与测试工作并已交付使用, 实际使用效果表明, 该平台能够有效地降低能源消耗, 具有一定的社会推广价值.
关键词: 智能化    微服务架构    智慧照明    物联网    
Intelligent Lighting Management Platform Based on Microservice
YANG Bin, WANG Jia-Yang     
School of Computer Science and Engineering, Central South University, Changsha 410083, China
Foundation item: National Natural Science Foundation of China (61772031); Natural Science Foundation of Hunan Province (2020JJ4753)
Abstract: With the increase in the number of street lamps in Chinese cities, the proportion of the power cost of street lamps in the government’s financial expenditure is also rising rapidly, while the traditional street lamp system cannot effectively reduce energy consumption due to poor stability and flexibility. In this study, an intelligent lighting management platform based on micro service architecture is designed and implemented by separating specific functions to form multiple micro-services. At present, the system has been developed and tested, which has been put into use. The practical applications show that the platform can reduce energy consumption substantially, which should be widely promoted.
Key words: intelligentization     microservice     intelligent lighting     Internet of Things (IoT)    

随着社会经济的发展, 节能减排已经提高到国家战略层面, 各地各机构均对节能降耗给予高度重视, 并列入企业和机构运行的重要考核目标. 据国家统计局统计, 我国城市道路照明灯具数量从2006年的1284万增长到2017年的2683万, 每年平均增长7%左右, 城市路灯数量的逐年增加, 导致城市用电中的路灯用电在公共用电中的占比不断上升. 故而设计一种稳定、可靠并且能够有效降低电量能源消耗的路灯管理系统成为政府与科研人员需要迫切解决的问题.

传统的路灯系统智能化程度较低, 无法实现精细化管理. 传统的“三遥”系统仅能够完成回路级采集和控制, 无法对单个路灯进行准确定位和实时操控. 而有些系统则无法实现故障实时报警功能, 只能通过工作人员主动检查的方式发现故障, 使得问题发现效率较为低下, 问题无法得到及时处理, 并且缺少行之有效的节能控制机制, 无法预先设置亮灯方案, 缺少灵活性与合理性, 增加了能源的消耗, 从而加大了政府的财政支出.

本文提出一种基于微服务架构的智慧照明管理平台, 通过该系统操作人员可以对路灯设备进行实时操控, 并且可以实时采集路灯设备的运行数据, 实现对设备的实时监控, 系统同时也提供了事件报警功能, 对诸如灯具损坏、漏电、过压、过流、过载等故障, 进行实时上报. 考虑到系统功能模块繁多以及后续系统规模会越来越庞大, 单体架构难以应付系统频繁更新、并发量高、系统维护等问题[1], 所以该系统将应用最新的微服务架构来实现. 实际应用效果表明, 该系统运行稳定, 为城市的照明管理提供了很好的技术支撑, 建立了完整的城市照明监控和运维体系.

1 相关技术

微服务架构是一种架构概念, 它的主要作用是将系统中相同业务功能抽离出来整合成一个微服务, 这样不同的业务请求就交由相应的微服务去处理, 从而降低系统的耦合度[2].

Zuul是开源的微服务网关组件, 建立在客户端与微服务之间, 可以用来做过滤器与路由器, 为外部提供统一的API接口.

Eureka是专注于服务管理的微服务组件. 系统中各个微服务在启动后需要在组件中注册, 调用微服务时需要先向组件发起订阅, 获得许可后方可发起调用, 组件每隔一段时间会对注册的微服务进行监听, 多次监听未果后组件会将该微服务注册信息消除.

Ribbon是客户端负载均衡组件, 面对高并发, 如果没有合理的服务器分配策略, 很容易造成服务器故障, 这时需要组件合理地为客户端分配服务器, 避免故障发生.

Hystrix是延迟和容错库, 在调用服务时, 如果出现了调用失败, 组件能够阻隔调用的进行, 降低服务器宕机和出错的概率.

Config是配置文件统一管理组件, 可以将系统配置文件放在预先设置好的远程仓库中, 开发时可根据系统需求远程获取配置, 使系统开发工作更加简便.

2 系统设计 2.1 系统需求分析

在集成系统中, 路灯设备通过宽带载波的方式与集中器进行通信, 集中器通过GPRS/4G/Internet通信网等方式将数据传输至服务器, 供应用平台使用, 通过这几部分的共同作用, 能够完成对路灯设备的实时操控与监测[3-6]. 具体的集成系统物理结构图如图1所示.

图 1 集成系统物理结构图

设计智慧照明管理平台的主要目的是能够有效地节约能源消耗, 降低路灯用电成本, 从而节省政府财政支出. 在对智慧照明管理平台进行具体的分析之后, 确定了系统的主要业务功能模块, 包括系统管理模块、基础信息模块、GIS地图模块、设备控制模块、统计分析模块和视频监控总览模块. 具体的系统功能模块图如图2所示.

图 2 系统功能模块图

系统各功能模块详细介绍如下:

(1)系统管理模块: 主要包括设置系统参数(通信参数与报警异常参数等)、角色管理、权限管理和系统菜单管理等功能.

(2)基础信息模块: 系统中需要记录与路灯设备相关的档案信息, 将数据存储在数据库中, 并对其进行管理, 主要包括台区档案、集中器档案、用户档案与前置机档案等.

(3) GIS地图模块: 为用户提供一个可视化的地图页面, 可作为系统的综合管理页面供用户使用, 在地图中显示路灯具体所在位置并做出标注, 提升视觉效果, 并且用户可以直接在地图中对具体路灯设备进行远程监控.

(4)设备控制模块: 实现对路灯控制器和数据采集集中器的远程操控, 具体功能包括主站抄读控制、数据实时采集、路灯亮灯预设置(路灯根据操作员预先设定的方案亮灯)与路灯设备实时操控.

(5)统计分析模块: 该模块可以实现对系统主要运行数据的整体展示, 主要包括路灯线路用电情况统计分析、路灯设备操控记录统计分析以及报警事件统计分析等功能, 在系统中主要以折线图和表格的形式进行展示.

(6)视频监控总览: 在系统中实现对路灯设备周边情况的实时查看, 以便对突发紧急事件紧急布控, 提升城市安全指数.

2.2 系统架构

智慧照明管理平台的整体架构分为4层, 自底向上依次为存储层、服务层、应用层和展示层. 具体的系统整体架构图如图3所示.

智慧照明管理平台在存储层采用目前流行的MySQL数据库来存储系统中的数据, 为了提高系统的数据查询速度, 同时还搭建了Redis集群服务, 可以有效提升对统计图表、档案信息等数据的查询效率. 应用层包含了系统中主要的业务功能模块, 是用户向服务层发送操作请求的接口. 服务层根据应用层的具体功能抽离出6个微服务, 处理来自应用层的服务请求. 在展示层, 系统主要以B/S客户端和移动端APP的形式为用户提供应用平台服务, 用户登陆系统即可进入GIS地图界面.

2.3 微服务架构

在服务端, 系统采用微服务架构进行设计开发, 通过对系统业务逻辑与功能模块的具体分析, 最终确定本系统使用6个微服务来支撑系统的服务端运行[7], 包括档案管理微服务、事件报警微服务、实时采集微服务、设备控制微服务、运行分析微服务和视频监控微服务. 通过使用最新的Spring Cloud技术组件[8-11], 不仅提升了系统的开发效率, 缩短了开发周期, 同时也保证了系统能够稳定运行. 具体的系统微服务架构图如图4所示.

图 3 系统整体架构图

图 4 系统微服务架构图

系统中搭建了微服务集群, 每个微服务部署在多个服务器上, 各微服务可以独立运行, 在具体的业务流程中, 经常需要依次调用不同的微服务, 被调用者首先需要在Eureka组件中完成信息注册, 然后调用者通过RestTemplate工具类即可实现服务调用.各微服务需要在其application.yml文件中进行相关配置实现注册, 由于Eureka Server本身也是一个微服务, 所以无需在自己的注册中心进行注册. 系统中一个Eureka Server的关键配置代码如下:

eureka:

 instance:

  hostname: node1 #主机名

 client:

  register-with-eureka: false

  fetch-registry: false

  ervice-url:

   defaultZone:

    http://node2:6572/eureka/, http://node3:

    6573/eureka/

代码中node1是一个Eureka Server节点, 此节点向defaultZone中的node2与node3节点注册, 并不需要再向自身注册.

用户的请求通过Zuul网关向Eureka服务器发起服务订阅, 得到成功的反馈后可以通过Rest或Rpc的方式调用需要的服务, 但当用户并发量过大时, 很可能会导致服务器崩溃, 影响用户的使用体验, 为了避免这种状况发生, 在系统中引入了Ribbon组件, Ribbon是一款开源的客户端负载均衡工具, 如果不特殊指定, 将以轮询方式调用微服务, Ribbon允许自定义负载均衡算法, 可以在项目中自定义配置类并通过在微服务启动类中指定的方式来实现. 系统中其中一个自定义算法的核心代码如下:

while(server == null) {

 if (Thread.interrupted()) {

  return null;

 }

 List<Server>upList = lb.getReachableServers();

 List<Server>allList = lb.getAllServers();

 int serverCount = allList.size();

 if (serverCount == 0) {

  return null;

 }

 if (count < 3){ //进行三次尝试

  server = upList.get(currentIndex);

 }else{

  count = 0;//获取次数

  currentIndex++;//服务器编号

  if (currentIndex>upList.size()){

   currentIndex = 0;//归零再次循环

  }

  server = upList.get(currentIndex);

 }

 if (server == null) {

  Thread.yield();

 } else{

  if (server.isAlive()) {

   return server;

  }

  server = null;

  Thread.yield();

 }

}

return server;

代码中“currentIdnex”表示当前正在尝试获取的服务器索引, “count”表示对当前服务器已经获取的次数, 算法中规定调用微服务时, 先向可获取的第1台服务器获取服务, 若请求3次后仍未获取到微服务, 会向下一个服务器请求, 若向所有服务器请求后仍未获得微服务, 则轮回到第1个服务器, 继续向其获取服务.

3 系统实现 3.1 通信技术实现

目前大部分路灯照明系统数据传输技术上大多以窄带载波或诸如ZigBee[12,13]这样的无线技术方案为主. 随着调光方案的普遍应用以及数据传输量逐渐增大, 窄带载波通信的可靠性与稳定性也随之降低, 路灯照明与电力传输类似, 有专用的输电网络, 这对于宽带载波的使用具有天然的优势, 基于通信性能的考虑, 本文路灯设备采用了基于扩频与正交频分复用等调制技术的电力线宽带载波技术进行数据传输[14,15], 提升了数据传输稳定性与传输速率.

3.2 视频信号传输实现

路灯设备上携带有视频监控设备, 可以对路灯设备周围区域进行实时查看, 视频监控模块充分考虑了距离、范围、视角等因素, 选取了合适的监控设备及灵活的传输策略. 视频监控设备的主要传输介质为光纤, 向智慧照明管理平台传输数据时, 采用NB-IoT、互联网、专线等方式. 具体的视频监控技术实现图如图5.

为了减少环境的干扰, 确保远距离传输视频数据时, 依旧保持高质量、实时同步的状态. 在信号转换方面, 使用发光端机将采集到的视频信号进行转换, 通过光纤传输后, 再利用收光端机转换为原信号. 在视频信号压缩存储方面, 考虑到视频监控设备的种类差异性可能会导致视频信号压缩存储不稳定, 所以提出了两种技术方案, 一种是直接接入DVR将模型视频信号进行压缩存储, 另外一种是通过接入交换机后连接NVR实现数据存储, 这两种技术方案保证了视频信号传输的稳定性.

图 5 视频监控技术实现图

3.3 应用平台实现

设计与开发智慧照明管理平台的主要目的是对城市道路路灯设备进行智能化管理, 以达到降低能耗、节省开支的目的, 下面对路灯设备的智能监控实现进行详细描述.

用户可以在GIS地图页面对具体路灯进行控制, 或从菜单进入设备控制页面对路灯设备进行控制. 控灯操作包括实时控制路灯开、关灯操作以及按预先设定的时间和亮度对设备进行开、关灯操作等, 通过控灯操作可以实现对路灯进行远程开、关灯, 提高能源利用率, 有效降低路灯设备电量消耗. 系统路灯设备控制相关页面如图6所示.

此外, 系统还具有统计分析功能, 系统可以向用户展示最近一段时间内路灯设备的用电量、亮灯率、瞬时量数据等情况, 并且可以根据用户在系统中设定的日用电量标准进行节能率分析. 具体的实现页面如图7所示.

图 6 路灯设备控制实现页面

图 7 统计分析实现页面

4 结语

智慧照明作为智慧城市建设领域一个重要分支,肩负着照亮城市、服务百姓的重要使命,而智能化的物联系统必将推动智慧照明产业的大力发展. 本文设计了一种基于微服务架构的智慧照明管理平台, 并对系统进行了实现, 与传统的路灯控制系统相比, 该系统可以实现对单个路灯的实时操控, 并且对城市道路路灯用电的节能情况利用可视化图表的形式进行展示, 同时, 对路灯设备发生的故障可以进行实时上报, 具有稳定性好、智能化程度高、操作简单易用等特点. 由于系统采用微服务架构搭建, 后续的开发与维护工作也相对容易很多. 本文构建的智慧照明管理平台同时可为智慧城市领域相关的系统开发工作提供参考.

参考文献
[1]
陈建海, 陈淼, 浦云明. 基于微服务架构B/S系统的性能分析. 计算机系统应用, 2020, 29(2): 233-237. DOI:10.15888/j.cnki.csa.007285
[2]
辛园园, 钮俊, 谢志军, 等. 微服务体系结构实现框架综述. 计算机工程与应用, 2018, 54(19): 10-17. DOI:10.3778/j.issn.1002-8331.1808-0014
[3]
陈鑫元, 李筠, 杨海马, 等. 基于物联网技术的智慧路灯系统设计. 数据通信, 2016(1): 45-49. DOI:10.3969/j.issn.1002-5057.2016.01.010
[4]
余建波, 宗卫周, 王涛, 等. 城市智慧照明控制系统研究与实现. 计算机工程与设计, 2018, 39(3): 836-841. DOI:10.16208/j.issn1000-7024.2018.03.042
[5]
何伟, 李云飞. 智慧照明监控系统. 计算机系统应用, 2019, 28(12): 72-78. DOI:10.15888/j.cnki.csa.007158
[6]
李麒, 管和鹏. 基于微服务架构的智慧路灯管理平台的设计与实现. 自动化技术与应用, 2018, 37(11): 59-63. DOI:10.3969/j.issn.1003-7241.2018.11.014
[7]
丁丹, 彭鑫, 郭晓峰, 等. 场景驱动且自底向上的单体系统微服务拆分方法. 软件学报, 2020, 31(11): 3461-3480. DOI:10.13328/j.cnki.jos.006031
[8]
李春霞. 微服务架构研究概述. 软件导刊, 2019, 18(8): 1-3,7. DOI:10.11907/rjdk.182825
[9]
周丹, 雷晓玲, 章民融. 基于微服务架构的校车安全管理系统设计与应用. 计算机应用与软件, 2018, 35(8): 165-169. DOI:10.3969/j.issn.1000-386x.2018.08.030
[10]
刘罡. 基于微服务架构的汽车经销商管理系统. 计算机应用, 2018, 38(S2): 243-249.
[11]
章仕锋, 潘善亮. 基于微服务架构的国土档案系统. 计算机系统应用, 2019, 28(7): 44-50. DOI:10.15888/j.cnki.csa.006991
[12]
沈博韬, 陈坚, 管小明. 基于ZigBee和GPRS路灯控制系统. 农家参谋, 2020(21): 146, 155.
[13]
吴夏, 高岩. ZigBee无线传输技术在集中空调系统中的应用. 现代电子技术, 2020, 43(24): 45-48.
[14]
王凤祥, 梁波, 孔晶, 等. 宽带载波技术应用及效益分析. 国网技术学院学报, 2018, 21(3): 35-38. DOI:10.3969/j.issn.1008-3162.2018.03.010
[15]
徐文涛, 李振东, 李博. 基于电力线宽带载波的双模用电信息采集系统设计. 电工技术, 2019(18): 76-79. DOI:10.3969/j.issn.1002-1388.2019.18.030