史磊, 刘钊, 徐辉, 汪莹洁, 刘羡天
(1.国网宁夏电力有限公司,宁夏 银川 750001;2.中电普瑞科技有限公司,北京 102200; 3.中电普瑞电力工程有限公司,北京 102200)
当前我国大多数高压直流输电换流阀监测系统基于客户机/服务器(client/server, C/S)架构运行,各个部分的设备之间互相孤立,实时交互性差,而且信息传递速度较慢,在数据处理量较大时不利于数据管理和统计,很难实现信息的即时查询和贡献等。基于浏览器/服务器(browser/server, B/S)架构的体系易于维护,软件可扩展性强[1]。
当前大多数采用B/S架构的电力设备都是基于单体架构开发的。IT技术发展的过程中,单体架构存在一些问题,当设备规模逐渐增大,依赖于升级硬件的方式来提升容量和增加功能的方式已无法满足大数据技术发展带来的新技术应用的问题[2]。微服务近年受到工业界的广泛关注[3],其思想是将单体架构系统方式按照业务功能和逻辑拆分成一个个独立的单元,这些单元可以独立开发设计以及部署和运维,克服了单体架构的紧耦合,实现了各个单元彼此之间互相配合协作,进而实现最终的产品功能[4]。
为适应大规模数据处理、存储和实时相互沟通的需求,解决信息孤岛问题,本文提出基于微服务架构的高压直流输电换流阀监测系统软件架构设计。本文首先明晰用户的需求,提出各功能以及模块之间的逻辑关系,将业务划分成单元形式;然后设计了微服务软件中的人机交互界面、业务单元和数据库管理等方面;最后对整个系统构建需要用到的框架工具作了介绍。
当前大多数采用B/S架构的电力设备都是基于单体架构开发的,典型单体架构可分为:表示层、业务逻辑层和数据访问层[5]。如图1所示。
图1 典型单体架构
表示层是与用户人机交互的接口,负责显示可视化数据以及输入数据或者控制指令。业务逻辑层负责请求相关的业务处理工作。数据访问层根据业务对数据库进行相关操作。
随着项目需求的不断增加和更多工程师的加入,代码库会不断增加,每次迭代项目增加或者减少功能都可能带来隐藏的缺陷,不利于维护和扩展。而用户量的增长,使得阻塞的风险升高,系统的高耦合度同时也加大了调试的难度。此外,单体架构使用一致的开发语言和框架,难以引入新框架与平台技术,导致系统的技术创新受到阻碍。
微服务是一种软件架构,应用于互联网服务端软件开发,是由面向服务架构(service oriented architecture, SOA)发展而来的[6]。微服务的设计思想是将单个应用分解成若干小的服务,每个服务自运行,服务之间通过轻量级通信机制进行信息交互。服务通过自动化的方式独立部署,不同服务可由不同的语言编写。在设计微服务时遵循的原则是将整个服务拆分成多个子服务,子服务围绕特定的具体业务,且每个子服务可以选择适合于相应技术的方式,形成高度内聚的自治单元[7]。
微服务架构的优势是可以互相独立地部署模块,随着需求的增加,启用越来越多的服务,能够减少对现有服务的影响。每个微服务可以单独升级,彼此间的依赖性弱,方便测试,因此具有更快的更新迭代周期。此外,部署相同规模的服务,总成本少于单体架构。
在高压直流输电系统中,换流站控制保护系统、阀基电子设备(valve base electronics, VBE)和晶闸管级触发与监测单元(thyristor trigger and monitor unit, TTMU)构成换流阀的二次监控系统[8]。VBE是晶闸管触发以及在线监测系统的核心组成部分,VBE需要将控制保护系统下发的触发脉冲信号通过光纤发送至TTMU。VBE汇总和处理TTMU的回报信息,并发送至控制保护系统,控保系统根据VBE上报的状态来进行保护[9]。上位机采用基于微服务思想B/S架构设计的换流阀监测系统软件,用于管理VBE上传的信息。
根据工程需求,高压直流输电换流阀监测系统软件包含如下功能模块:阀开通状态监测模块、晶闸管级故障信息模块、FOP动作信息模块、VBE故障事件信息模块、VBE自检信息模块和录波信息模块。本文设计的微服务架构如图2所示。
图2 阀监测系统微服务架构
在图2中,微服务包含用户侧、公共服务网关、微服务业务、数据收集和数据库等。用户侧从移动端或台式机WEB端登陆。公共服务网关负责身份认证和请求任务分发。微服务业务主要负责部署各种业务逻辑,包含了共有的业务逻辑和可添加和删除的微服务。数据采集端采集来自于VBE上传的信息,包括晶闸管级故障信息、FOP动作信息、VBE故障事件信息、VBE自检信息和录波信息等。数据库负责为各个微服务的功能提供数据支持。公共配置服务负责在分布式部署时解决配置繁琐问题,并提供对外公共网关入口。
每个微服务模块之间的通信通过Restful API接口互相连接,实现了模块之间的功能解耦。对于设备的基础功能方面,设立了公共微服务,例如设备管理、实时监控和用户管理等。对于特殊的功能方面,设立了扩展应用,如果用户有临时需求,可以在原来的基础上添加。本设备中的扩展应用包括了晶闸管级故障、FOP动作、VBE故障事件、VBE自检信息和录波信息等处理模块。
为了使用微服务的思想实现WEB服务的高压直流换流阀状态监测系统软件,本文使用Spring Cloud作为微服务框架。Spring Cloud构建于Spring Boot之上[10],在设计时可以从资源的维度对系统进行划分,同时为每个资源设置特定的统一资源标识符(uniform resource identifier, URI)。Spring Cloud同时搭建了微服务结构所需要的功能,部署操作简单,是业界使用较多的微服务框架。
换流阀监测系统架构技术选型如图3所示。
图3 换流阀监测系统微服务架构技术选型
解决方案如下:
(1) 服务注册中心。选用Spring Cloud Eureka负责服务的注册与发现,很好地将各服务连接起来。
(2) 公共服务网关。选用智能路由Spring Cloud Zuul统一所有的API接口,实现服务网关。
(3) 服务负载均衡。选用Spring Cloud Ribbon将均衡负载逻辑封装并运行在客户端中,将请求流量分发到不同的服务器。
(4) 公共配置中心。选用Spring Cloud Config读取远程或本地仓库的配置文件,集中统一管理配置信息。
(5) 断路器。选用Spring Cloud Hystrix在分布式系统出现故障时隔离服务访问点,提高系统鲁棒性。
(6) 微服务监控。选用Spring Cloud Admin通过UI界面查看客户端和环境信息等。
(7) 分布式链路跟踪。选用Spring Cloud Sleuth实现微服务架构中的链路追踪。
(8) 断路器监控。选用Spring Cloud Hystrix Dashboard监控断路器状态。
本文采用基于微服务思想的B/S架构设计换流阀监测系统软件架构,实现了大规模数据存储、处理以及分布式移动办公,避免了数据孤岛现象。换流阀监测系统的微服务架构可以实现敏捷开发和部署、拆分应用、细分业务边界和按照业务范围分配工作。通过Spring Cloud技术搭建系统,为微服务系统架构提供了标准化和全站式解决方案。在从容应对业务发展的同时,大大减少了开发成本,为系统的功能扩展提供了良好的基础,有效推进阀监测系统软件技术水平的进步。