分布式数据采集方法及装置与流程

文档序号:14635127发布日期:2018-06-08 19:37阅读:289来源:国知局
分布式数据采集方法及装置与流程

本发明涉及数据处理技术领域,尤其涉及一种分布式数据采集方法及装置。



背景技术:

随着轨道交通的迅猛发展,计算机技术的快速提高,将计算机技术合理应用于轨道交通领域已越来越成为规定交通发展的趋势。

对于轨道交通的信号系统中各种设备的维护方式,正逐步由人工检测、定期维修向着综合设备实时监测并自动派发维修工单的模式转变。但这种转变需要海量的监测数据,而在轨道交通信号设备自动监测系统中,各种采集数据一般由中间件进行数据转发,这种方案在数据量比较小的时候可以满足系统需求,但当采集数据较大时则会出现中间件堵塞,数据处理不及时等各种问题,影响整个自动检测系统的性能。



技术实现要素:

本发明的主要目的在于提供一种分布式数据采集方法及装置,旨在解决现有的轨道交通信号设备自动监测系统在采集数据较大时会出现中间件堵塞,数据处理不及时,导致整个系统的性能较差的技术问题。

为实现上述目的,本发明第一方面提供一种分布式数据采集方法,该方法包括:

采集已生成的消息数据,并将采集到的消息数据发送至预置的前置消息队列;

利用预置的负载均衡器将所述前置消息队列中的消息数据按照预设的数据分发方式分发至预设的各个消息中间件;

解析所述各个消息中间件中的子消息数据,将解析后的子消息数据保存至预置的经过读写分离处理的数据库。

可选的,所述利用预置的负载均衡器将所述前置消息队列中的消息数据按照预设的数据分发方式分发至预设的各个消息中间件的步骤之前还包括:

监测所述前置消息队列是否接收到所述消息数据;

当所述前置消息队列接收到所述消息数据时,则执行所述利用预置的负载均衡器将所述前置消息队列中的消息数据按照预设的数据分发方式分发至预设的各个消息中间件的步骤。

可选的,所述利用预置的负载均衡器将所述前置消息队列中的消息数据按照预设的数据分发方式分发至预设的各个消息中间件的步骤包括:

检测所述各个消息中间件可接收的最大消息数据量;

基于所述各个消息中间件可接收的最大消息数据量,利用所述负载均衡器将所述前置消息队列中的消息数据分发至所述各个消息中间件。

可选的,所述解析所述各个消息中间件中的子消息数据的步骤之前还包括:

监测所述各个消息中间件中是否存在至少一个有新的子消息数据生成的消息中间件;

若所述各个消息中间件中存在至少一个有新的子消息数据生成的消息中间件,则执行解析所述各个消息中间件中的子消息数据的步骤。

可选的,所述解析所述各个消息中间件中的子消息数据,将解析后的子消息数据保存至预置的经过读写分离处理的数据库的步骤包括:

解析所述各个消息中间件中的子消息数据,将解析后的子消息数据缓存至预设的存储器内;

每隔预设的时间间隔,将所述存储器内缓存的子消息数据保存至所述数据库。

为实现上述目的,本发明第二方面提供一种分布式数据采集装置,该装置包括:

采集模块,用于采集已生成的消息数据,并将采集到的消息数据发送至预置的前置消息队列;

发送模块,用于利用预置的负载均衡器将所述前置消息队列中的消息数据按照预设的数据分发方式分发至预设的各个消息中间件;

存储模块,用于解析所述各个消息中间件中的子消息数据,将解析后的子消息数据保存至预置的经过读写分离处理的数据库。

可选的,所述装置还包括:

第一监测模块,用于监测所述前置消息队列是否接收到所述消息数据,当所述前置消息队列接收到所述消息数据时,则执行所述发送模块。

可选的,所述发送模块包括:

检测模块,用于检测所述各个消息中间件可接收的最大消息数据量;

数据分发模块,用于基于所述各个消息中间件可接收的最大消息数据量,利用所述负载均衡器将所述前置消息队列中的消息数据分发至所述各个消息中间件。

可选的,所述装置还包括:

第二监测模块,用于监测所述各个消息中间件中是否存在至少一个有新的子消息数据生成的消息中间件,若所述各个消息中间件中存在至少一个有新的子消息数据生成的消息中间件,则执行所述存储模块。

可选的,所述存储模块包括:

数据解析模块,用于解析所述各个消息中间件中的子消息数据,将解析后的子消息数据缓存至预设的存储器内;

数据存储模块,用于每隔预设的时间间隔,将所述存储器内缓存的子消息数据保存至所述数据库。

本发明所提供的一种分布式数据采集方法,包括:采集已生成的消息数据,并将采集到的消息数据发送至预置的前置消息队列,利用预置的负载均衡器将上述前置消息队列中的消息数据按照预设的数据分发方式分发至预设的各个消息中间件,然后解析各个消息中间件中的子消息数据,将解析后的子消息数据保存至预置的经过读写分离处理的数据库。相较于现有技术而言,本发明将采集到的消息数据经过负载均衡处理后分发至多个消息中间件,然后再分别解析各个消息中间件中子消息数据,并将解析后的子消息数据保存至数据库,以此来分解消息数据的传输压力,上述数据库预先经过读写分离处理,可具有较高的数据处理性能,从而可以解决现有技术中轨道交通信号设备自动监测系统在采集数据较大时会出现中间件堵塞,数据处理不及时,导致整个系统的性能较差的技术问题。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明第一实施例中分布式数据采集方法的流程示意图;

图2为本发明第二实施例中分布式数据采集方法的流程示意图;

图3为本发明第三实施例中分布式数据采集方法的流程示意图;

图4为本发明第四实施例中分布式数据采集装置的程序模块示意图;

图5为本发明第五实施例中分布式数据采集装置的程序模块示意图;

图6为本发明第六实施例中分布式数据采集装置的程序模块示意图。

具体实施方式

为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

由于在现有技术中,轨道交通信号设备自动监测系统在采集到的数据较大时会出现中间件堵塞,从而存在数据处理不及时,整个系统的性能较差的技术问题。

为了解决上述技术问题,本发明实施例提出一种分布式数据采集方法,该方法将采集到的消息数据经过负载均衡处理后分发至多个消息中间件,然后再分别解析各个消息中间件中子消息数据,并将解析后的子消息数据保存至数据库,以此来分解消息数据的传输压力,此外,上述数据库预先经过读写分离处理,因此可具有较高的数据处理性能。

具体的,请参阅图1,图1为本发明第一实施例中分布式数据采集方法的流程示意图,本发明实施例中,上述分布式数据采集方法包括:

步骤101、采集已生成的消息数据,并将采集到的消息数据发送至预置的前置消息队列;

本发明实施例中,先通过预置的数据采集设备采集轨道交通信号设备自动监测系统中已生成的消息数据,并将采集到的消息数据发送至预置的前置消息队列。

其中,“消息”是指在两台计算机间传送的数据单位,该消息可以非常简单,例如只包含文本字符串;也可以更复杂,如包含嵌入对象。上述消息数据被发送到前置消息队列中,其中,“消息队列”是指在消息的传输过程中保存消息的容器。消息队列管理器在将消息从它的源中继到它的目标时充当中间媒介。队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用,则消息队列会保留消息,直到可以成功地传递该消息。

步骤102、利用预置的负载均衡器将所述前置消息队列中的消息数据按照预设的数据分发方式分发至预设的各个消息中间件;

本发明实施例中,可以预先设计软件架构,以提供符合业务逻辑的数据分发方式,该软件架构可基于Spring框架来实现。

其中,可采用预设的数据分发方式将上述前置消息队列中的消息数据通过负载均衡器发送至多个消息中间件。该消息中间件即ActiveMQ,属于一种开源消息总线。

步骤103、解析所述各个消息中间件中的子消息数据,将解析后的子消息数据保存至预置的经过读写分离处理的数据库。

本发明实施例中,当上述各个消息中间件接收到上述负载均衡器分发的子消息数据之后,解析各个消息中间件中的子消息数据中包含的内容,然后将解析出的所有内容保存在预置的数据库。

其中,上述子消息数据为上述负载均衡器分发给各个消息中间件的上述消息数据中的一部分,相当于将上述消息数据拆分成了上述各个子消息数据。

其中,上述数据库需要预先经过读写分离处理,以此来提高该数据库的性能。

本发明上述实施例所提供的分布式数据采集方法包括:采集已生成的消息数据,并将采集到的消息数据发送至预置的前置消息队列,利用预置的负载均衡器将上述前置消息队列中的消息数据按照预设的数据分发方式分发至预设的各个消息中间件,然后解析各个消息中间件中的子消息数据,将解析后的子消息数据保存至预置的经过读写分离处理的数据库。相较于现有技术而言,本发明将采集到的消息数据经过负载均衡处理后分发至多个消息中间件,然后再分别解析各个消息中间件中子消息数据,并将解析后的子消息数据保存至数据库,以此来分解消息数据的传输压力,上述数据库预先经过读写分离处理,可具有较高的数据处理性能,从而可以解决现有技术中轨道交通信号设备自动监测系统在采集数据较大时会出现中间件堵塞,数据处理不及时,导致整个系统的性能较差的技术问题。

进一步地,基于本发明第一实施例,参照图2,图2为本发明第二实施例中分布式数据采集方法的流程示意图,本发明实施例中,上述分布式数据采集方法包括:

步骤201、采集已生成的消息数据,并将采集到的消息数据发送至预置的前置消息队列;

本发明实施例中,上述步骤201与本发明第一实施例中的步骤101所描述的内容基本一致,请参阅本发明第一实施例,在此不再赘述。

步骤202、监测所述前置消息队列是否接收到所述消息数据,若所述前置消息队列接收到所述消息数据,则执行步骤203,否则继续监测上述前置消息队列是否接收到上述消息数据;

本发明实施例中,实时监测上述前置消息队列是否接收到消息数据,即相当于实时监测是否采集到新的消息数据。当监测到上述前置消息队列接收到新的消息数据时,则将接收到的消息数据分发至预设的各个消息中间件。

步骤203、利用预置的负载均衡器将所述前置消息队列中的消息数据按照预设的数据分发方式分发至预设的各个消息中间件;

本发明实施例中,上述步骤203所描述的技术方案可包括以下步骤:

步骤a:检测所述各个消息中间件可接收的最大消息数据量;

步骤b:基于所述各个消息中间件可接收的最大消息数据量,利用所述负载均衡器将所述前置消息队列中的消息数据分发至所述各个消息中间件。

具体的,本发明实施例中,可以根据各个消息中间件可接收的最大消息数据量来分发上述消息数据,从而保证各个消息中间件的负载相差不会太大。例如,可以优先将上述消息数据分发至可接收的最大消息数据量较大的消息中间件。

此外,上述数据分发方式还包括随机分发、按字段分发、广播分发、指定分发等。

步骤204、解析所述各个消息中间件中的子消息数据,将解析后的子消息数据保存至预置的经过读写分离处理的数据库。

本发明实施例中,上述步骤204与本发明第一实施例中的步骤103所描述的内容基本一致,请参阅本发明第一实施例,在此不再赘述。

本发明实施例所提供的分布式数据采集方法,通过监测上述前置消息队列是否接收到上述消息数据,当上述前置消息队列接收到上述消息数据时,则利用预置的负载均衡器将上述前置消息队列中的消息数据按照预设的数据分发方式分发至预设的各个消息中间件,从而可以有效的防止上述前置消息队列出现数据拥塞的情况。

进一步地,基于本发明第二实施例,参照图3,图3为本发明第三实施例中分布式数据采集方法的流程示意图,本发明实施例中,上述分布式数据采集方法包括:

步骤301、采集已生成的消息数据,并将采集到的消息数据发送至预置的前置消息队列;

步骤302、监测所述前置消息队列是否接收到所述消息数据,若所述前置消息队列接收到所述消息数据,则执行步骤303,否则继续监测上述前置消息队列是否接收到上述消息数据;

步骤303、利用预置的负载均衡器将所述前置消息队列中的消息数据按照预设的数据分发方式分发至预设的各个消息中间件;

本发明实施例中,上述步骤301至步骤303与本发明第二实施例中的步骤201至步骤203所描述的内容基本一致,请参阅本发明第二实施例,在此不再赘述。

步骤304、监测所述各个消息中间件中是否存在至少一个有新的子消息数据生成的消息中间件,若所述各个消息中间件中存在至少一个有新的子消息数据生成的消息中间件,则执行步骤305,否则继续监测上述各个消息中间件中是否存在至少一个有新的子消息数据生成的消息中间件。

本发明实施例中,当监测到上述各个消息中间件中的任意一个或者多个消息中间件接收到了新的子消息数据,则执行步骤305。

步骤305、解析所述各个消息中间件中的子消息数据,将解析后的子消息数据保存至预置的经过读写分离处理的数据库。

本发明实施例中,上述步骤305所描述的技术方案可包括以下步骤:

步骤A:解析所述各个消息中间件中的子消息数据,将解析后的子消息数据缓存至预设的存储器内;

步骤B:每隔预设的时间间隔,将所述存储器内缓存的子消息数据保存至所述数据库。

本发明实施例中,可以理解的是,由于缓存的运行速度比内存快,故将上述解析后的子消息数据缓存至预设的存储器内,可以有效的帮助系统硬件更快地运行。

本发明实施例所提供的分布式数据采集方法,通过监测上述各个消息中间件中是否存在至少一个有新的子消息数据生成的消息中间件,若存在,则解析上述各个消息中间件中的子消息数据,并将解析后的子消息数据保存至上述数据库,从而可以有效的防止上述各个消息中间件出现数据拥塞的情况。

为了解决上述技术问题,本发明实施例还提出一种分布式数据采集装置,具体的,请参阅图4,图4为本发明第四实施例中分布式数据采集装置的程序模块示意图,本发明实施例中,上述分布式数据采集装置包括:

采集模块401,用于采集已生成的消息数据,并将采集到的消息数据发送至预置的前置消息队列;

本发明实施例中,先通过采集模块401采集轨道交通信号设备自动监测系统中已生成的消息数据,并将采集到的消息数据发送至预置的前置消息队列。

其中,“消息”是指在两台计算机间传送的数据单位,该消息可以非常简单,例如只包含文本字符串;也可以更复杂,如包含嵌入对象。上述消息数据被发送到前置消息队列中,其中,“消息队列”是指在消息的传输过程中保存消息的容器。消息队列管理器在将消息从它的源中继到它的目标时充当中间媒介。队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用,则消息队列会保留消息,直到可以成功地传递该消息。

发送模块402,用于利用预置的负载均衡器将所述前置消息队列中的消息数据按照预设的数据分发方式分发至预设的各个消息中间件;

本发明实施例中,可以预先设计软件架构,以提供符合业务逻辑的数据分发方式,该软件架构可基于Spring框架来实现。

其中,可采用预设的数据分发方式将上述前置消息队列中的消息数据通过负载均衡器发送至多个消息中间件。该消息中间件即ActiveMQ,属于一种开源消息总线。

存储模块403,用于解析所述各个消息中间件中的子消息数据,将解析后的子消息数据保存至预置的经过读写分离处理的数据库。

本发明实施例中,当上述各个消息中间件接收到上述负载均衡器分发的子消息数据之后,解析各个消息中间件中的子消息数据中包含的内容,然后将解析出的所有内容保存在预置的数据库。

其中,上述子消息数据为上述负载均衡器分发给各个消息中间件的上述消息数据中的一部分,相当于将上述消息数据拆分成了上述各个子消息数据。

其中,上述数据库需要预先经过读写分离处理,以此来提高该数据库的性能。

本发明上述实施例所提供的分布式数据采集装置包括:采集模块401,用于采集已生成的消息数据,并将采集到的消息数据发送至预置的前置消息队列;发送模块402,用于利用预置的负载均衡器将上述前置消息队列中的消息数据按照预设的数据分发方式分发至预设的各个消息中间件;存储模块403,用于解析各个消息中间件中的子消息数据,将解析后的子消息数据保存至预置的经过读写分离处理的数据库。相较于现有技术而言,本发明将采集到的消息数据经过负载均衡处理后分发至多个消息中间件,然后再分别解析各个消息中间件中子消息数据,并将解析后的子消息数据保存至数据库,以此来分解消息数据的传输压力,上述数据库预先经过读写分离处理,可具有较高的数据处理性能,从而可以解决现有技术中轨道交通信号设备自动监测系统在采集数据较大时会出现中间件堵塞,数据处理不及时,导致整个系统的性能较差的技术问题。

进一步地,基于本发明第四实施例,参照图5,图5为本发明第五实施例中分布式数据采集装置的程序模块示意图,本发明实施例中,上述分布式数据采集装置包括:

采集模块401,用于采集已生成的消息数据,并将采集到的消息数据发送至预置的前置消息队列;

第一监测模块501,用于监测所述前置消息队列是否接收到所述消息数据,若所述前置消息队列接收到所述消息数据,则执行步骤203,否则继续监测上述前置消息队列是否接收到上述消息数据;

本发明实施例中,实时监测上述前置消息队列是否接收到消息数据,即相当于实时监测是否采集到新的消息数据。当监测到上述前置消息队列接收到新的消息数据时,则将接收到的消息数据分发至预设的各个消息中间件。

发送模块402,用于利用预置的负载均衡器将所述前置消息队列中的消息数据按照预设的数据分发方式分发至预设的各个消息中间件;

本发明实施例中,上述发送模块402包括:

检测模块,用于检测所述各个消息中间件可接收的最大消息数据量;

数据分发模块,用于基于所述各个消息中间件可接收的最大消息数据量,利用所述负载均衡器将所述前置消息队列中的消息数据分发至所述各个消息中间件。

具体的,本发明实施例中,可以根据各个消息中间件可接收的最大消息数据量来分发上述消息数据,从而保证各个消息中间件的负载相差不会太大。例如,可以优先将上述消息数据分发至可接收的最大消息数据量较大的消息中间件。

此外,上述数据分发方式还包括随机分发、按字段分发、广播分发、指定分发等。

存储模块403,用于解析所述各个消息中间件中的子消息数据,将解析后的子消息数据保存至预置的经过读写分离处理的数据库。

本发明实施例所提供的分布式数据采集装置,通过监测上述前置消息队列是否接收到上述消息数据,当上述前置消息队列接收到上述消息数据时,则利用预置的负载均衡器将上述前置消息队列中的消息数据按照预设的数据分发方式分发至预设的各个消息中间件,从而可以有效的防止上述前置消息队列出现数据拥塞的情况。

进一步地,基于本发明第五实施例,参照图6,图6为本发明第六实施例中分布式数据采集装置的程序模块示意图,本发明实施例中,上述分布式数据采集装置包括:

采集模块401,用于采集已生成的消息数据,并将采集到的消息数据发送至预置的前置消息队列;

第一监测模块501,用于监测所述前置消息队列是否接收到所述消息数据,若所述前置消息队列接收到所述消息数据,则执行发送模块402,否则继续监测上述前置消息队列是否接收到上述消息数据;

发送模块402,用于利用预置的负载均衡器将所述前置消息队列中的消息数据按照预设的数据分发方式分发至预设的各个消息中间件;

第二监测模块601,用于监测所述各个消息中间件中是否存在至少一个有新的子消息数据生成的消息中间件,若所述各个消息中间件中存在至少一个有新的子消息数据生成的消息中间件,则执行存储模块403,否则继续监测上述各个消息中间件中是否存在至少一个有新的子消息数据生成的消息中间件。

本发明实施例中,当监测到上述各个消息中间件中的任意一个或者多个消息中间件接收到了新的子消息数据,则继续执行存储模块403。

存储模块403,用于解析所述各个消息中间件中的子消息数据,将解析后的子消息数据保存至预置的经过读写分离处理的数据库。

本发明实施例中,上述存储模块403包括:

数据解析模块,用于解析所述各个消息中间件中的子消息数据,将解析后的子消息数据缓存至预设的存储器内;

数据存储模块,用于每隔预设的时间间隔,将所述存储器内缓存的子消息数据保存至所述数据库。

本发明实施例中,可以理解的是,由于缓存的运行速度比内存快,故将上述解析后的子消息数据缓存至预设的存储器内,可以有效的帮助系统硬件更快地运行。

本发明实施例所提供的分布式数据采集装置,通过监测上述各个消息中间件中是否存在至少一个有新的子消息数据生成的消息中间件,若存在,则解析上述各个消息中间件中的子消息数据,并将解析后的子消息数据保存至上述数据库,从而可以有效的防止上述各个消息中间件出现数据拥塞的情况。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。

所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本发明所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。

以上为对本发明所提供的一种分布式数据采集方法及装置的描述,对于本领域的技术人员,依据本发明实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本发明的限制。

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