APP下载

微服务架构的智慧彩灯控制系统设计与实现

2022-02-22孙志尧赵俊甘雨航

电脑知识与技术 2022年36期
关键词:协议微服务控制系统

孙志尧 赵俊 甘雨航

关键词:微服务;物联网;控制系统;WebSocket 协议;前后端分离

中图分类号:TP311 文献标识码:A

文章编号:1009-3044(2022)36-0088-04

1 引言

每年都会盛大举办的彩灯灯会作为我国传统文化的杰出表现方式,也是非物质文化遗产之一,并对我国的文化传播产生深远的影响[1]。传统的彩灯灯组采用独立单片机的控制方式,灯组之间没有协同控制能力。并且,彩灯控制器都采取线下的操控机制,需要维护人员到现场进行设备操控及维护。在举办大型的彩灯展会时,需要大量的设备维护人员,耗费了大量的人力资源成本。并且,灯组之间没有直接的协同关联,在进行配合表演的时候,存在一定的操作难度。

物联网是指通过传感、识别、定位等新一代信息技术构建的物、人、物之间的信息互通互联,从而实现智能化感知、监控等全方面一体化管理[2]。

利用物联网技术,将各个彩灯设备之间建立控制网络,优化控制方法,提高设备的管理效率,也能大幅降低人工成本。同时,在设备的故障监测及诊断方面,高速的网络传输能力也能更及时且全面地实现多设备的总体状态监测,最大限度地保证设备运行的稳定性和安全性。

2 系统技术介绍

系统在前后端分离的架构基础上,使用微服务的后台架构模式进行系统搭建。前端采用Vue.js框架作为基础框架,加入bootstrap模板实现页面的样式优化和接口通信。同时,利用H5的websocket协议,实现界面数据的实时更新。后端采用Go语言的微服务框架Go-Zero进行开发,与控制器之间采用TCP协议进行数据通信。数据库采用关系型数据库MySQL,ORM框架采用Gorm框架實现数据库的相关操作。

2.1 前端开发技术

Vue.js是一个国内很流行的前端开发框架,框架将原本耦合的网页构成部分,通过组件的形式进行拆分,实现网页的结构解耦。同时,页面中重复性的功能部分也不再需要重复开发,可以直接沿用已有组件进行功能实现[3-4]。

Bootstrap模板为前端最为流行的样式设计模板之一,提供了丰富的样式组件和功能组件,极大地减轻了界面美化的工作难度。同时,模板也提供了详尽的开发文档,让开发人员能快速地上手开发,极大地提高了开发人员的开发效率。

WebSocket通信协议是一种基于TCP,可以实现双向推送数据的全双工通信协议[5]。在传统的实时通信策略中,网站大多采用Ajax轮询方式实现数据的实时推送。然而,由于HTTP请求中可能会包含大量的无效信息,占用了大量的通信资源。为此,在HTML5 中定义了WebSocket通信协议。该协议支持双边的数据推送,实现了服务器主动向界面端推送数据的功能。

2.2 后端开发技术

Go语言是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。Go语言的高并发以及部署简单的特性能够较为完美地契合微服务架构的开发模式,可以实现快速开发,并且能够承受系统在接收大量访问时的承压能力。

传统的单体式架构将所有的功能模块嵌合到同一个服务系统中,当某个模块发生故障或进行升级时,整个系统都需要下线并重新开发,各个功能的实现程序之间的依赖性强,耦合度高,而且具有扩展局限性[6-7]。微服务架构的设计理念是将传统的单一应用程序转变成为一套小型的服务组合,根据业务逻辑将单体架构拆分成多个服务,每一个微小的服务都具有单一职责且可以单独部署和运行[8]。

Go-Zero框架是一款国内开发的微服务框架,集成了各类工程实践中的Web和RPC框架,在支持传统的HTTP API 接口的基础上,也支持模块间通信的RPC接口。通过弹性设计保障了大并发服务端的稳定性,并且内建服务发现和负载均衡。同时,它支持中间件,方便进行系统的功能扩展和优化。

2.3 云服务器部署技术

Docker是一款开源的容器引擎,开发人员可以将开发程序打包为一个镜像文件或容器,从而实现系统跨系统的部署能力,简化部署流程[9]。同时,Docker容器之间相互独立,容器之间的运行状态不会相互影响,保证了程序运行的稳定性。

3 系统关键功能实现

3.1 用户权限管理

系统在人员管理方面,采用了权限管理机制,即根据用户的权限等级,给予对应的系统操作功能。权限管理机制能使系统在进行功能展示和设备管理与维护保障方面提供更加安全的操作机制,防止误操作及恶意操作导致彩灯灯组设备的损坏,增强系统的操作安全性和稳定性。

利用Vue.js提供的路由守卫,在页面跳转时,会由路由守卫进行用户登录状态的判定,并根据账号的权限等级,对界面中的操作按钮组等功能模块进行对应的调整,实现基本的权限管理功能,前端验证流程如图1所示。

同时,为了进一步增强系统的安全性,在后端加入了JWT验证机制。用户在登录系统时,后端会生成专属的用户验证码。当后端接收到接口请求时,会对该验证码进行核对。同时,为了保证验证码的安全性,对该码的有效时长进行了配置。当用户退出登录后,验证码也将进行更新,防止盗用。

3.2 彩灯状态监测

为了实现对于彩灯运行状态的实时监测,保证设备的正常运行及发生故障时的及时处理,控制系统会与彩灯控制器之间建立的TCP链接,实时地接收控制器发出的彩灯监测数据包。数据包内容包括彩灯的运行状态,包括彩灯的开关状态,当前所处的运行模式及设备本身的运行状态,传输流程如图2所示。

控制系统接收到彩灯数据包后,会对数据包中的数据进行解析。为了能够实时准确地将数据包的解析结果展示到系统前端的界面上,后端服务器采用WebSocket协议进行该部分的数据传输,将数据主动推送到前端界面。界面会根据接收到的数据,对展示的内容进行调整,如彩灯的亮灭状态,电流大小等,以保证数据的可视化程度和准确性。

后端服务器会在系统的数据库中查找对应设备的运行状态参数,与解析结果进行对比。状态参数与可浮动范围将作为评判设备运行状态的判断指标,当彩灯数据包中的实时状态参数偏离正常参数时,系统会提示管理员及时查看,并根据偏离的范围大小,进一步对设备发出控制指令,及时关闭设备,防止设备遭受更加严重的损害,处理流程图如图3所示。

为了提高对于设备故障原因的判断准确度,为维护人员提供更加有效的维修建议,系统为维护人员开设了故障原因及维修方法上传的通道。在原有的设备诊断基础上,结合维修人员的维护经验,进一步完善系统的故障诊断准确度。

3.3 彩灯控制

为了实现控制系统对多个彩灯设备的识别与控制,在进行实际控制前,需要将设备的基本信息上传至系统的设备管理数据库中。数据库会对设备的基本信息进行存储,包括设备独立编号,生产厂家,正常运行下的各类参数,设备的控制协议。同时,给设备分配对应的维护人员,便于设备维护情况的回访。利用表间的外键关系,将设备的基本信息与存儲的控制协议建立关联,数据存储结构如图4所示。

控制协议的由系统提供基础的控制指令,包括开关,亮度及持续时间。同时,系统支持拓展控制指令,以满足不同设备的控制需求。

控制系统利用与彩灯控制器建立的TCP链接,对彩灯设备进行控制。由于TCP协议通信存在丢包和粘包问题,系统采用格式数据方法中的组包法[10],在数据包的报文头中加入描述该数据包的数据信息。利用固定的格式发送数据包,解决此类问题,数据报文头格式如表1所示。

在系统后端接收到有关彩灯控制的指令时,后台将根据彩灯的设备编号查询对应的控制协议,然后解析系统发来的控制指令,将指令内容转换为控制协议中的对应内容,下发给控制彩灯灯组的下位机。

下位机接收到控制指令,操作彩灯完成对应的动作。在完成指令发送后,灯组设备会将指令的执行情况,通过数据包反馈给系统后端。后端服务器将根据接收到的数据内容,将执行结果展示到前端页面,同时将本次的操作保存到设备操作日志当中,流程图如图5所示。

3.4 多彩灯协同控制

利用单个彩灯的控制协议,系统提供了多设备协同控制的基本控制模式,包括多灯同亮、走马灯、流水灯、呼吸灯四种模式。通过合理地将各个设备进行排序,实现多设备按照设定的顺序执行多灯的协同控制。同时,系统支持在线配置,可在系统界面进行多灯控制的内容配置,包括顺序、亮度、持续时间等。

系统后端会解析接收到的数据包,从中得到彩灯的模式、数量、控制顺序及亮度等信息。由于是同一个数据包发来的,所以灯组中各个彩灯设备的亮度及持续时间保持一致,控制流程如图6所示。

3.5 新设备接入拓展

系统具有很高的可扩展性,支持不同类型的彩灯灯组接入。为此,系统提供了上传控制协议及彩灯设备信息的功能。通过上传设备信息和对应的控制协议,即可实现新设备的接入。系统将指定控制协议的书写格式,并支持在线编辑和文件上传两种方式来实现控制协议的导入。

4 结束语

本文结合物联网技术,基于微服务架构,设计实现了在此架构下的新型彩灯控制系统。在传统的物联网控制系统的基础上,增加了支持新型设备接入的拓展功能,为系统嵌入新型设备提供了极高的便利性。同时,在设备维护方面,也实现了对于多设备的全局性监测,减少了设备的维护成本。

此外,微服务的系统架构能够极大地提高系统的稳定性和安全性。当系统中的某个模块发生故障时,不会影响其他模块的运行状态。对于系统故障的排查,只需排查指定模块即可,提高了修复效率。

猜你喜欢

协议微服务控制系统
微信公众平台在医院图书馆的应用现状调查
基于数字化变电站SV报文通信可靠性问题研究
从单一模式系统架构往微服务架构迁移转化技术研究