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

一种基于事件流驱动的数据清洗方法和装置

文献发布时间:2023-06-19 10:32:14


一种基于事件流驱动的数据清洗方法和装置

技术领域

本发明涉及一种数据清洗方法,尤其是涉及一种基于事件流驱动的数据清洗方法和装置。

背景技术

随着市场的不断变化,业务的不断迭代更新和系统的变迁,产生了很多脏乱的数据。新的系统升级之后形成一套标准化的服务数据,这时就需要对历史的各种数据版本进行统一的数据升级成标准数据。但在现有系统中,业务流程较长、数据量大、并发高,各流程节点数据依赖性强、一致性要求较高,若数据清洗出现异常,需要立即回滚到历史版本,还需要有针对关键操作的数据记录以及回滚操作策略。

基于以上场景,需要有一套结合现有需要清洗的业务场景,抽象出了共通的事件流处理技术方案。目前市场上活跃的事件流处理技术大致有以下三种:第一是Java事件驱动,可以满足单个事件驱动,当前复杂且流程连贯,周期长的业务场景,不太适用;第二是kafka事件流,其优点是异步操作提高了并发,但是缺点就是业务紧密型,流程较长型业务场景,不太适用;第三是JFR事件流,JFR是JVM的调优工具,通过不停的收集JVM和java应用程序中的各种事件,从而为后续的JMC分析提供数据,在业务复杂场景不适合处理并且JDK14才开源,当前不可用。

发明内容

本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种基于事件流驱动的数据清洗方法和装置,有效解决数据清洗中流程关联性强、业务紧密性高、数据量大、并发高、流程较长型的业务场景。

本发明的目的可以通过以下技术方案来实现:

一种基于事件流驱动的数据清洗方法,具体包括以下步骤:

S1、获取目标业务的任务列表,检测是否存在正在处理的任务,若是则退出当前清洗程序,若否则转至步骤S2;

S2、获取目标业务的数量处理流程信息;

S3、根据所述数量处理流程信息,加载组装任务实例组件及相应的梳理方法;

S4、获取需要进行数据清洗的源数据;

S5、将目标业务的任务列表拆分成一个主任务和多个子任务,所述子任务进入消息队列进行任务分发;

S6、备份原始主任务和子任务,获取标准化数据,根据所述标准化数据更新子任务以及主任务的处理结果并再次备份;

S7、对处理结果进行准确性校验,检测是否存在数据异常,若是转至步骤S8,若否则释放任务列表的任务状态;

S8、根据步骤S6中对原始主任务和子任务的备份数据,目标业务的任务列表进行数据回滚到步骤S1中的初始状态。

所述步骤S2中还包括根据任务列表发送任务执行异步消息。

所述步骤S3中还包括更新任务列表的状态为执行中。

所述步骤S5中的消息队列具体包括kafka消息队列。

所述步骤S6中备份原始主任务和子任务的过程还包括记录原始主任务和子任务的操作记录。

所述步骤S7中释放任务列表的任务状态的过程具体为调整任务列表的状态为空闲中。

一种使用所述基于事件流驱动的数据清洗方法的装置,包括存储器和处理器,所述数据清洗方法以计算机程序的形式储存在存储器中,并由处理器执行,执行时实现以下步骤:

S1、获取目标业务的任务列表,检测是否存在正在处理的任务,若是则退出当前清洗程序,若否则转至步骤S2;

S2、获取目标业务的数量处理流程信息;

S3、根据所述数量处理流程信息,加载组装任务实例组件及相应的梳理方法;

S4、获取需要进行数据清洗的源数据;

S5、将目标业务的任务列表拆分成一个主任务和多个子任务,所述子任务进入消息队列进行任务分发,进行异步消费;

S6、备份原始主任务和子任务,获取标准化数据,根据所述标准化数据更新子任务以及主任务的处理结果并再次备份;

S7、对处理结果进行准确性校验,检测是否存在数据异常,若是转至步骤S8,若否则释放任务列表的任务状态;

S8、根据步骤S6中对原始主任务和子任务的备份数据,目标业务的任务列表进行数据回滚到步骤S1中的初始状态。

与现有技术相比,本发明具有以下有益效果:

1.本发明通过采用事件流机制+实现方法组装,可以在不同场景下实现数据清洗功能,提高了数据清洗的扩展性。

2.本发明利用Java中重写,以及Bean名称加载的功能,实现了对各个小业务场景的单独进行维护,提高了小业务场景下数据清洗功能的稳定性。

3.本发明采用分块处理的策略,将目标业务的任务列表拆分成一个主任务和多个子任务,提高了数据清洗的效率。

4.本发明通过对原始主任务和子任务进行备份,当标准化数据更新后出现数据异常,能够及时回滚到初始状态,对后续的数据清洗工作提供了落地方案,提高了数据清洗的可靠性和复用性。

附图说明

图1为本发明的流程示意图。

具体实施方式

下面结合附图和具体实施例对本发明进行详细说明。本实施例以本发明技术方案为前提进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。

如图1所示,一种基于事件流驱动的数据清洗方法,具体包括以下步骤:

S1、获取目标业务的任务列表,检测是否存在正在处理的任务,若是则退出当前清洗程序,若否则转至步骤S2;

S2、获取目标业务的数量处理流程信息;

S3、根据数量处理流程信息,加载组装任务实例组件及相应的梳理方法;

S4、获取需要进行数据清洗的源数据;

S5、将目标业务的任务列表拆分成一个主任务和多个子任务,子任务进入消息队列进行任务分发;

S6、备份原始主任务和子任务,获取标准化数据,根据标准化数据更新子任务以及主任务的处理结果并再次备份;

S7、对处理结果进行准确性校验,检测是否存在数据异常,若是转至步骤S8,若否则释放任务列表的任务状态;

S8、根据步骤S6中对原始主任务和子任务的备份数据,目标业务的任务列表进行数据回滚到步骤S1中的初始状态。

步骤S2中还包括根据任务列表发送任务执行异步消息。

步骤S3中还包括更新任务列表的状态为执行中。

步骤S5中的消息队列具体包括kafka消息队列。

步骤S6中备份原始主任务和子任务的过程还包括记录原始主任务和子任务的操作记录。

步骤S7中释放任务列表的任务状态的过程具体为调整任务列表的状态为空闲中。

一种使用基于事件流驱动的数据清洗方法的装置,包括存储器和处理器,数据清洗方法以计算机程序的形式储存在存储器中,并由处理器执行,执行时实现以下步骤:

S1、获取目标业务的任务列表,检测是否存在正在处理的任务,若是则退出当前清洗程序,若否则转至步骤S2;

S2、获取目标业务的数量处理流程信息;

S3、根据数量处理流程信息,加载组装任务实例组件及相应的梳理方法;

S4、获取需要进行数据清洗的源数据;

S5、将目标业务的任务列表拆分成一个主任务和多个子任务,子任务进入消息队列进行任务分发,进行异步消费;

S6、备份原始主任务和子任务,获取标准化数据,根据标准化数据更新子任务以及主任务的处理结果并再次备份;

S7、对处理结果进行准确性校验,检测是否存在数据异常,若是转至步骤S8,若否则释放任务列表的任务状态;

S8、根据步骤S6中对原始主任务和子任务的备份数据,目标业务的任务列表进行数据回滚到步骤S1中的初始状态。

实施例

一种基于事件流驱动的数据清洗产品包更新全部产品明细的流程,包括以下步骤:

S1、判定是否有正在处理的产品包更新的主任务,若是则退出当前清洗程序,若否则转至步骤S2;

S2、选择处理产品包更新的数据处理流程,发送任务执行异步消息;

S3、更新主任务为执行中状态,加载产品包更新的任务组件并调用相应的梳理方法;

S4、进行清洗前的数据准备,装配待操作源数据;

S5、按照主任务中产品包、产品明细的颗粒度,最大500条一次的规则标记为子任务,进入kafka消息队列,拆分的子任务进行分发,开启多线程异步处理;

S6、备份原始主任务和子任务,获取标准化数据,根据标准化数据更新子任务以及主任务的处理结果并再次备份;

S7、对产品包更新全部产品明细清洗后数据进行准确性校验,验证子任务的执行结果是否出现异常,若是转至步骤S8,若否则将产品包更新全部产品明细任务状态改为空闲中;

S8、根据任务执行前对源数据的备份,进行数据回滚到初始状态。

此外,需要说明的是,本说明书中所描述的具体实施例,所取名称可以不同,本说明书中所描述的以上内容仅仅是对本发明结构所做的举例说明。凡依据本发明构思的构造、特征及原理所做的等小变化或者简单变化,均包括于本发明的保护范围内。本发明所属技术领域的技术人员可以对所描述的具体实例做各种各样的修改或补充或采用类似的方法,只要不偏离本发明的结构或者超越本权利要求书所定义的范围,均应属于本发明的保护范围。

相关技术
  • 一种基于事件流驱动的数据清洗方法和装置
  • 一种基于多源系统的数据清洗合并方法、装置及可读介质
技术分类

06120112587765