王哲民 张平 万书鹏 易强
摘 要:随着当今网络技术的飞速发展和电力自动化业务场景的日益复杂化,智能电网对调度系统提出了更高的要求。服务配置中心作为服务化主要技术之一,负责提供统一的服务配置管理,不仅支持界面统一管理服务配置信息,而且支持客户端实时获取最新配置。服务配置中心同时配置推送功能,实现配置变更实时生效。通过实验说明,服务配置中心能够满足新一代调控系统的服务参数配置需要,保障服务配置的可靠获取。
关键词:服务配置中心;电力自动化;配置推送;实时生效
文献标识码:A
随着当今网络技术的飞速发展和电力自动化调度业务场景的日益复杂化,智能电网对调度系统提出了更高的要求[13]。面向服务的架构(SOA,Service Oriented Architecture)已在电网调度自动化系统中广泛应用,通过将功能封装成服务,实现业务功能的需求。在新一代电网调控技术支持系统中[4],各服务都有自己的配置参数需要维护,这些配置参数是服务的重要组成部分,因此提供服务配置中心来统一管理各服务配置参数显得很重要。
当前各服务通过配置文件维护自己的配置参数,配置参数变更时,需要手动修改配置文件,并重启服务。每个服务可能同时部署在多个机器上,因此修改某个配置参数需要手动修改多个机器上的配置文件,这样操作烦琐,并可能造成各机器上的配置文件不同步。因此需要提供一种服务配置方法,以更好地适用于新一代电网技术支持系统的服务配置查询与管理。
1 服务配置中心架构
服务配置中心用于统一管理各服务配置参数,提供图形界面和命令行界面统一管理和查询配置,各服务通过查询配置接口获取该服务的配置信息,配置变更时服务能实时感知到配置变化,实现配置变更信息实时生效。
服务配置中心由服务配置管理界面、服务配置管理进程、服务配置展示进程、服务配置变更进程、数据库、高速缓存等构成。服务配置管理界面用于维护服务配置信息,包括命令行界面和图形界面两种。服务配置展示进程部署用于为图形界面提供后台接口,服务配置管理进程部署用于处理服务配置信息,包括配置新增、修改、删除等操作,服务配置变更进程部署在各机器上,用于将服务配置信息写入各机器共享内存。数据库用于存储服务配置全量信息,高速缓存用于存储服务配置变更信息,服务配置查询客户端从各机器共享内存中实时查询服务配置信息。各服务通过服务配置查询客户端查询需要的配置信息。
服务配置中心提供统一的服务配置管理页面。在配置管理界面上,用户可以查询和管理服务信息和服务配置信息。服务信息包括服务ID、服务名、版本号、场景、场景实例、子场景、子场景实例和厂商等。服务配置信息包括服务ID、配置项和配置值等。
服务配置中心以接口函数[5]的形式为应用提供配置信息查询、配置变更订阅等信息交互机制。配置信息查询接口包括根据服务ID查询服务配置信息列表、根据服务ID和配置项查询配置值、根据配置项和配置值查询服务信息列表等。配置信息变更接口为根据服务ID和配置项列表订阅服务配置变更信息,其中服务配置变更包括:服务ID和订阅配置列表,订阅配置列表中的每一个项包括配置项、配置值、标识,其中标识包括配置值无变化、配置值有变化、配置值不存在三种。
2 服务配置中心技术实现
服务配置中心主要技术模块包括配置存储、配置管理、配置变更、配置查询、网络通信、界面展示等。下面就几个主要的模块进行介绍。
2.1 配置存储
服务配置信息统一保存在实时数据库中。实时数据库是面向电网实时监控、电网分析等应用的专用数据库,其特点是实时性強、吞吐量大和可靠性高;现有的实时数据库架构多为集中式存储架构并采用双机部署的方式,各数据节点都存储全部的数据,通过双机主备的方式保证数据的可靠性;数据访问一般由主机进行处理,备机只在主机故障时对外提供访问[67]。
2.2 配置管理
服务配置管理进程接收界面发来的请求,并根据请求信息对实时数据库进行相应的处理。
如果请求新增服务,则先从数据库表中查询服务ID是否已存在,若存在则返回失败,否则向数据库表插入一条服务信息。如果请求修改服务,则先从数据库表中查询服务ID是否已存在,若存在则修改数据库表中的服务信息,否则返回失败。如果请求删除服务,则先从数据库表中查询服务ID是否已存在,若存在则删除数据库表中的服务信息,否则返回失败。如果请求新增服务配置,则先从数据库表中查询服务ID和配置项是否已存在,若存在则返回失败,否则向数据库表插入一条服务配置信息。如果请求修改服务配置,则先从数据库表中查询服务ID和配置项是否已存在,若存在则修改数据库表中的服务配置信息,否则返回失败。如果请求删除服务配置,则先从数据库表中查询服务ID和配置项是否已存在,若存在则删除数据库表中的服务配置信息,否则返回失败。
2.3 配置变更
为了实现配置变更实时生效,服务配置中心使用高速缓存对配置变更信息存储。在新一代系统中的高速缓存[8]为对标Redis的自研软件,已在新一代调控系统中广泛使用。
对于服务信息和服务配置的新增、修改、删除请求,服务配置管理进程除了操作数据库外,还向高速缓存中写入配置信息变更记录。服务配置变更进程启动时,从数据库表中读取全量的服务信息和服务配置信息,并将信息写入机器共享内存。服务配置变更进程实时读取高速缓存,判断服务信息和服务配置信息是否有变更,有变更则将读取数据库表,将最新的服务配置信息写入共享内存。
2.4 配置查询
共享内存[9]能够保证访问效率,并且支持并发操作,广泛应用于计算机和电力系统自动化领域。为了提高配置查询的性能,配置管理页面和客户端接口中的配置信息统一从各机器共享内存中获取。共享内存中的信息则由各机器的服务配置变更进程实时写入。
服务配置查询接口从共享内存中查询服务信息和服务配置信息,对外提供多种接口形式,包括:查询服务信息列表、根据服务ID查询服务信息、根据服务ID查询服务配置列表、根据服务ID和配置项查询配置值、根据配置项和配置值查询服务信息列表等。
2.5 配置订阅
为了使服务程序实时获取配置信息变更,我们提供了配置订阅接口。服务配置变更订阅接口通过实时查询共享内存中的服务配置信息来判断服务配置是否变更,需填写服务ID和配置项列表,并提供回调函数。对于使用了订阅接口的服务,该服务订阅的配置信息如有变更,则会调用服务指定的回调函数。
图1所示为服务ID为test_mng_srv_1的服务,使用了配置订阅接口,订阅了两个配置项,分别为test_key和key。当前配置项key的配置值发生了变更,而配置项test_key不存在,服务接收到配置订阅信息。其中flag为“1”时表示配置项有变化,为“2”时表示配置项不存在,为“0”时表示配置项无变化。
2.6 网络通信
服务配置中心使用服务总线[1011]进行网络通信。服务总线是整合应用和服务的一个灵活的基础架构,构建面向服务(SOA)的系统结构,屏蔽服务实现、访问的细节信息,实现服务定位和交互,满足系统对可扩展性、伸缩性的要求,消除不同应用之间的技术差异,让不同的服务协调运作,实现不同服务之间的通信和整合。
图2所示为服务总线交互流程示意图。客户端和服务端通过服务总线进行信息交互,其流程包括:服务端发布服务信息,客户端发送服务信息,服务端接收服务请求,服务端回送服务结果,客户端接收服务结果。
在服务配置中心中,命令行界面与服务配置管理进程、图形界面与服务配置展示进程、服务配置展示进程与服务配置管理进程之间均使用服务总线进行通信。
2.7 界面展示
界面展示模块提供了统一的服务配置管理界面。主要包括命令行界面和图形界面两种。
命令行界面操作简洁,方便使用,用户按照命令行提示信息,输入相应的内容即可,是基于新一代调控系统的图形浏览器、图形编辑器进行实现的。
在新一代调控系统中,基于Qt5实现了一种轻量化的人机交互体系架构,通过设计并实现人机服务,将原有在前端实现的画面显示处理移植到后台人机服务,后者将处理过的画面显示数据发送给前端,前端的人机界面收到数据后,无需进行其他逻辑处理直接进行显示,对客户端资源要求低,前端逻辑简单,并便于在移动终端上部署;同时由于客户端通常只与人机服务交互,流程简单,对本地系统环境依赖程度较低[1213]。
界面左侧表格中展示服务信息列表,选中其中的某一项服务,右侧会展示对应的服务配置信息列表。在服务信息列表和服务配置信息列表的上方,可以点击新增、删除、修改、刷新按钮,对服务信息或服务配置信息进行相应的操作。
3 实验验证
测试环境为2台48核Intel(R)Xeon(R)CPU小型机,频率为2.00GHz,内存为64GB。机器上部署服务配置中心后台服务、动态库与图形界面。
3.1 服务配置功能测试
通过服务配置中心界面测试服务配置功能,包括新增、修改、删除、查询功能。在图形界面或命令行界面新增、修改、删除配置后,界面能够正确显示服务配置信息。
3.2 服务配置查询性能测试
通过测试程序测试服务配置查询接口的性能。通过服务配置查询接口查询不同量级的配置信息,测试结果如下表所示:
3.3 服务配置可靠性测试
通过在服务配置中心新增、修改或删除配置,同时客户端测试程序查询该配置信息,判断配置值是否正确。
测试表明,在界面新增、修改或删除配置后,客户端测试程序能够实时查询最新的服务配置信息,实现配置变更热生效,客户端感知配置变更的时间不超过1秒。
结语
服务配置中心用于统一管理各服务配置参数,提供图形界面和命令行界面统一管理和查询配置,各服务通过查询配置接口获取该服务的配置信息,配置变更时服务能实时感知到配置变化,实现配置变更信息实时生效。
随着网络技术的发展,尤其是微服务架构的普及和Service Mesh概念的兴起,我们可以在学习和了解其原理的基础上分析其好处和优势,借鉴其设计精华,不断升华我们的服务配置中心产品[1415]。
参考文献:
[1]辛耀中,石俊杰,周京阳,等.智能电网调度控制系统现状与技术展望[J].电力系统自动化,2015,39(1):28.
[2]许洪强,姚建国,南贵林,等.未来电网调度控制系统应用功能的新特征[J].电力系统自动化,2018,42(1):17.
[3]张涛,燕静,徐照淼,等.云计算环境下SaaS服务可伸缩性评估方法研究[J].西北工业大学学报,2014,32(6):9981000.
[4]国家电网有限公司.新一代调度控制系统总体设计[R].2018.
[5]电力系统简单服务接口规范:GB/T336042017[S].北京:中国标准出版社,2017.
[6]彭晖,陶洪铸,严亚勤,等.智能电网调度控制系统数据库管理技术[J].电力系统与自动化,2015,39(1):1925.
[7]翟明玉,王瑾,吴庆曦,等.电网调度广域分布式实时数据库系统体系架构和关键技术[J].电力系统与自动化,2013,37(2):6770.
[8]张鸿,徐攀,庄卫金,等.电网调度控制系统分布式高速数据缓存集群关键技术[J].电力信息与通信技术,2021,19(11):918.
[9]王瑾,彭晖,侯勇,等.基于共享内存的能量管理系统实时库非主键HASH索引[J].电力系统自动化,2011,35(11):7276.
[10]翟明玉,雷宝龙,等.电网调度自动化系统消息中间件的特性和关键技术[J].电力系统自动化,2012,36(14):5659.
[11]梅峥,路轶,李西太,等.电网调控系统广域服务访问及管理方法[J].电力系统自动化,2017,41(19):7481.
[12]黄昆,赵昆,杨立波,等.电网调控系统轻量化人机交互体系架构及关键技术[J].电力系统自动化,2019,43(7):159165.
[13]程亿强,吴晓娜,李汇群,等.智能电网调度控制系统图形广域维护与浏览技术[J].电力系统自动化,2017,41(14):171175.
[14]许洪强,姚建国,於益军,等.支撑一体化大电网的调度控制系统架构及关键技术[J].电力系统自动化,2018.42(6):18.
[15]万书鹏,苏大威,等.支撑变电站自动化系统广域运维的服务管理中心设计与实现[J].电力系统保护与控制,2018,46(22):149154.
基金项目:基于开放共享的通信总线关键技术研究与软件研发(524608210222)
作者簡介:王哲民(1991— ),男,硕士研究生,工程师,研究方向为电力系统自动化。