解决方案︱OS2服务注册容灾方法探究
各位读者,中国电工技术学会定于2016年7月3~4日在北京铁道大厦举办“2016第十一届中国电工装备创新与发展论坛”,主题为“电工行业十三五规划研究与解读”。请感兴趣的读者扫描下方的二维码(或关注微信公众号“电气技术”),浏览会议详情和进行快速注册报名。注册时请准确填写相关信息,会议服务人员将及时与您确认参会事宜。
中国南方电网有限责任公司、东方电子股份有限公司、广东省电力设计研究院的研究人员周华锋、王玉琴、易仁波、李志勇,在2015年第11期《电气技术》杂志上撰文,本文结合工作实践,在南方电网一体化电网运行智能系统(OS2)建设时充分考虑电网安全高效运行,针对网、省、地三级电网运行智能系统中存在大量SOA架构的应用服务,这些服务分散在各个不同地域和电网系统中,为了充分利用SOA架构优势,便于服务能够快速被查询和调用,提出一种服务注册容灾方法:通过构建分级、分布式服务注册中心来实现整个南网服务注册、查询、绑定等管理,使得服务注册信息分布式注册容灾和高效调用。
该方法能够方便全网高效的实现应用服务的查询、调用,减少服务注册信息的集中模式导致的执行瓶颈以及信息维护困难等问题,本地、局域网、广域网三级服务注册中心记录的服务信息实时、高效、安全,提高了构建在SOA架构上的应用服务的可用性和抗灾能力。
为响应国家建设资源节约型、环境友好型社会的总体要求,南方电网提出了建设智能高效可靠绿色电网的发展方向,其中要求强化二次系统建设,注重科技进步和科技创新,建设先进、可靠的调度自动化系统与通信网络,提高电网调度运行智能化水平,稳步推进二次系统一体化和南方电网一体化电网运行智能系统(以下简称OS2)研究和建设。
在当前电网结构日益复杂、电网互联日益紧密、市场环境下交易电量巨大、输电裕度逐渐变小的情况下,调度员对自动化系统的依赖程度越来越大,EMS系统的设计和维护直接关系到电网安全,因此必须引起高度的重视,力争做到可靠、高效、万无一失。
在OS2的建设中通过结合系统技术架构和功能要求,研究系统整体/应用级/数据级容灾方案,明确和深入开展相关关键技术研究,确定横向和纵向配置要求、备份方式、运维方式和各类技术指标等,为后续南方电网一体化电网运行智能系统的建设提供坚强的理论和技术支撑。
1 OS2系统
南方电网遵循“统一调度、分级管理”的原则,下设四级调度机构,从上到下依次为:中国南方电网电力调度控制中心(简称“南网总调”),省(区)调度机构(简称“省调”或“中调”)、地区调度机构(简称“地调”)、县(市)级调度机构(简称“县调”)。各级调度机构均设立与其相适应的调度、运方、继护、自动化、水调等专业部门或岗位,并配备相应的专业人员,以保证相关专业工作的正常开展。各级调度各有所侧重,实现不同调度对象的调度运行与管理,下级度部门必须执行上级调度部门的指令。
目前的各级调度自动化系统与调度管理体制基本对应,在各不同的调度机构均设置相对独立的调度自动化系统,以完成各自所辖范围内不同电网调度对象的调度运行与管理。各级调度机构及自动化系统整体结构框图如下所示:
图1 南方电网调度机构及自动化系统整体结构框图
目前各级调度自动化系统直接采集所辖范围内电网的运行信息,然后通过数据转发的方式,实现电网运行数据的共享,即下级调度机构将所辖范围内的电网运行信息数据,通过通信转发的方式传送到上一级调度机构;另外,南网总调与各省中调之间还实现了电网模型数据与图形、信息的交换与共享;AGC、AVC、节能发电调度等功能的相互协调与配合也正在开展与建设之中。
每级主站/厂站系统中对业务功能的要求及数据需求都不相同,因此通过OS2模块化的设计方式,遵循面向服务的体系结构(SOA),在统一模型及数据接口标准的基础上,将各类业务应用封装成标准的业务模块建立灾备系统,通过基于服务总线的模块化横向协同技术,灾备系统能够保持成为主调系统的热备用系统,通过横向服务总线与主调进行数据交换和状态获取工作,根据不同的备用需求担当不同级别的备用角色。
当主调系统不能工作时,由灾备系统接替主调系统进行工作,提供主调系统的业务支持;当主调系统的部分业务功能模块无法工作时,由灾备系统对应的备用业务模块接替主调失效模块的功能。
2服务注册中心
在OS2中大量基于SOA架构的服务在整个南方电网广泛应用,而且作为一种大型软件系统架构方式会有更多的服务接入运行系统中,对这些服务的查询、调用则需构建服务注册中心进行管理。这些注册信息也需采取容灾方法使之能够高效运行同时又能抵御突然灾害。
2.1基于SOA架构的服务注册
SOA是一个组件模型,将应用程序的不同功能单元通过服务之间定义的接口和契约联系起来。接口采用中立的方式定义,独立于服务实现的软硬件平台和编程语言。使构建在异构系统中的服务能够通过标准和通用的方式进行交互。SOA体系架构包含ServiceProvider、Service Requestor、Service Registry等三个角色。角色间的操作有发布、查找、绑定。
服务发现首先要有一个服务注册中心,提供分类管理能力,用户存储、查询和版本化服务描述信息。利用分类能力来实现对服务的搜索。注册中心首先具有很高的可用性,并且多处备份的。实现技术也多种多样,例如:WS-Discovery、UDDI、LDAP、数据库和文件方式。具体选用需视实际情况确定。
服务是一种通过统一资源指示符(URI)标识的软件应用,其接口及绑定形式可以通过XML标准定义、描述和检索,Web服务能够通过XML消息及Internet协议完成与其他软件应用的直接交互。从外部的使用者的角度而言,服务是一种部署在网络环境上的对象/组件。下图,说明其构成,并简述其交互的过程。
SOA服务发现的体系结构图如下:
图2 SOA服务发现的体系结构图
1)服务在体系结构中的角色
SOA体系结构中的服务提供者是服务的所有者。服务请求是要求满足特定功能。服务注册中心是可搜索的服务描述注册中心,服务提供者在此发布他们的服务描述。
2)服务在体系结构中的操作
对于利用服务的应用程序,必须发生以下三个行为:发布服务描述、查询或查找服务描述以及根据服务描述绑定或调用服务,它包含三个操作:发布、查找和绑定。
3)服务的构件
服务构件有服务和服务描述。服务是一个由服务描述来描述的接口,服务描述的实现就是该服务。服务描述包含服务的接口和实现的细节。
交互的过程如下:(1)发布服务:服务提供者以WSDL文档格式将进行注册;(2)客户查询服务注册中心,找到服务位置,确定WSDL文档;(3)客户访问WSDL文档,WSDL提供与服务交互的数据;(4)客户发送SOAP消息请求;(5)服务返回SOAP消息响应。
服务发布、查找和绑定这三种交互操作是基于SOA服务协议栈实现的。每层都包含有业界标准的协议。
2.2分级、分布式注册中心构建
服务注册中心为SOA体系结构中的重要组成部分,目前主要使用的UDDI,在实际使用情况存在许多弊端:注册信息在备注册节点间完全复制,导致其随着服务数量的增加变得较难管理和维护;另一方面,目前UDDI只能提供被动的目录服务,而统计研究发现很少有组织或个人在发布服务后主动更新信息,这就造成了其上服务信息的有效性差。
因此本方法,提出了一种主动分布式服务注册机制,利用服务主动监测机制提高注册库中服务信息的实时有效性;利用分布式结构减轻统一注册中心的负担,构建方法结合本地、局域网、广域网的实际使用情况充分利用本地的高效信息读取能力、局域网WS-Discovery协议进行动态广播服务发现、在广域网采用UDDI协议进行远程服务注册和查询,使得服务注册中心能够高效、可靠运行。
本方法的基本原理是在本地采用本地文件、本地数据库建设本地服务注册中心,采用WS-Discovery方式建设局域网服务注册中心,在广域网采用UDDI方式建设广域网服务注册中心,采取上述构建方法充分考虑网络环境网络拓扑、网络带宽、网络速度对服务信息查询的影响,使得服务注册中心能够高效运行既能很好的满足本地服务信息快速查询需求,又便于远程广域网内进行服务信息共享和查询。
图3给出了分布式服务注册中心结构图。主要由三大部分组成:第一部分是本地服务注册中心;第二部分是局域网服务注册中心;第三部分是广域网服务注册中心。
图3 分布式服务注册中心结构图
第一部分是本地服务注册中心
本地采用本地文件、本地数据库建设本地服务注册中心,数据库可以是关系数据库也可以是内存库、实时数据库。服务信息查询采取本地优先策略:客户进行服务查询时,服务优先返回与客户位于相同节点上的服务信息。本地优先策略提供一定程度的性能优化措施,例如服务信息预存在内存中提供高速检索功能并兼顾服务的高可用性。
第二部分是局域网服务注册中心
在建设过程中采用WS-Discovery方式建设局域网服务注册中心。利用WS-Discovery协议来规范服务注册发现接口,具有注册、撤销、查找、匹配及响应等类型的操作消息,使用 SOAP 和 UDP使服务能够被客户端发现。
服务提供者Target Service,客户端Client,服务发现代理Discover Proxy由注册中心来实现,并以Managed Mode方式工作,便于跨网络进行服务发现和提高发现查找效率。服务提供者采用Hello消息注册服务,采用Bye消息撤销服务。服务发现代理服务及注册中心对服务进行记录。客户端采用Probe消息查询服务,采用Resolve消息获得服务细节。
跨网络发现服务需要使用Managed发现模式,也就是说借助服务发现代理(Discovery Proxy )机制。不仅能够跨越服务边界。而且能够保存服务的终结点信息、处理客户端的查找请求。同时显著提高查找效率,降低ad hoc模式多播查找引起的网络负载问题。
第三部分是广域网服务注册中心
在广域网采用UDDI方式建设广域网服务注册中心。作为逻辑上的统一体,其物理部署是以分布式系统的架构完成,而不同站点之间是采用P2P架构实施的,因此访问其中任意一个站点就相当于访问UDDI注册中心。UDDI商业注册所提供的信息从概念上来说分为白页、黄页、绿页三个部分。
UDDI 注册中心包含了通过程序手段可以访问到的对企业和企业支持的服务所做的描述。此外,还包含对 Web 服务所支持的因行业而异的规范、分类法定义以及标识系统的引用。UDDI 提供编程模型和模式,其规范中所有 API 都用 XML 来定义,包装在 SOAP 信封中,在 HTTP 上传输。
2.3服务查询容灾策略
分级、分布式服务注册中心主要用于管理并维护服务的运行信息,并提供相应的服务接口以方便客户随时获取这些信息。名字服务对外提供的主要功能如下:
1)服务注册:服务生产者通知该服务可以被使用,并提供访问该服务所必须的运行信息其中包括服务位置。
2)服务注销:服务生产者通知名字服务该服务不可用,先前保存的该服务运行信息变为无效,后续的查询处理中名字服务不再使用该服务信息。
3)服务查询:根据服务名称查询具体的服务生产者运行信息,以便于消费者根据这些信息访问服务生产者,实现服务消费者与生产者之间的动态绑定。
4)服务监听:服务消费者向名字服务提请监听请求,以实时监控自己感兴趣的服务状态,并在服务状态发生改变时得到相应的通知。
5)服务管理:名字服务需要对当前的服务运行信息进行管理,保证服务运行信息的有效性,及时清理崩溃或僵死的服务生产者,保障消费者得到及时与有效的服务。
除了解耦服务消费者与服务生产者的位置,分级、分布式服务注册中心还提供灵活丰富的查询策略,以提供额外的系统功能,满足不同的应用需求。可以提供的查询策略如下:
1)本地优先策略:客户进行服务查询时,名字服务优先返回与客户位于相同节点上的服务。本地优先策略提供一定程度的性能优化措施,并兼顾服务的高可用性。策略可能的使用场景如下:
图4 本地优先查询策略示意图
2)系统优先策略:客户进行服务查询时,名字服务优先返回指定系统的服务。这种策略提供系统间的服务高可用性。策略可能的使用场景如下:
图5 系统优先查询策略示意图
3)优先级策略:同一服务可以在不同的节点上运行多个实例,各个实例可以根据需要指定相应的优先级。客户进行服务查询时,名字服务优先返回高优先级的服务。对于相同优先级的服务,可以采用Round-Robin模式,或者依据节点的负荷进行选择。
对于服务注册而言,至关重要的是保证所注册的服务条目信息的有效性。否则失效服务会妨碍客户访问正常的服务。正常情况下,服务进程在退出时需要注销所提供的服务,但是在进程出现崩溃或者僵死的情况下,已注册的服务信息可能得不到注销。对于这种情况,系统必须提供相应的检测措施。在分布式系统中,由于同时还面临着不可知的网络故障,这个问题显得更为复杂。
目前,检测远端服务进程是否正常的有效方式就是采用心跳协议。在这里服务端进程需定时发送心跳报文,以表明自身的健壮性;如果在指定的数个周期内未收到服务端的心跳报文,则可判定服务出现异常。在分级、分布式服务注册中心,定时通告本地节点的当前服务信息,实际上可以使用这个通告信息来实现服务的心跳报文。如果节点在指定的周期内未收到某个服务的通告信息,则判定该服务出现异常,在随后的服务查询中应该避免使用该服务条目信息。
2.4 OS2注册中心容灾应用
通过构建分级、分布式服务注册中心系统可以高效地进行服务查询和调用,并实现容灾。
本地应用:本地服务可用时,人机界面优先使用本地的服务,以避免网络开销与延迟;但当本地服务故障时,人机界面切换到访问其他节点上的服务;最后当本地服务恢复后,人机界面又切换回访问本地的服务。
局域网应用:县调优先使用地调的服务,即在县调的调度员界面上显示的是地调提供的信息;但当县调与地调之间的通信出现故障时,县调的调度员界面自动切回使用本地系统提供的服务;当网络通信恢复后,又自动切回使用地调端的服务。
广域网应用:省调之间构成异地容灾,防止出现大的自然灾害,在本地发生大灾难时由异地注册中心提供业务容灾恢复,通过UDDI在物理上则是以分布式系统的架构实施的,不同站点之间是采用P2P(对等网络)架构实施,实现注册信息分块、分区域异地备份,提供特殊情况下省调注册服务信息系统的功能替代和整体备份。
从上面的描述可以看出,通过该方法在OS2系统中构建的服务注册中心,既可以方便的实现服务的高可用性,又可以容灾和负载均衡功能。
注册中心GREG提供的所有公开的通用服务及应用服务均纳入服务注册管理中心进行统一管理,对各类应用服务等的统一服务注册、发布、查找、撤销等管理。注册中心用于存储注册的服务信息、服务描述性文件WSDL、XSD文件、策略文件、安全认证票据以及ESB运行参数。
元数据子菜单对注册中心存储的资源分服务、WSDL资源、Schemas模型数据、WS策略进行管理。提供相应资源的查看、添加、删除等操作。显示注册的服务列表,直接本地注册的服务服务名为添加服务时填写的服务名称例如CDA服务;在局域网采用WS-Discovery注册的服务,服务名称为Disc_服务名称_时间;在广域网采用UDDI注册的服务服务名称为UDDI+服务名。服务注册列表界面如下所示:
图6 服务注册列表
下图为用户现场的运行实例:通过Main菜单进行操作。菜单内容包括:监控界面、管理、资源、元数据、身份验证等子菜单。
监控子菜单:调用导入的监控组件对系统分析监控。
管理子菜单:对导入的应用组件进行管理。
资源子菜单:采用目录的管理方式对注册中心存储的资源进行查看。
元数据子菜单:对注册中心存储的资源分服务、WSDL资源、Schemas模型数据、WS策略今下午管理。
身份认证:设置用户名、密码、管理角色。
图7 监控界面
如果其中内容面板的资源文件显示内容,以文本方式显示原始代码内容,以树状解析其中函数内容,可以点击上传对其进行更新,下载获得该资源文件。
图8 内容面板
3结论
本文结合长期的工作经验和南方电网一体化电网运行智能系统建设,对基于SOA架构的服务注册的安全容灾方法进行分析,给出一种分级、分布式服务注册中心构建方法,很好的匹配网、省、地3级电网运行智能系统中存在大量SOA架构的应用服务查询、调用的需求,满足注册信息的高效查询、高可靠性调用,确保服务注册信息的实时有效起到更好的服务容灾效果。
对于电力智能调度的整体SOA架构需要渐进开展,本文重点探讨服务注册中心的安全性和其容灾方法改进,为促进电力智能调度建设抛砖引玉。
关注电气工程技术、聚焦学科前沿发展