朱 廷,贲道伟
(上海振华重工(集团)股份有限公司智慧集团,上海 200125)
伴随着移动互联网的发展,Restful作为一种基于分布式架构,标准的API越来越普及,它小巧轻便,易于扩展,低耦合,支持各种平台发布。为了满足多种移动应用对码头设备的监控数据的分发,振华重工设计了标准的服务接口API,使用云平台微服务和传统UA REST实现了该服务系统的API,并使用接口测试工具Postman进行了测试[1]。
前端和后端程序共同组成了网络应用程序。当前的发展趋势是前端设备层出不穷。因此,必须有一种统一的接口方案,方便不同的前后端设备进行沟通。RESTful API就是目前较为成熟的互联网应用程序的API设计理论。REST(Representational State Transfer)表述性状态转换,REST指的是一组架构约束条件和原则,支持分布式架构[2]。
REST是一种设计风格,REST包括几个重要的设计原则[3]:①资源可以是视频、图像、文本等,抽象所有的物品作为资源;②每一个资源都有用一个URI作为唯一的资源标识符;③每个资源的操作使用统一的接口,使用HTTP协议,使用HTTP协议的post、delete、put、get方法进行增、删、改、查操作;④对资源的操作是无状态的并且每一个HTTP请求之间是相互独立的。
简单来说,REST是一种使用URL来定位资源,使用HTTP请求描述操作的Web服务规范。基于RESTful API的分布式监控系统有以下优点:①前后端分离,和前端无关;②没有和操作系统绑定,可以支持多种操作系统,支持多种语言;③完备的软件支持方案,支持Swagger Editor在线编辑,便于API的共享。
振华设计了基于RESTful的微服务设计,将业务逻辑划分为小块的服务,服务之间是解耦的,服务之间使用消息队列,RESTful API通信,提供每一小块服务的程序可以使用容器封装,分布式管理,可弹性伸缩[4]。微服务架构如图1所示。
图1 微服务架构
采用微服务架构可以做到临时使用、单体应用、即开即用,覆盖码头各类场景,并且做到大数据量,高可用性,弹性伸缩。微服务还包含如下优点[5]:①系统逻辑清晰,每个程序员的职责明确,上手容易;②灵活性高,服务组件积木式搭建,扩容缩容方便;③技术异构,一个系统可以使用多种语言;④持续集成容易,修改一行代码不用发布整个系统,无感知更新;⑤高可用,服务可熔断、降级,局部故障不影响核心功能。
微服务有如此多的优点,但同时也存在如下缺点:①服务太多,难以定位故障;②服务太多,运维工作量大;③消息中间件、RESTful API性能不如内存复制。由于工程不需要反复变动,整体来看利大于弊。
UA RESTful是在ZPMC OPC UA Server基础上封装的一套RESTful接口支持,其技术特点主要体现在以下几点[6]:①安全,采用TCP/IP协议的固定端口服务,对防火墙友好,同时支持用户名密码及证书连接机制,保障安全性;②简便,集成了实时、历史及报警功能,以及统一的配置调试工具,方便工程制作与部署,大大提升现场实施效率;③高效,支持64位架构,将单服务采集点数提升一个数量级(20万点),能有效提升单点能力;④通用,采用跨平台技术,同时给出了Windows/Linux两套服务软件,并且采用了容器技术方便运维;⑤灵活,采用新的插件技术,将通讯、日志、模拟数据等共用组件公共化,给每个驱动赋能。
RESTful API架构如图2所示,Redis主要用于存放各个码头设备的实时状态数据及报警数据;History DB主要用于存放各个码头设备的历史状态数据及报警数据;Mongo DB主要用于存放各个码头设备的传感器数据;平台对外提供Restful API,供Web GUI或其他服务调用;码头设备的数据通过MQTT协议上传至智能平台的MQTT Server中。
图2 RESTful API架构
以RESTful为标准,定制了一系列API标准,包括实时数据、历史数据、实时故障、历史故障;支持订阅功能、统一登陆、在线状态查询等一系列功能。
以实时数据为例,我们用BrowsePort,BrowseMachine查询所有码头和机器列表,用BrowseItem查询所有数据列表,ReadItem读取数据项。RESTful API示例见表1。
表1 RESTful API示例
新一代ZPMC WEB CMS平台整合了边缘数据采集、数据流处理、故障告警、历史数据存储等全流程数据层功能,为Web应用提供丰富的RESTful数据接口,包括数据点的读写、订阅,以及数据点定义的在线更新接口。
通过MQTT协议,平台支持百毫秒级的实时数据采集,在上层Web应用内实时呈现。同时支持灵活的故障表达式定义,无需工程配置,直接在用户浏览器即可进行故障点定义和更新。经过Kafka消息分发,流处理功能提供额外的数据处理、分析能力;历史功能则通过历史数据库存储、备份完整数据,保证任意数据可追溯。
运用云原生开发理念,借助Kubernetes生产级容器编排系统,使得平台具备弹性伸缩,故障自愈能力。同时集成Prometheus监控系统及EFK日志系统,实时监控系统各组件运行状态,出现节点故障、负载过大等异常情况时,运维人员可以快速发现并定位问题,保证系统在线。平台可以适应各类公有云及私有云环境,对于大数据量,融合多码头数据等业务场景拥有巨大的潜力。
ZPMC作为振华重工历经十多年研发和应用产品,支持OPC、UA数据协议,在最新的RESTful协议提供之后,加入了对RESTful API的支持,我们采用轮询的方式,对原来的接口做出了修改封装,在不改变原逻辑的情况下,无缝衔接了新的RESTful接口[7,8]。
如 图3所 示,RESTful服 务 支 持 跨 平 台,可 以在Windows和Linux上 运 行,提 供 了OPC、Alarm、UA等服务,客户端支持网站、传统PC客户端和微服务。
图3 分布式监控架构
本文提出了基于RESTful API的微服务云平台的应用,作为UA接口插件的RESTful API的第三方支持,基于RESTful的分布式监控系统,跨系统、跨平台进行软件监控。致力于解决码头用户的智能监控需求,提供更多便捷的数据监控接口,稳定的架构,大数据、大容量的数据支持,为振华的硬件服务保驾护航。