一种对流处理系统进行监控的方法和装置与流程

文档序号:12067909阅读:211来源:国知局
一种对流处理系统进行监控的方法和装置与流程

本发明涉及流处理系统技术领域,尤其涉及一种对流处理系统进行监控的方法和装置。



背景技术:

流数据是一组顺序、大量、快速、连续到达的数据序列,一般情况下,流数据可被视为一个随时间延续而无限增长的动态数据集合。例如:物联网中的智能设备上报的数据就是流数据。流处理系统是一种用于对流数据进行持续性处理的软件系统,流处理系统包括串行的多个逻辑处理单元以及一个数据源接收单元。如图1所示,待处理数据从数据源接收单元进入,依次通过流数据系统中的各个逻辑处理单元。流处理系统需要稳定、持续的运行环境。但是,待处理数据流的流量会经常变化,当待处理数据流的流量突然增加时,流处理系统会因为资源不足而导致数据处理不及时,造成数据处理的延迟,影响整个业务流程。



技术实现要素:

本发明要解决的技术问题是,提供一种对流处理系统进行监控的方法和装置,有效的监控流处理系统的性能水平,保证流处理系统稳定、持续的运行环境。

本发明采用的技术方案是,所述对流处理系统进行监控的方法,包括:

通过在流处理系统的各个工作单元中分别设置的计数器,统计各个工作单元的数据量;

按照第一时间间隔,定期将从每个工作单元的计数器中获取到的计数结果分别累加到在Redis数据库中设置的与每个工作单元相对应的累加器中,并对每个计数器进行清零操作;

按照第二时间间隔,定期从每个累加器中获取累加结果,并根据所述累加结果计算出所述流处理系统的性能指标;所述第二时间间隔的时长大于所述第一时间间隔的时长;

在所述流处理系统的性能指标小于预设阈值的情况下,进行警告处理。

进一步的,所述工作单元包括:接收单元和处理单元。

进一步的,所述按照第二时间间隔,定期从每个累加器中获取累加结果,并根据所述累加结果计算出所述流处理系统的性能指标,包括:

将在一个第二时间间隔结束时从与所述接收单元相对应的累加器中获取到的累加结果与在上个第二时间间隔结束时从与所述接收单元相对应的累加器中获取到的累加结果之差作为在所述一个第二时间间隔内所述接收单元接收的数据量;

将在所述一个第二时间间隔结束时从与所述处理单元相对应的累加器中获取到的累加结果与在上个第二时间间隔结束时从与所述处理单元相对应的累加器中获取到的累加结果之差作为在所述一个第二时间间隔内所述处理单元处理的数据量;

根据在在所述一个第二时间间隔内所述接收单元接收的数据量与所述处理单元处理的数据量计算出所述流处理系统在所述一个第二时间间隔内的性能指标。

进一步的,所述根据在所述一个第二时间间隔内所述接收单元接收的数据量与所述处理单元处理的数据量计算出所述流处理系统在所述一个第二时间间隔内的性能指标,包括:

将在所述一个第二时间间隔内所述接收单元接收的数据量除以所述第二时间间隔的时长,得到所述接收单元的接收吞吐量;

将在所述一个第二时间间隔内所述处理单元处理的数据量除以所述第二时间间隔的时长,得到所述处理单元的处理吞吐量;

将所述处理单元的处理吞吐率除以所述接收单元的接收吞吐率,得到所述处理单元在所述一个第二时间间隔内的性能指标。

进一步的,所述在所述流处理系统的性能指标小于预设阈值的情况下,进行警告处理,包括:

当所述处理单元在所述一个第二时间间隔内的性能指标小于预设阈值时,发送警告短信或邮件。

本发明还提供一种对流处理系统进行监控的装置,包括:

统计模块,用于通过在流处理系统的各个工作单元中分别设置的计数器,统计各个工作单元的数据量;

第一处理模块,用于按照第一时间间隔,定期将从每个工作单元的计数器中获取到的计数结果分别累加到在Redis数据库中设置的与每个工作单元相对应的累加器中,并对每个计数器进行清零操作;

第二处理模块,用于按照第二时间间隔,定期从每个累加器中获取累加结果,并根据所述累加结果计算出所述流处理系统的性能指标;所述第二时间间隔的时长大于所述第一时间间隔的时长;

警告模块,用于在所述流处理系统的性能指标小于预设阈值的情况下,进行警告处理。

进一步的,所述工作单元包括:接收单元和处理单元。

进一步的,,所述第二处理模块,具体包括:

接收数据计算单元,用于将在一个第二时间间隔结束时从与所述接收单元相对应的累加器中获取到的累加结果与在上个第二时间间隔结束时从与所述接收单元相对应的累加器中获取到的累加结果之差作为在所述一个第二时间间隔内所述接收单元接收的数据量;

处理数据计算单元,用于将在所述一个第二时间间隔结束时从与所述处理单元相对应的累加器中获取到的累加结果与在所述上个第二时间间隔结束时从与所述处理单元相对应的累加器中获取到的累加结果之差作为在所述一个第二时间间隔内所述处理单元处理的数据量;

性能指标计算单元,用于根据在在所述一个第二时间间隔内所述接收单元接收的数据量与所述处理单元处理的数据量计算出所述流处理系统在所述一个第二时间间隔内的性能指标。

进一步的,所述性能指标计算单元,具体用于:

将在所述一个第二时间间隔内所述接收单元接收的数据量除以所述第二时间间隔的时长,得到所述接收单元的接收吞吐量;

将在所述一个第二时间间隔内所述处理单元处理的数据量除以所述第二时间间隔的时长,得到所述处理单元的处理吞吐量;

将所述处理单元的处理吞吐率除以所述接收单元的接收吞吐率,得到所述处理单元在所述一个第二时间间隔内的性能指标。

进一步的,所述警告模块,具体用于:

当所述处理单元在所述一个第二时间间隔内的性能指标小于预设阈值时,发送警告短信或邮件。

采用上述技术方案,本发明至少具有下列优点:

本发明所述的对流处理系统进行监控的方法和装置,提供了一种比较通用的性能监控告警方案,可以保证流处理系统的稳定运行。可以对流处理系统中的多个处理单元进行同时监控,采用具有高性能的Redis数据库作为缓存数据库,并通过Redis数据库获取各个处理单元和接收单元中的计数器的计数结果。通过Redis数据库可以准确的得到流处理系统中的各个处理单元和接收单元的数据处理量值。通过计数器和累加器的两级计数更新机制,平衡了流量统计精度和监控本身的运行压力。既减少了对流处理系统本身性能的影响,也保证了流量统计的准确性。本发明可以自动的监控流处理系统的处理性能,一旦发现流处理系统的处理数据的性能大幅下降时,向维护人员发出警告邮件或短信,以提醒维护人员排查原因,及时处理流处理系统中的故障。

附图说明

图1为流处理系统处理数据的流程图;

图2为本发明第一实施例的对流处理系统进行监控的方法的流程图;

图3为本发明第二实施例的对流处理系统进行监控的方法的流程图;

图4为本发明第三实施例的对流处理系统进行监控的装置的组成结构示意图;

图5为本发明第四实施例的对流处理系统进行监控的装置的组成结构示意图。

具体实施方式

为更进一步阐述本发明为达成预定目的所采取的技术手段及功效,以下结合附图及较佳实施例,对本发明进行详细说明如后。

本发明第一实施例,一种对流处理系统进行监控的方法,如图2所示,包括以下具体步骤:

步骤S201:通过在流处理系统的各个工作单元中分别设置的计数器,统计各个工作单元的数据量。

具体的,所述工作单元包括:接收单元和处理单元。

进一步的,步骤S201,具体包括:

通过在所述流处理系统的接收单元中设置的计数器,统计所述接收单元接收的数据量;通过在所述流处理系统的各个处理单元中分别设置的计数器,分别统计所述各个处理单元处理的数据量。

当所述接收单元每接收一条流数据时,所述接收单元中的计数器加一;当所述处理单元每处理一条流数据时,所述处理单元中的计数器加一。

步骤S202:按照第一时间间隔,定期将从每个工作单元的计数器中获取到的计数结果分别累加到在Redis数据库中设置的与每个工作单元相对应的累加器中,并对每个计数器进行清零操作。

具体的,步骤S202,包括:

按照第一时间间隔,定期从所述接收单元的计数器中获取计数结果,将所述计数结果累加到在所述Redis数据库中设置的与所述接收单元相对应的累加器中,与此同时,定期从所述各个处理单元的计数器中获取计数结果,并将所述计数结果分别累加到在所述Redis数据库中设置的与各个处理单元相对应的累加器中。在所述第一时间间隔结束时,对所述流处理系统中的接收单元和各个处理单元中的计数器进行清零操作,以便于所述计数器在下个第一时间间隔内重新开始计数。

各个累加器均设置在所述Redis数据库中。通过远程调用Redis数据库提供的incrBy API来做累加器的自增操作,保证了累加器自增的原子性,即使同一处理单元在多个机器上部署和运行,也能保证累加器的计数准确性。

所述Redis数据库是一种具有很高读写性能的开源的key/value内存数据库服务,支持对存储的值做自增操作,可以当作计数器来使用。以第三方库的形式提供了多种开发语言的远程访问接口,也提供命令行来远程查看其内存内容。

对累加器中的累加结果进行更新的频率越高,得到的统计精度越高,但对Redis数据库的写入压力也越大,为了平衡写入压力和统计准确性,一般每隔几秒对所述Redis数据库的各个累加器中的累加结果进行更新。

步骤S203:按照第二时间间隔,定期从每个累加器中获取累加结果,并根据所述累加结果计算出所述流处理系统的性能指标。

所述第二时间间隔的时长大于所述第一时间间隔的时长。优选的,所述第二时间间隔的时长与所述第一时间间隔的时长之间有倍数关系。

具体的,步骤S203,包括:

将在一个第二时间间隔结束时从与所述接收单元相对应的累加器中获取到的累加结果与在上个第二时间间隔结束时从与所述接收单元相对应的累加器中获取到的累加结果之差作为在所述一个第二时间间隔内所述接收单元接收的数据量;

将在所述一个第二时间间隔结束时从与所述处理单元相对应的累加器中获取到的累加结果与在上个第二时间间隔结束时从与所述处理单元相对应的累加器中获取到的累加结果之差作为在所述一个第二时间间隔内所述处理单元处理的数据量;

根据在在所述一个第二时间间隔内所述接收单元接收的数据量与所述处理单元处理的数据量计算出所述流处理系统在所述一个第二时间间隔内的性能指标。

进一步的,所述根据在所述一个第二时间间隔内所述接收单元接收的数据量与所述处理单元处理的数据量计算出所述流处理系统在所述一个第二时间间隔内的性能指标,包括:

将在所述一个第二时间间隔内所述接收单元接收的数据量除以所述第二时间间隔的时长,得到所述接收单元的接收吞吐量;

将在所述一个第二时间间隔内所述处理单元处理的数据量除以所述第二时间间隔的时长,得到所述处理单元的处理吞吐量;

将所述处理单元的处理吞吐率除以所述接收单元的接收吞吐率,得到所述处理单元在所述一个第二时间间隔内的性能指标。

步骤S204:在所述流处理系统的性能指标小于预设阈值的情况下,进行警告处理。

具体的,步骤S204,包括:

当所述处理单元在所述一个第二时间间隔内的性能指标小于预设阈值时,发送警告短信或邮件。

本发明第二实施例,一种对流处理系统进行监控的方法,如图3所示,包括以下具体步骤:

步骤S301:在流处理系统中的接收单元和各个处理单元中分别设置一个计数器。

当所述流处理系统中的接收单元每接收一条数据时,在所述接收单元的计数器中加一。

当所述流处理系统中的任一处理单元每处理一条数据时,在所述任一处理单元的计数器中加一。

步骤S302:在Redis数据库中分别为所述流处理系统中的接收单元和各个处理单元设置对应的累加器。

所述Redis数据库按照设定时间间隔定期将从所述接收单元的计数器中获取到的计数结果累加到与所述接收单元相对应的累加器中,并将从任一处理单元的计数器中获取到的计数结果累加到与所述任一处理单元相互对应的累加器中。

具体的,所述Redis数据库通过IncrBy命令,从计数器中获取计数结果。Redis数据库可以保证累加器的自增累加操作的原子性,即便每个处理单元中运行着多个实例,也可以保证每个累加器的累加结果的准确性。

步骤S303:当所述Redis数据库完成各个累加器的数据更新时,将流处理系统中的接收单元和各个处理单元中的计数器清零,各个计数器重新开始计数。

步骤S304:按照设定的监控周期的时长,定期从Redis数据库中的各个累加器中获取当前累加数值,并从本地文件中获取接收单元的历史累加数值和各个处理单元的历史累加数值。

所述监控周期的时长大于所述设定时间间隔的时长,并且所述监控周期的时长与所述设定时间间隔的时长之间存在倍数关系。

所述Redis数据库中的任一累加器的当前累加数值为截止至当前监控周期结束时,所述任一累加器中的累加数值。

所述本地文件用于存储截止至上个监控周期结束时,从Redis数据库中获得到的各个累加器的累加数值。

所述本地文件中的任一单元的历史累加数值为截止至上个监控周期结束时,从Redis数据库中获得到的与所述任一单元对应的累加器中的累加数值。

步骤S305:针对所述流处理系统中的任一单元,将所述任一单元从所述Redis数据库中对应的累加器中获取到的当前累加数值减去从所述本地文件中获取到的所述任一单元的历史累加数值,得到所述任一单元在当前监控周期内的数据量值。

步骤S306:将所述任一单元在当前监控周期内的数据量值除以所述控制周期的时长,得到所述任一单元的吞吐率。

步骤S307:将任一处理单元的吞吐率除以接收单元的吞吐率,得到所述任一处理单元的性能指标。

步骤S308:判断所述流处理系统中是否存在处理单元的性能指标小于预设阈值的情况,若是,则向所述流处理系统的维修人员发生警告短信或邮件;若否,则继续监测所述流处理系统的运行状态。

进一步的,所述方法还包括:

将从所述Redis数据库中获取到的截止至当前监控周期结束时各个累加器的累加数值存储到所述本地文件中,以替换所述本地文件中原先存储的截止至上个监控周期结束时的接收单元的历史累加数值和各个处理单元的历史累加数值,以便于在下个监控周期内的监控计算。

本发明第三实施例,一种对流处理系统进行监控的装置,如图4所示,具体包括以下组成部分:

1)统计模块401,用于通过在流处理系统的各个工作单元中分别设置的计数器,统计各个工作单元的数据量。

具体的,所述工作单元包括:接收单元和处理单元。

进一步的,统计模块401,具体用于:

通过在所述流处理系统的接收单元中设置的计数器,统计所述接收单元接收的数据量;通过在所述流处理系统的各个处理单元中分别设置的计数器,分别统计所述各个处理单元处理的数据量。

2)第一处理模块402,用于按照第一时间间隔,定期将从每个工作单元的计数器中获取到的计数结果分别累加到在Redis数据库中设置的与每个工作单元相对应的累加器中,并对每个计数器进行清零操作。

具体的,一处理模块402,用于:

按照第一时间间隔,定期从所述接收单元的计数器中获取计数结果,将所述计数结果累加到在所述Redis数据库中设置的与所述接收单元相对应的累加器中,与此同时,定期从所述各个处理单元的计数器中获取计数结果,并将所述计数结果分别累加到在所述Redis数据库中设置的与各个处理单元相对应的累加器中。在所述第一时间间隔结束时,对所述流处理系统中的接收单元和各个处理单元中的计数器进行清零操作,以便于所述计数器在下个第一时间间隔内重新开始计数。

进一步的,各个累加器均设置在所述Redis数据库中。一处理模块402通过远程调用incrBy API来做累加器的自增操作,保证了累加器自增的原子性,即使同一处理单元在多个机器上部署和运行,也能保证累加器的计数准确性。

所述Redis数据库是一种具有很高读写性能的开源的key/value内存数据库服务,支持对存储的值做自增操作,可以当作计数器来使用。以第三方库的形式提供了多种开发语言的远程访问接口,也提供命令行来远程查看其内存内容。

对累加器中的累加结果进行更新的频率越高,得到的统计精度越高,但对Redis数据库的写入压力也越大,为了平衡写入压力和统计准确性,一般每隔几秒对所述Redis数据库的各个累加器中的累加结果进行更新。

3)第二处理模块403,用于按照第二时间间隔,定期从每个累加器中获取累加结果,并根据所述累加结果计算出所述流处理系统的性能指标。

所述第二时间间隔的时长大于所述第一时间间隔的时长。优选的,所述第二时间间隔的时长与所述第一时间间隔的时长之间有倍数关系。

具体的,第二处理模块403,具体包括:

接收数据计算单元,用于将在一个第二时间间隔结束时从与所述接收单元相对应的累加器中获取到的累加结果与在上个第二时间间隔结束时从与所述接收单元相对应的累加器中获取到的累加结果之差作为在所述一个第二时间间隔内所述接收单元接收的数据量;

处理数据计算单元,用于将在所述一个第二时间间隔结束时从与所述处理单元相对应的累加器中获取到的累加结果与在上个第二时间间隔结束时从与所述处理单元相对应的累加器中获取到的累加结果之差作为在所述一个第二时间间隔内所述处理单元处理的数据量;

性能指标计算单元,用于根据在在所述一个第二时间间隔内所述接收单元接收的数据量与所述处理单元处理的数据量计算出所述流处理系统在所述一个第二时间间隔内的性能指标。

进一步的,所述性能指标计算单元,具体用于:

将在所述一个第二时间间隔内所述接收单元接收的数据量除以所述第二时间间隔的时长,得到所述接收单元的接收吞吐量;

将在所述一个第二时间间隔内所述处理单元处理的数据量除以所述第二时间间隔的时长,得到所述处理单元的处理吞吐量;

将所述处理单元的处理吞吐率除以所述接收单元的接收吞吐率,得到所述处理单元在所述一个第二时间间隔内的性能指标。

4)警告模块404,用于在所述流处理系统的性能指标小于预设阈值的情况下,进行警告处理。

具体的,警告模块404,用于:

当所述处理单元在所述一个第二时间间隔内的性能指标小于预设阈值时,发送警告短信或邮件。

本发明第四实施例,一种对流处理系统进行监控的装置,如图5所示,具体包括以下组成部分:

1)计数器设置模块501,用于在流处理系统中的接收单元和各个处理单元中分别设置一个计数器。

当所述流处理系统中的接收单元每接收一条数据时,在所述接收单元的计数器中加一。

当所述流处理系统中的任一处理单元每处理一条数据时,在所述任一处理单元的计数器中加一。

2)累加器设置模块502,用于在Redis数据库中分别为所述流处理系统中的接收单元和各个处理单元设置对应的累加器。

所述Redis数据库按照设定时间间隔定期将从所述接收单元的计数器中获取到的计数结果累加到与所述接收单元相对应的累加器中,并将从任一处理单元的计数器中获取到的计数结果累加到与所述任一处理单元相互对应的累加器中。

具体的,所述Redis数据库通过IncrBy命令,从计数器中获取计数结果。Redis数据库可以保证累加器的自增累加操作的原子性,即便每个处理单元中运行着多个实例,也可以保证每个累加器的累加结果的准确性。

3)清零模块503,用于当所述Redis数据库完成各个累加器的数据更新时,将流处理系统中的接收单元和各个处理单元中的计数器清零,各个计数器重新开始计数。

4)获取模块504,用于按照设定的监控周期的时长,定期从Redis数据库中的各个累加器中获取当前累加数值,并从本地文件中获取接收单元的历史累加数值和各个处理单元的历史累加数值。

所述监控周期的时长大于所述设定时间间隔的时长,并且所述监控周期的时长与所述设定时间间隔的时长之间存在倍数关系。

所述Redis数据库中的任一累加器的当前累加数值为截止至当前监控周期结束时,所述任一累加器中的累加数值。

所述本地文件用于存储截止至上个监控周期结束时,从Redis数据库中获得到的各个累加器的累加数值。

所述本地文件中的任一单元的历史累加数值为截止至上个监控周期结束时,从Redis数据库中获得到的与所述任一单元对应的累加器中的累加数值。

5)第一计算模块505,用于针对所述流处理系统中的任一单元,将所述任一单元从所述Redis数据库中对应的累加器中获取到的当前累加数值减去从所述本地文件中获取到的所述任一单元的历史累加数值,得到所述任一单元在当前监控周期内的数据量值。

6)第二计算模块506,用于将所述任一单元在当前监控周期内的数据量值除以所述控制周期的时长,得到所述任一单元的吞吐率。

7)第三计算模块507,用于将任一处理单元的吞吐率除以接收单元的吞吐率,得到所述任一处理单元的性能指标。

8)判断模块508,用于判断所述流处理系统中是否存在处理单元的性能指标小于预设阈值的情况,若是,则向所述流处理系统的维修人员发生警告短信或邮件;若否,则继续监测所述流处理系统的运行状态。

进一步的,所述装置还包括:

存储模块,用于将将从所述Redis数据库中获取到的截止至当前监控周期结束时各个累加器的累加数值存储到所述本地文件中,以替换所述本地文件中原先存储的截止至上个监控周期结束时的接收单元的历史累加数值和各个处理单元的历史累加数值,以便于在下个监控周期内的监控计算。

本发明实施例中介绍的对流处理系统进行监控的方法和装置,提供了一种比较通用的性能监控告警方案,可以保证流处理系统的稳定运行。可以对流处理系统中的多个处理单元进行同时监控,采用具有高性能的Redis数据库作为缓存数据库,并通过Redis数据库获取各个处理单元和接收单元中的计数器的计数结果。通过Redis数据库可以准确的得到流处理系统中的各个处理单元和接收单元的数据处理量值。通过计数器和累加器的两级计数更新机制,平衡了流量统计精度和监控本身的运行压力。既减少了对流处理系统本身性能的影响,也保证了流量统计的准确性。本发明可以自动的监控流处理系统的处理性能,一旦发现流处理系统的处理数据的性能大幅下降时,向维护人员发出警告邮件或短信,以提醒维护人员排查原因,及时处理流处理系统中的故障。

通过具体实施方式的说明,应当可对本发明为达成预定目的所采取的技术手段及功效得以更加深入且具体的了解,然而所附图示仅是提供参考与说明之用,并非用来对本发明加以限制。

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