一种电能质量管理系统多机主备实现方法与流程

文档序号:18898615发布日期:2019-10-18 21:37阅读:175来源:国知局
一种电能质量管理系统多机主备实现方法与流程

本发明创造属于电能质量管理系统多机主备领域,尤其是涉及一种电能质量管理系统多机主备实现方法。



背景技术:

电能质量管理系统主要包括采集模块,计算分析模块,存储模块以及显示模块,各模块依次完成上一模块后续工作,每一个模块都是相辅相成,实现电能质量管理系统功能。任意一个模块中任一环节出现问题时候,都会导致电能质量管理系统中后续模块不能正常工作,影响电能质量管理系统的正常使用。电能质量管理系统运用领域愈加广泛,逐渐得到了关注和重视。电能质量管理系统的稳定性也愈加重要,传统上的单一服务器模式,很容易因电能质量管理系统中间某一环节故障导致系统不稳定,为了增加电能质量管理系统的稳定性,电能质量管理系统由单一服务器转变为多机服务器。



技术实现要素:

有鉴于此,本发明创造旨在克服上述现有技术中存在的缺陷,提出一种电能质量管理系统多机主备实现方法。

为达到上述目的,本发明创造的技术方案是这样实现的:

一种电能质量管理系统多机主备实现方法,包括:

s1、主控模块进程运行,创建服务器心跳报文定时服务和服务器信息监测定时服务,服务器信息监测定时周期大于等于2个服务器心跳定时周期;

s2、创建同步器线程;主控模块启动同步器线程,通过同步器控制通信报文在多机间通信过程;

s3、注册组播服务;同步器线程利用ace架构提供的接口直接创建组播服务,在发送者和每一接收者之间实现点对多点网络连接,组播服务用于网络传输报文,包括报文接收和发送;

s4、初始化本地服务器信息池数据结构;当获取服务器心跳报文后,更新报文数据中对应的服务器记录里面的内容;

s5、同步器运行,通过同步器注册组播服务将心跳报文发送至其他服务器;

s6、服务器心跳报文定时服务时间到,获取服务器信息池中本机记录数据;

s7、其他服务器接收报文,服务器信息检测定时服务时间到,获取所有服务器心跳报文解析数据,进入服务器信息检测及服务器角色更新服务,进行服务器间角色状态更新,完成心跳报文接收任务。

进一步的,所述步骤s1中,所述心跳报文包括服务器节点编号、主控模块进程编号、报文长度、时间、服务器状态、故障次数和成主机次数;

服务器节点编号:是电能质量管理系统服务器集群中每一台服务器的编号;

主控模块进程编号:在电能质量管理系统运行前配置固定配置好,运行过程中不发生改变;

报文长度:指本次心跳报文的长度;

时间:组心跳报文的时刻;

服务器状态:分为主机、备机和离线三种状态;

故障次数:用于统计电能质量管理系统运行后服务器节点累计离线次数;

成主机次数:用于统计电能质量管理系统运行后服务器节点累计成为主机的次数。

进一步的,所述步骤s6的具体方法如下:

s601、从服务器记录中获取本机服务器心跳报文结构数据;

s602、ace_outputcdr将心跳报文结构数据序列化并组成组播报文;

s603、向同步器写组播报文;

s604、组播服务发送该报文;

s605、完成同步器发送报文。

进一步的,所述步骤s7的具体方法如下:

s701、组播服务接收到组播报文;

s702、同步器接收到组播报文;

s703、通过ace_inputcdr解析报文,依次将服务器心跳报文拆分为5部分并保存到内存数据对象中;

s704、服务器信息检测定时服务时间到,获取s703中解析的所有服务器心跳报文内存数据对象;

s705、更新本地服务器信息池;

s706、进入服务器信息检测及服务器角色更新服务;

s707、完成心跳报文接收任务。

进一步的,所述步骤s703的具体方法如下:

s7031、创建内存数据对象数组;每个对象中包含服务器节点编号、时间、服务器状态、故障次数、成主机次数5个变量;

s7032、每次接受到服务器心跳报文后,通过ace_inputcdr接口解析报文数据并分别保存到同一个内存数据对象中;

s7033、内存数据对象添加到内存数据对象数组中。

进一步的,所述步骤s705的具体方法如下:

s7051、分别获取s704中获取到的内存对象数组中每一个对象;

s7052、将单个内存对象数据解析,获取服务器节点编号信息;

s7053、在本地服务器信息池中检索s7052中获取的服务器节点编号,并找到匹配的那一条服务器记录信息;

s7054、将单个内存对象数据中时间和服务器状态、故障次数、成主机次数分别更新到s7053中的记录;

s7055、更新完所有内存对象数组数据后,删除内存对象数组。

进一步的,所述步骤s706的具体方法如下:

s7061、进入服务器信息监测服务,统计本地服务器信息池中所有记录信息的时间是否在本周期内,判断服务器状态;

s7062、当s7061中时间不在本周期内,记录信息中显示的状态为“主机”或“备机”,判断此时服务器为“离线”状态,对该服务器超时累计次数加一;

s7063、当s7061中时间不在本周期内容,记录信息中显示的状态为“离线”,判断服务器处于故障中,该服务器超时累计次数不变;

s7064、统计所有记录信息中“服务器状态”为主服务器的记录信息数目,根据记录信息数目情况更新服务器角色;

s7065、完成心跳报文接收任务。

进一步的,所述步骤s7064的具体方法如下:

当主服务器数目为1时,跳过服务器角色更新服务,等待进入下一轮服务器信息监测服务;。

当主服务器数目为0时,且经过3个时间周期后无变化,通过公式在备机中选出临时主机后,更新本机信息并发送心跳同步报文;

备机筛选公式如下:

其中n为节点编号,i为超时次数,j为当选主机次数,当i或者j为0时候,只通过节点编号大小确定当选服务器;

当主服务器数目为2时,表示此时主服务器因故障修复好,将临时主机切换为备机,恢复故障主机状态,主、备机发送心跳同步报文;

当任意备机k出现故障并修复后,备机发送初始心跳同步报文,收到该心跳报文解析后,主机更新备机k的记录信息,并发送完整备机心跳同步报文。

相对于现有技术,本发明创造具有以下优势:

本发明的目标首先是解决多个模块运行中出现异常时,缺乏对模块运行监视和故障恢复的问题;其次是解决单机系统出现掉电或断网情况下,如何继续保持电能质量管理系统持续正常运行的问题。

本发明实施例中增加的主控模块用于监视所有模块运行状态,并对异常模块进行对应恢复操作,同时本发明实施例中增加了多服务器进行主备服务,当单机系统出现问题后,可以自由切换到其他备机中运行电能质量管理系统;本发明实施例中针对电能质量管理系统应用现场容易出现的问题,采取上述方式,使电能质量管理系统增强冗余性,提高系统鲁棒性,在已部署现场中达到预期效果。

附图说明

构成本发明创造的一部分的附图用来提供对本发明创造的进一步理解,本发明创造的示意性实施例及其说明用于解释本发明创造,并不构成对本发明创造的不当限定。在附图中:

图1为本发明创造实施例所述的电能质量管理系统多机主备实现方法流程图;

图2为本发明创造实施例所述的服务器角色更新服务流程图;

图3为本发明创造实施例中多机通信报文数据结构图;

图4为本发明创造实施例中电能质量管理系统结构图。

具体实施方式

需要说明的是,在不冲突的情况下,本发明创造中的实施例及实施例中的特征可以相互组合。

在本发明创造的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明创造和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明创造的限制。此外,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”等的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明创造的描述中,除非另有说明,“多个”的含义是两个或两个以上。

在本发明创造的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以通过具体情况理解上述术语在本发明创造中的具体含义。

下面将参考附图并结合实施例来详细说明本发明创造。

如图3所示,本发明实施例中心跳报文数据结构如下:

心跳报文数据结构分为“服务器节点编号”、“主控模块进程编号”、“报文长度”、“时间”、“服务器状态”、“故障次数”和“成主机次数”。

具体的,服务器节点编号是电能质量管理系统服务器集群中每一台服务器的编号,该编号在电能质量管理系统运行前固定配置好,运行过程中不发生改变。

主控模块进程编号也是在电能质量管理系统运行前配置固定配置好,运行过程中不发生改变。

报文长度是指本次心跳报文的长度,主要包括图1中的“时间”和“服务器状态”长度。

时间为组心跳报文的时刻,该时间是系统启动后固定设置时钟周期,进行定时组报文,一般设置为1秒,可以迅速在本地对所有服务器状态信息进行更新。

服务器状态分为主机、备机和离线三种状态。

故障次数用于统计电能质量管理系统运行后服务器节点累计离线次数。

成主机次数用于统计电能质量管理系统运行后服务器节点累计成为主机的次数。

如图4所示,本发明实施例中的电能质量管理系统结构如下:

1.电能质量管理系统主要分为底层设备和服务器以及中间的连接线路。

2.底层设备都是数据集中器。数据集中器用于采集所有智能设备的数据,并汇总处理,提供服务器采集模块所需数据并转发至采集模块。

3.服务器角色分为主机和备机两种。电能质量管理系统主机只有一个,备机可以为多台;电能质量管理系统初始时主机和备机角色是由系统预先配置好;这样可以将服务器配置高的机器作为主机,将服务器配置低的作为备机,对服务器进行差异化灵活部署,节省电能质量管理系统投入费用;

当初始时主机出现故障时候,系统中备机通过竞争规则临时切换成主机。初始时主机故障修复后为系统主机,由备机作为临时主机的服务器则切换回备机;服务器运行着主控模块、采集模块、计算分析模块,存储模块,以及显示模块;

电能质量管理系统的主备机服务主要是靠主控模块实现;主控模块为现有电能质量管理系统中负责向其他服务器发送心跳报文、以及负责解析其他服务器发送过来的心跳报文的模块;主控模块对采集模块、计算分析模块,存储模块,以及显示模块运行情况进行监测,可以让因故障崩溃的模块重新开启,同时主控模块还可以关闭其中某一模块,用来实现主备机服务器;

采集模块为现有电能质量管理系统中用于和底层设备中的数据集中器进行通信的模块,通过电能质量管理系统配置定时抄表任务,从数据集中器中获取指定的数据;只有服务器角色为主机的服务器中才被主控模块启动采集模块;采集模块启动后会依次与底层的数据集中器发送链接确认信息,然后建立通信链接;当主服务器出现故障时候,主服务器与数据集中器之间的链接断开,无数据采集过程,直到新当选为主服务器发送链接确认信息,建立新的通信链接;

采集模块将获取的数据生成多个sqlite类型的文件;计算分析模块获取采集模块生成的sqlite文件进一步生成相关统计信息的sqlite文件;存储模块将采集模块和计算分析模块所有生成的sqlite文件写入到数据库中;显示模块是输出模块,用于对外展示电能质量管理系统采集的数据信息,为web显示界面。

4.主控模块因服务器角色有所不同;当服务器为主机时候,主控模块将采集模块、计算分析模块,存储模块,以及显示模块都启动并监视模块运行状态;当服务器为备机的时候,主控模块只打开存储模块和显示模块;备机均为热备;主控模块监视到服务器角色发送改变时候,会立即按照相应角色关闭或者打开对应角色中运行的模块。

如图1所示,本发明实施例中多机实现流程如下:

1.主控模块进程运行,并创建服务器心跳报文定时服务,该定时服务用于定时给其他服务器发送心跳报文;同时创建服务器信息检测定时服务,用于统计一定时间周期内所有服务器状态信息,服务器信息检测定时周期大于等于2个服务器心跳定时周期,保证在一个服务器信息检测定时周期内,所有服务器信息均以更新一次;

2.创建同步器线程;主控模块启动同步器线程,通过同步器控制通信报文在多机间通信过程;

3.注册组播服务;同步器线程利用ace架构提供的接口直接创建组播服务,在发送者和每一接收者之间实现点对多点网络连接,组播服务用于网络传输报文,包括报文接收和发送;

4.初始化本地服务器信息池数据结构;该信息池每一条记录包含服务器节点编号,服务器主控模块进程编号,上次更新报文时间以及对应服务器状态等信息;所有服务器信息均在启动电能质量管理系统前配置好并保存到数据库中;启动后,加载所有的服务器配置信息,并初始化本地服务器信息池;在该服务器信息池中,每一个服务器只对应一条记录;当获取服务器心跳报文时候,更新报文数据中对应的服务器记录里面的内容;

5.同步器运行;

6.服务器心跳报文定时服务时间到,获取服务器信息池中本机记录数据;每台服务器均各自获取自己服务器目前角色信息,按照图3的格式,从服务器记录中获取本机服务器节点编号、本机主控模块进程号、当前时间、服务器状态,故障次数并统计报文长度,将上述数据依次组成服务器心跳报文结构数据;

7.ace_outputcdr将心跳报文结构数据序列化并组成组播报文;

8.向同步器写组播报文;

9.组播服务发送该报文;

10.完成同步器发送报文;

11.组播服务接收到组播报文;

12.同步器接收到组播报文;

13.通过ace_inputcdr解析报文;通过图3的格式,依次将服务器心跳报文拆分为5部分;获取服务器节点编号、时间、服务器状态、故障次、成主机次数信息,保存对应数据到内存对象中;

14.服务器信息检测定时服务时间到,获取所有服务器心跳报文解析数据;该部分是从步骤13中获取保存到内存的数据;启动更新本地服务器信息池工作;

15.更新本地服务器信息池;从步骤14中获取到的所有服务器心跳报文解析数据中,依次获取服务器节点编号和主控模块进程编号,在本地服务器信息池中检索匹配的那一条服务器记录信息;将步骤14中获取到的服务器时间和服务器状态数据依次更新到原来记录中;

16.进入服务器信息检测及服务器角色更新服务;详见图2.

17.完成心跳报文接收任务。

如图2所示,本发明实施例中服务器角色更新服务流程如下:

依次统计本地服务器信息池中服务器记录信息。服务器接收到多机通信报文后,会更新本地服务器信息池。首先统计本地服务器信息池中所有记录信息的时间是否在本周期内,如果不是就将该条记录信息中“服务器状态”为“主机”或“备机”变为离线状态(超时未收到对应服务器更新信息,判断该服务器离线),然后对该服务器超时累计次数加一,“服务器状态”在离线时不进行累加。然后统计所有记录信息中“服务器状态”为主服务器的记录信息数目,正常情况下是1,当主服务器出现故障时候,本地服务器信息池中对应的记录信息中显示“服务器状态”为离线状态,此时主服务器数目为0。

当主服务器数目为1时,说明系统运行正常,跳过服务器角色更新服务,等待进入下一轮服务器信息检测服务。

当主服务器数目为0时,经过3个时间周期后无变化,则进入服务器角色更新服务中。

本地服务器信息池中所有记录信息包含所有节点超时累计次数和当选临时主机次数。在电能质量管理系统初始化时,根据服务器配置情况,依次对不同服务器进行编号,配置高的服务器优先开始编号,故配置高服务器编号小,当进行服务器角色更新服务时候,利用服务器节点编号,服务器节点超时时间次数和服务器当选临时主机次数按照公式1计算在线备机竞选值,数值最大备机服务器当选为临时主机。其中n为节点编号,i为超时次数,j为当选主机次数,当i或者j为0时候,只通过节点编号大小确定当选服务器;之后更新本地信息池中本机记录信息中当选临时主机加1心跳报文用于别的服务器进行信息同步。

公式1如下所示:

当主服务器数目为2时,表示此时主服务器因故障修复好,电能质量管理系统服务器中存在正在运行的由原先备机变成主机情况,此时由备机变成主机的服务器检测到因故障修复好的主服务器发送的心跳报文后,将自身切换为备机;其他备机服务器接到服务器心跳报文后本地服务器信息池中更新这两台服务器状态信息。

当任意备机k出现故障修复后,向其他服务器发送服务器心跳报文,其中“故障次数”和“当选主机次数”都初始化为0。当其它服务器接收到该心跳报文时候,更新服务器状态和时间,保留原先故障次数,而主机检测到备机k的心跳报文后,会检测该服务器上线,将本地服务器信息池该服务器对应记录中“服务器状态”由“离线”设置为“备机”状态。进一步发送带有真实“故障次数”和“当选主机次数”备机k的心跳报文,其他服务器包括备机k收到该心跳报文解析后更新本地服务器信息池中备机k的记录信息。只由主机发送带有故障服务器心跳报文信息可以保持所有服务器因故障后恢复自身的准确信息。

本发明的目标首先是解决多个模块运行中出现异常时,缺乏对模块运行监视和故障恢复的问题;其次是解决单机系统出现掉电或断网情况下,如何继续保持电能质量管理系统持续正常运行的问题。

本发明实施例中增加的主控模块用于监视所有模块运行状态,并对异常模块进行对应恢复操作,同时本发明实施例中增加了多服务器进行主备服务,当单机系统出现问题后,可以自由切换到其他备机中运行电能质量管理系统;本发明实施例中针对电能质量管理系统应用现场容易出现的问题,采取上述方式,使电能质量管理系统增强冗余性,提高系统鲁棒性,在已部署现场中达到预期效果。

以上所述仅为本发明创造的较佳实施例而已,并不用以限制本发明创造,凡在本发明创造的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明创造的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1