流数据动态处理方法、装置、电子设备及存储介质与流程

文档序号:32744766发布日期:2022-12-30 21:30阅读:21来源:国知局
流数据动态处理方法、装置、电子设备及存储介质与流程

1.本发明涉及流数据处理技术领域,具体提供一种流数据动态处理方法、装置、电子设备及存储介质。


背景技术:

2.apm(applicationperformance management)是一种应用性能监控工具,通过汇聚业务系统各处理环节的实时数据(例如图1中的日志、链路数据、探针采集的业务类数据),分析业务系统各事务处理的交易路径和处理时间,实现对应用的全链路性能监测。其中,首选需要对上述各种数据进行采集,之后进行流处理生成各种健康度指标。
3.现有的流处理方法通过硬编程的方式实现,例如对于50个任务,需要重复50个类似黄色高亮的程序代码,下例中示例性的仅呈现了2个任务,具体是对于日志分析的关键字统计任务和对于调用链的请求量统计任务。
[0004][0005]
然而,上述通过硬编程方式实现的流处理方法,工作量繁琐,同时针对不同任务的代码紧耦合,一旦针对某一任务的代码编程出现错误,则会影响其它任务对应的代码的执行,导致流处理效率较低。
[0006]
相应地,本领域需要一种新的流数据动态处理方案来解决上述问题。


技术实现要素:

[0007]
为了克服上述缺陷,提出了本发明,以提供解决或至少部分地解决上述技术问题。本发明提供了一种流数据动态处理方法、装置、电子设备及存储介质。
[0008]
在第一方面,本发明提供一种流数据动态处理方法,所述方法包括:根据用户需求生成配置任务,并将所述配置任务存储在数据库中;根据所述配置任务启动流处理线程,以动态生成流处理任务;由所述流处理任务获取流数据,并对所述流数据进行处理;对处理后的流数据进行开窗聚合,得到指标数据。
[0009]
在一个实施方式中,根据用户需求生成配置任务,包括:获取与所述用户需求对应的任务模板;在所述任务模板中添加相应的任务参数,得到所述配置任务,其中所述配置任务包括任务名称和流处理开窗参数。
[0010]
在一个实施方式中,所述用户需求包括日志分析;所述根据用户需求生成配置任
务,包括:获取与所述日志分析对应的任务模板;在所述任务模板中添加相应的任务参数,得到所述配置任务,其中所述配置任务中的任务名称为关键字统计和应用产生的日志量,所述流处理开窗参数包括开窗类型,所述开窗类型为滑动窗口或滚动窗口中的任意一种。
[0011]
在一个实施方式中,所述用户需求包括调用链相关分析;所述根据用户需求生成配置任务,包括:获取与所述调用链相关分析对应的任务模板;在所述任务模板中添加相应的任务参数,得到所述配置任务,其中所述配置任务中的任务名称为请求量、处理耗时、失败原因、调用方请求次数和耗时统计中的至少一种,所述流处理开窗参数包括开窗类型,所述开窗类型为滑动窗口或滚动窗口中的任意一种。
[0012]
在一个实施方式中,根据所述配置任务启动流处理线程,以动态生成流处理任务,包括:在启动web容器时使用dynamic函数调用所述数据库中的配置任务,其中所述函数包括表征任务名称的变量;根据所调用的配置任务中的任务名称和流处理开窗参数对相应的流处理线程进行初始化,动态生成流处理任务。
[0013]
在一个实施方式中,由所述流处理任务获取流数据,包括:所述流处理任务从至少一个消息队列中读取流数据,其中,所述流处理数据包括日志、链路数据和探针采集数据中的至少一种业务数据。
[0014]
在一个实施方式中,在根据用户需求生成配置任务,并将所述配置任务存储在数据库中之后,以及在由所述流处理任务获取流数据,并对所述流数据进行处理之前,所述方法还包括:根据新增的配置任务向已启动的web容器注册新的流处理线程。
[0015]
在第二方面,本发明提供一种流数据动态处理装置,所述装置包括:
[0016]
生成模块,被配置为根据用户需求生成配置任务,并将所述配置任务存储在数据库中;
[0017]
启动模块,被配置为根据所述配置任务启动流处理线程,以动态生成流处理任务;
[0018]
处理模块,被配置为由所述流处理任务获取流数据,并对所述流数据进行处理;
[0019]
聚合模块,被配置为对处理后的流数据进行开窗聚合,得到指标数据。
[0020]
在第三方面,提供一种电子设备,该电子设备包括处理器和存储装置,所述存储装置适于存储多条程序代码,所述程序代码适于由所述处理器加载并运行以执行前述任一项所述的流数据动态处理方法。
[0021]
在第四方面,提供一种计算机可读存储介质,该计算机可读存储介质其中存储有多条程序代码,所述程序代码适于由处理器加载并运行以执行前述任一项所述的流数据动态处理方法。
[0022]
本发明上述一个或多个技术方案,至少具有如下一种或多种有益效果:
[0023]
本发明中的流数据动态处理方法,首先根据用户需求生成配置任务,并将配置任务存储在数据库中,接着根据配置任务启动流处理线程,以动态生成流处理任务,其次由流处理任务获取流数据,并对流数据进行处理,最后对处理后的流数据进行开窗聚合,得到指标数据。如此,通过预先生成配置任务并存储在数据库中,后期直接从数据库中调用配置任务来动态生成流处理任务,避免了重复执行每个任务程序的问题,提高了流处理效率。
附图说明
[0024]
参照附图,本发明的公开内容将变得更易理解。本领域技术人员容易理解的是:这
些附图仅仅用于说明的目的,而并非意在对本发明的保护范围组成限制。此外,图中类似的数字用以表示类似的部件,其中:
[0025]
图1是智能监控系统对应用的全链路性能检测的流程示意图;
[0026]
图2是根据本发明的一个实施例的流数据动态处理方法的主要步骤流程示意图;
[0027]
图3是根据本发明的一个实施例的流数据动态处理装置的主要结构框图示意图;
[0028]
图4是根据本发明的一个实施例的电子设备的结构示意图。
[0029]
附图标记列表:
[0030]
11:生成模块;12:启动模块;13:处理模块;14:聚合模块。
具体实施方式
[0031]
下面参照附图来描述本发明的一些实施方式。本领域技术人员应当理解的是,这些实施方式仅仅用于解释本发明的技术原理,并非旨在限制本发明的保护范围。
[0032]
在本发明的描述中,“模块”、“处理器”可以包括硬件、软件或者两者的组合。一个模块可以包括硬件电路,各种合适的感应器,通信端口,存储器,也可以包括软件部分,比如程序代码,也可以是软件和硬件的组合。处理器可以是中央处理器、微处理器、图像处理器、数字信号处理器或者其他任何合适的处理器。处理器具有数据和/或信号处理功能。处理器可以以软件方式实现、硬件方式实现或者二者结合方式实现。非暂时性的计算机可读存储介质包括任何合适的可存储程序代码的介质,比如磁碟、硬盘、光碟、闪存、只读存储器、随机存取存储器等等。术语“a和/或b”表示所有可能的a与b的组合,比如只是a、只是b或者a和b。术语“至少一个a或b”或者“a和b中的至少一个”含义与“a和/或b”类似,可以包括只是a、只是b或者a和b。单数形式的术语“一个”、“这个”也可以包含复数形式。
[0033]
目前,传统的通过硬编程方式实现的流处理方法,工作量繁琐,同时针对不同任务的代码紧耦合,一旦针对某一任务的代码编程出现错误,则会影响其它任务对应的代码的执行,导致流处理效率较低。
[0034]
为此,本技术提出了一种流数据动态处理方法、装置、电子设备及存储介质,首先根据用户需求生成配置任务,并将配置任务存储在数据库中,接着根据配置任务启动流处理线程,以动态生成流处理任务,其次由流处理任务获取流数据,并对流数据进行处理,最后对处理后的流数据进行开窗聚合,得到指标数据。如此,通过预先生成配置任务并存储在数据库中,后期直接从数据库中调用配置任务来动态生成流处理任务,避免了重复执行每个任务程序的问题,提高了流处理效率。
[0035]
参阅附图2,图2是根据本发明的一个实施例的流数据动态处理方法的主要步骤流程示意图。
[0036]
如图2所示,本发明实施例中的流数据动态处理方法主要包括下列步骤s101-步骤s104。
[0037]
步骤s101:根据用户需求生成配置任务,并将配置任务存储在数据库中。
[0038]
在一个具体实施方式中,根据用户需求生成配置任务,包括:获取与所述用户需求对应的任务模板;在所述任务模板中添加相应的任务参数,得到所述配置任务,其中所述配置任务包括任务名称和流处理开窗参数。
[0039]
具体来说,预先设置有与用户需求对应的各种任务模板,并存储在相应位置。具体
在生成配置任务的过程中,首先获取与用户需求对应的任务模板,接着在任务模板中添加相应的任务参数即可得到配置任务。
[0040]
配置任务至少包括任务名称和流处理开窗参数,但不限于此,还可以包括诸如开窗尺寸、聚合因子以及宽限期等任务参数。
[0041]
其中宽限期用于控制等待给定窗口的无需数据记录的时间。如果某个记录的时间戳指示它属于某个窗口,但当前流时间大于该窗口的结束时间加上宽限期,则会丢弃该记录。
[0042]
在一个具体实施方式中,所述用户需求包括日志分析;所述根据用户需求生成配置任务,包括:获取与所述日志分析对应的任务模板;在所述任务模板中添加相应的任务参数,得到所述配置任务,其中所述配置任务中的任务名称为关键字统计和应用产生的日志量,所述流处理开窗参数包括开窗类型,所述开窗类型为滑动窗口或滚动窗口中的任意一种。
[0043]
示例性地,当用户需求是对日志进行分析时,则生成的配置任务包括关键字统计(任务名称)、应用产生的日志量(任务名称)。开窗类型例如是滑动窗口或滚动窗口等。聚合因子为具体的应用名称及具体的关键字,例如交易系统“调用上游异常”出现的次数,该
“”
中的调用上游异常即为关键字。
[0044]
在一个具体实施方式中,所述用户需求包括调用链相关分析;所述根据用户需求生成配置任务,包括:获取与所述调用链相关分析对应的任务模板;在所述任务模板中添加相应的任务参数,得到所述配置任务,其中所述配置任务中的任务名称为请求量、处理耗时、失败原因、调用方请求次数和耗时统计中的至少一种,所述流处理开窗参数包括开窗类型,所述开窗类型为滑动窗口或滚动窗口中的任意一种。
[0045]
示例性地,当用户需求为调用链相关分析时,则生成的配置任务包括:请求量(任务名称)、处理耗时(任务名称)、失败原因(任务名称)、调用方请求次数(任务名称),耗时统计(任务名称)等。开窗类型例如是滑动窗口或滚动窗口等。聚合因子为具体的应用名称、实例、接口名、业务线等。
[0046]
图1所示的日志是各种微服务产生的日志,比如第三方支付场景下的记账微服务产生的日志。链路数据是服务间调用产生的数据,例如交易调银联、交易调风控调账务、风控调用户,构成调用树或调用网。探针是指在应用侧埋点,从而采集应用运行中定制化的业务数据。
[0047]
在实际应用中,配置任务具体以数据库中的一条记录体现。
[0048]
步骤s102:根据配置任务启动流处理线程,以动态生成流处理任务。
[0049]
在一个具体实施方式中,根据所述配置任务启动流处理线程,以动态生成流处理任务,包括:在启动web容器时使用dynamic函数调用所述数据库中的配置任务,其中所述函数包括表征任务名称的变量;根据所调用的配置任务中的任务名称和流处理开窗参数对相应的流处理线程进行初始化,动态生成流处理任务。
[0050]
具体来说,实际中,在启动web容器时根据配置任务来初始化各流处理线程。其中,web容器用于管理流处理线程。例如,启动日志分析各流处理线程、调用链相关各流处理线程、探针相关各流处理线程。
[0051]
对于每个流处理线程的启动,首先使用dynamic函数调用数据库中预先存储的配
置任务,接着可以根据所调用的配置任务中的任务名称、流处理开窗类型、开窗尺寸、聚合因子、宽限期等,动态生成流处理任务。其中,动态生成流处理任务的程序代码例如为:
[0052][0053]
如此,通过dynamic函数调用数据库中预先存储的配置任务,其中在该函数语句中将具体任务抽象成变量tasks,以使得各个任务对应的代码解耦,从而避免了存在多个任务时程序的重复执行。另外,当某一任务的代码编程出现错误时,不会影响其他任务对应代码的执行,提高了流处理效率。
[0054]
步骤s103:由流处理任务获取流数据,并对流数据进行处理。
[0055]
在一个具体实施方式中,由所述流处理任务获取流数据,包括:所述流处理任务从至少一个消息队列中读取流数据,其中,所述流处理数据包括日志、链路数据和探针采集数据中的至少一种业务数据。
[0056]
具体来说,流数据包括日志、链路数据、探针采集的业务类数据。
[0057]
例如,日志是各种微服务产生的日志,比如第三方支付场景下的记账微服务产生的日志。链路数据是服务间调用产生的数据,例如交易调银联、交易调风控调账务、风控调用户,构成调用树或调用网。探针是指在应用侧埋点,从而采集应用运行中定制化的业务数据。
[0058]
上述流数据存储在消息中间件中,其中消息中间件例如kafka、rabitmq等,不同类别的数据(例如日志、调用链等)存储在不同的消息队列中。
[0059]
在该步骤中,首先由流处理任务从至少一个消息队列中读取流数据,接着对流数据进行处理。
[0060]
例如处理可以包括过滤、清洗,转换等,以使流数据的数据格式标准统一,方便后续进一步处理。
[0061]
例如日志分析处理任务从某消息队列中获取日志数据。
[0062]
流处理任务例如使用kafka-streams工具包来实现。
[0063]
步骤s104:对处理后的流数据进行开窗聚合,得到指标数据。
[0064]
具体来说,将处理后的流数据,按事件发生时间将流数据分发至不同的时间窗口中,对各时间窗口内的数据根据聚合因子进行聚合操作,从而生成带时间戳的各种指标数据。其中多个时间窗口对应多个时间戳。
[0065]
示例性地,对于调用链数据:对采集到的窗口时间内的链路数据进行聚合操作,具体的聚合任务为请求量(任务名称)、处理耗时(任务名称)、失败原因(任务名称)、调用方请求次数(任务名称),耗时统计(任务名称)等。
[0066]
示例性地,对于日志数据:对采集到的窗口时间内的日志进行聚合操作,具体的聚合任务为关键字统计、应用产生的日志量等。
[0067]
基于上述步骤s101-步骤s104,首先根据用户需求生成配置任务,并将配置任务存储在数据库中,接着根据配置任务启动流处理线程,以动态生成流处理任务,其次由流处理任务获取流数据,并对流数据进行处理,最后对处理后的流数据进行开窗聚合,得到指标数据。如此,通过预先生成配置任务并存储在数据库中,后期直接从数据库中调用配置任务来动态生成流处理任务,避免了重复执行每个任务程序的问题,提高了流处理效率。
[0068]
在一个具体实施方式中,在根据用户需求生成配置任务,并将所述配置任务存储在数据库中之后,以及在由所述流处理任务获取流数据,并对所述流数据进行处理之前,所述方法还包括:根据新增的配置任务向已启动的web容器注册新的流处理线程。
[0069]
具体来说,在根据用户需求生成新增的配置任务后,还可以向已启动的web容器注册新的流处理线程,接着继续执行步骤s103。如此,能够根据新增的配置任务动态生成流处理任务。
[0070]
本领域技术人员应该理解的是,向已启动的web容器注册新的流处理线程与前述步骤s102属于并行的执行步骤。
[0071]
在一个具体实施方式中,对于步骤s104得到指标数据,可以存储在数据库中,以对其进行二次分析处理。
[0072]
在一个具体实施方式中,还可以基于流处理后得到的指标数据配置各种告警规则,并基于告警规则通知相关人员。
[0073]
示例性地,可以基于指标数据设置指标数据阈值,当该指标数据超过阈值时,通过微信、短信等通知相关人员。
[0074]
在一个具体实施方式中,还可以基于指标数据配置各种监控图表,并在ui界面上展示各种监控图表。
[0075]
需要指出的是,尽管上述实施例中将各个步骤按照特定的先后顺序进行了描述,但是本领域技术人员可以理解,为了实现本发明的效果,不同的步骤之间并非必须按照这样的顺序执行,其可以同时(并行)执行或以其他顺序执行,这些变化都在本发明的保护范围之内。
[0076]
进一步,本发明还提供了一种流数据动态处理装置。
[0077]
参阅附图3,图3是根据本发明的一个实施例的流数据动态处理装置的主要结构框图。
[0078]
如图3所示,本发明实施例中的流数据动态处理装置主要包括生成模块11、启动模块12、处理模块13和聚合模块14。在一些实施例中,生成模块11、启动模块12、处理模块13和聚合模块14中的一个或多个可以合并在一起成为一个模块。
[0079]
在一些实施例中,生成模块11可以被配置为根据用户需求生成配置任务,并将所述配置任务存储在数据库中。
[0080]
启动模块12可以被配置为根据所述配置任务启动流处理线程,以动态生成流处理
任务。
[0081]
处理模块13可以被配置为由流处理任务获取流数据,并对所述流数据进行处理。
[0082]
聚合模块14可以被配置为对处理后的流数据进行开窗聚合,得到指标数据。
[0083]
一个实施方式中,具体实现功能的描述可以参见步骤s101-步骤s104所述。
[0084]
上述流数据动态处理装置以用于执行图2所示的流数据动态处理方法实施例,两者的技术原理、所解决的技术问题及产生的技术效果相似,本技术领域技术人员可以清楚地了解到,为了描述的方便和简洁,流数据动态处理装置的具体工作过程及有关说明,可以参考流数据动态处理方法的实施例所描述的内容,此处不再赘述。
[0085]
本领域技术人员能够理解的是,本发明实现上述一实施例的方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读存储介质可以包括:能够携带所述计算机程序代码的任何实体或装置、介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器、随机存取存储器、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读存储介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读存储介质不包括电载波信号和电信信号。
[0086]
进一步,本发明还提供了一种电子设备。在根据本发明的一个电子设备实施例中,如图4所示,电子设备包括处理器41和存储装置42,存储装置可以被配置成存储执行上述方法实施例的流数据动态处理方法的程序,处理器可以被配置成用于执行存储装置中的程序,该程序包括但不限于执行上述方法实施例的流数据动态处理方法的程序。为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。
[0087]
进一步,本发明还提供了一种计算机可读存储介质。在根据本发明的一个计算机可读存储介质实施例中,计算机可读存储介质可以被配置成存储执行上述方法实施例的流数据动态处理方法的程序,该程序可以由处理器加载并运行以实现上述流数据动态处理方法。为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。该计算机可读存储介质可以是包括各种电子设备形成的存储装置设备,可选的,本发明实施例中计算机可读存储介质是非暂时性的计算机可读存储介质。
[0088]
进一步,应该理解的是,由于各个模块的设定仅仅是为了说明本发明的装置的功能单元,这些模块对应的物理器件可以是处理器本身,或者处理器中软件的一部分,硬件的一部分,或者软件和硬件结合的一部分。因此,图中的各个模块的数量仅仅是示意性的。
[0089]
本领域技术人员能够理解的是,可以对装置中的各个模块进行适应性地拆分或合并。对具体模块的这种拆分或合并并不会导致技术方案偏离本发明的原理,因此,拆分或合并之后的技术方案都将落入本发明的保护范围内。
[0090]
至此,已经结合附图所示的优选实施方式描述了本发明的技术方案,但是,本领域技术人员容易理解的是,本发明的保护范围显然不局限于这些具体实施方式。在不偏离本发明的原理的前提下,本领域技术人员可以对相关技术特征作出等同的更改或替换,这些
更改或替换之后的技术方案都将落入本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1