掌桥专利:专业的专利平台
掌桥专利
首页

基于多进程架构的微机监测系统实时数据处理方法

文献发布时间:2023-06-19 12:02:28


基于多进程架构的微机监测系统实时数据处理方法

技术领域

本发明涉及技术领域,尤其涉及一种基于多进程架构的微机监测系统实时数据处理方法。

背景技术

联锁设备微机监测系统是指利用微型计算机对电气集中联锁设备进行监督和测试的设备或系统。为提高电气集中联锁设备的可靠性、可维护性和可用性提供了重要的技术手段。监测对象主要有:室外的轨道电路(主要是受电端电压、电流)、道岔及转辙机(主要是道岔密贴程度、转辙机动作和摩擦电流)、色灯信号机(主要是主灯丝的完整性和非正常关闭)。室内的电源系统(主要是两路工业电源的电压及各种控制电源的电压和表示电源电压,主、副电源的切换时刻及停电时间,熔断器完整等)、各种操作(记录)、继电电路动作状况(记录)、电缆绝缘、与区间联系设备、站内道口设备的故障诊断和列车发车时间等。监测设备是电气集中联锁设备的辅助设备,在任何情况下不允许影响主系统的功能和安全性。

由于系统接口众多,数据交换量大,实时数据显示要求高,瞬时数据存储需求高,目前系统多采用商用实时数据库和关系数据库完成数据的落盘和显示、报警等工作。

目前,微机监测系统方案之一是采用关系型数据库来存储和读取实时和历史数据,关系数据库具有数据结构化,集中存储控制,共享度好,安全性高,支持复杂查询等特点,非常适合历史数据的存储。

由于关系数据库存储在磁盘上,如果存储实时数据,频繁的读写会导致大量的磁盘IO操作、查询速度相对较慢,系统响应速度慢,严重可能导致数据来不及写入导致丢失。使用内存数据表这样的技术,能够一定程度上提高系统的速度,但也无法满足微机监测每秒近万条的数据的读写。

为此,本发明的设计者有鉴于上述缺陷,通过潜心研究和设计,综合长期多年从事相关产业的经验和成果,研究设计出一种基于多进程架构的微机监测系统实时数据处理方法,以克服上述缺陷。

发明内容

本发明的目的在于提供一种基于多进程架构的微机监测系统实时数据处理方法,采用多进程架构技术,降低了监测系统海量数据对数据库存储和网络使用的大量消耗,实现了系统实时数据的毫秒级处理和查询功能。

为实现上述目的,本发明公开了一种基于多进程架构的微机监测系统实时数据处理方法,为基于Redis(Redis全称Remote Dictionary Server,开源软件,远程字典服务)的微机监测实时数据处理方法,其特征在于包含以下步骤:

步骤一:联锁接口软件从维修机软件获取区段占用、出清、锁闭;道岔定反位、道岔锁闭、信号机开放、信号机锁闭、信号机电流、机笼板卡状态的信息,外部接口软件从通信分机、电源屏、电池、绝缘主机和漏流主机获取电流、电压、信号机开放状态的信息,计轴接口软件从计轴机柜获取计轴占用、出清的信息;

步骤二:对于实时数据,各接口软件通过一定的规则,对上述信息进行分类处理,生成Redis的键值,将数据进行处理后,采用json格式作为value值进行存储,从而通过Redis多并发写入进行存储;

步骤三:对于历史数据,接口软件写入关系型数据库Mysql中,有效降低Mysql的负荷;

步骤四:微机监测的HMI监控界面从Redis获取数据,刷新频率可保证在1秒以内,实现了高实时性的需求;

步骤五:MSS接口软件将数据发送到MSS,从Redis读取数据,以满足数据量大,实时性要求高的需求。

其中:步骤二中分别采用UDP单播、组播或TCP/IP方式与监控站机的网络端口进行连接,监控站机根据所述设备的分类信息生成与分类信息相对应的设备操作接口和对象,监控站机再根据类型分配规则,生成或重复使用与分类信息相对应的设备的子进程,监控站机建立多进程命名通信管道,给予每一个子进程唯一的进程编号,通过所述监控站机的各个子进程,将接收的信息按照键值分类存储入监控站机Redis数据库中。

其中:所有数据按照Mysql内存数据表格式并采用json方式记录存储进Redis,Redis键值中除存储实时信息外,在键值数据中存储更新时间戳,作为并发数据客户端读取的凭证。

其中:监控站机获取Redis数据通过Pop方式获取和Range方式获取。

其中:步骤三中通过对Redis里list数据结构访问,构建Bulk数据批量落盘模型。

其中:在从Redis落盘至Mysql过程中,通过Mysql获取PreparedStatement对象,使用getMetaData方法获得表头数据,生成一个ResultSetMetaData对象,对象中包括需要写入的数据表的表头字段名称和数据类型。

通过上述内容可知,本发明的基于多进程架构的微机监测系统实时数据处理方法具有如下效果:

1、采用开源软件REDIS和开源数据库MYSQL,保证了数据的实时性和存储数据的可靠性,节省了开发成本。

2、采用REDIS的LIST数据结构建立实时数据点,并采用键值特殊设计和非POP方法,实现实时数据的并发读取。

3、通过Mysql内存表与Redis的键值关联,构建Redis与Mysql内存数据表交互查询的数据查询方法,实现并能毫秒级返回基于这些数据的查询,减少网络卡顿、网络延迟情况。

本发明的详细内容可通过后述的说明及所附图而得到。

附图说明

图1显示了本发明的基于多进程架构的微机监测系统实时数据处理方法的流程图。

图2显示了本发明的框架示意图。

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

具体实施方式

参见图1和2,显示了本发明的基于多进程架构的微机监测系统实时数据处理方法。

所述基于多进程架构的微机监测系统实时数据处理方法为基于Redis的微机监测实时数据处理方法,具体包括以下步骤:

步骤一:联锁接口软件从维修机软件获取区段占用、出清、锁闭;道岔定反位、道岔锁闭、信号机开放、信号机锁闭、信号机电流、机笼板卡状态的信息,外部接口软件从通信分机、电源屏、电池、绝缘主机和漏流主机获取电流、电压、信号机开放状态的信息,计轴接口软件从计轴机柜获取计轴占用、出清的信息。

步骤二:对于实时数据,各接口软件按既定的业务编码规则,对上述信息进行分类处理,依据mysql内存表里的配置的编码信息,自动生成Redis的键值,相应地,依据业务对数据展示的组织结构需求,按照json格式进行拼接,作为value值进行存储,通过Redis多并发写入进行存储,这种采用多线程锁的方式,保证了数据的一致性和可靠性。

步骤三:对于Redis中的实时数据,包括联锁、外电网、机房环境设备等的开关量及模拟量,通过批量存储工具,周期性将数据通过bulkcopy方式存储进入关系型数据库MySql中,有效降低Mysql的负荷。

步骤四:微机监测的HMI监控界面从Redis获取数据,Redis官方公布的读取速度是110000次/秒,HMI监控界面最多的数据点大约3000左右,远低于Redis的最大读取速度,故刷新频率可保证在1秒以内,实现了高实时性的需求,历史数据是按需查询,不会频繁访问Mysql,能极大的减少对磁盘IO的访问,相应提高了历史数据的响应速度。

步骤五:MSS接口软件将数据发送到MSS,从Redis读取数据,以满足数据量大,实时性要求高的需求。

图2说明了本发明的架构和组成模块,由上至下依次为实时数据采集模块、数据处理模块线程池、Redis、历史数据处理线程模块和关系型数据库Mysql,数据采集模块从不同的端口获取各种数据,所有外部数据的均是从采集模块进入系统,统一原始数据的访问接口利于控制,防止错乱;数据处理模块线程池采用负载均衡技术,开启一个调度线程及若干数据处理线程,调度线程实时对数据处理线程进行查询,检测每个数据处理线程的空闲率。当侦听到数据发送过来时,选择一个空闲率最高的线程来处理新采集的数据;Redis负责存储处理过后的数据,通过键值+json串数据结构进行存储,Redis性能极高,读写能力达到每秒大约10万次,支持多种数据类型,并且能够保证所有操作都是原子的,完全能够满足微机监测的数据吞吐量;历史数据处理模块通过读取Redis里的value,构建Bulk数据批量落盘模型,负责将数据写入关系型数据库中;Mysql作为历史数据存储的关系型数据库,支持标准的sql查询语句,具有执行速度快,性能稳定,安装维护简单等特点,可提供历史数据查询,历史曲线查询,微机监测数据字典存储等功能。

由此,本发明的方法采用多进程架构技术,降低了监测系统海量数据对数据库存储和网络使用的大量消耗,实现了系统实时数据的毫秒级处理和查询功能,能够有效的解决微机监测系统大量数据的采集与查询问题,不仅能保证数据存储是可靠性和安全性,而且还能提高系统的响应速度,满足业务需求。采用成熟的开源软件,有效的降低了软件采购成本,管理维护相对简单,对硬件资源需求较低。

具体而言,本发明的步骤在于:

步骤一:监控站机从联锁维修机获取联锁设备信息,连接外电网、机房环境设备、道岔表示电压、电源屏、UPS、电池巡检仪、计轴得到与所述设备相关联的设备分类信息,包括板卡状态、电流、电压、信号机开放状态、计轴占用、出清等,以及读取所述设备的连接配置信息。

步骤二:按照信息重要性,分别采用UDP单播、组播或TCP/IP方式与监控站机的网络端口进行连接,监控站机根据所述设备的分类信息生成与分类信息相对应的设备操作接口和对象,监控站机再根据类型分配规则,生成或重复使用与分类信息相对应的设备的子进程,监控站机建立多进程命名通信管道,给予每一个子进程唯一的进程编号,通过所述监控站机的各个子进程,将接收的信息按照键值分类存储入监控站机Redis数据库中,Redis数据结构采用LIST方式。模拟量、开关量键值按照设备信息点编码设置,设备信息,按照设备编码设置,所有数据按照Mysql内存数据表格式并采用json方式记录存储进Redis,Redis键值中除存储实时信息外,在键值数据中存储更新时间戳,作为并发数据客户端读取的凭证;监控站机获取Redis数据可通过两种方式,Pop方式获取和Range方式获取。Pop方式下可以直接获取最新数据,或按照队列先入先出原则获取。如采用Range方式获取,保证实时数据始终获取最新一条数据,并保证多并发情况下,各监控站机均能获取数据。

步骤三:数据存储,将历史数据多并发存储模式,修改为线性批量落盘方式,通过对Redis里list数据结构访问,构建Bulk数据批量落盘模型,使秒级Mysql数据落盘性能超过十万条级,并使数据落盘操作对Mysql运行性能影响小,负荷低,在从Redis落盘至Mysql过程中,通过Mysql获取PreparedStatement对象,使用getMetaData方法获得表头数据,生成一个ResultSetMetaData对象,对象中包括需要写入的数据表的表头字段名称和数据类型。再通过json串实现数据写入。

步骤四:不同的HMI页面展示的数据不同,HMI页面初始化时从mysql内存配置表中读取数据键值,然后通过键值从Redis读取value,将value按照业务需求,拆分到不同的内存变量中,在HMI页面会定时读取内存变量里的值,实现数据在页面的实时刷新。

步骤五:MSS接口软件按照双方商定好的数据内容,从Redis中读取数据,再以MSS要求的结构将数据组织起来发送给MSS。

显而易见的是,以上的描述和记载仅仅是举例而不是为了限制本发明的公开内容、应用或使用。虽然已经在实施例中描述过并且在附图中描述了实施例,但本发明不限制由附图示例和在实施例中描述的作为目前认为的最佳模式以实施本发明的教导的特定例子,本发明的范围将包括落入前面的说明书和所附的权利要求的任何实施例。

相关技术
  • 基于多进程架构的微机监测系统实时数据处理方法
  • 基于多进程架构的微机监测系统实时数据处理方法
技术分类

06120113148760