具体实施方式
为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本说明书的一些示例或实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图将本说明书应用于其它类似情景。除非从语言环境中显而易见或另做说明,图中相同标号代表相同结构或操作。
应当理解,本文使用的“系统”、“装置”、“单元”和/或“模组”是用于区分不同级别的不同组件、元件、部件、部分或装配的一种方法。然而,如果其他词语可实现相同的目的,则可通过其他表达来替换所述词语。
如本说明书和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可以包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其它的步骤或元素。
本说明书中使用了流程图用来说明根据本说明书的实施例的系统所执行的操作。应当理解的是,前面或后面操作不一定按照顺序来精确地执行。相反,可以按照倒序或同时处理各个步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。
图1是根据本说明书的一些实施例所示的示例性数据处理系统的示意图。数据处理系统100可以将数据处理过程中的异常数据进行再处理,降低因异常情况导致的数据损失。在一些实施例中,数据处理系统100可以应用于生活中需要进行数据处理的各个行业的各种场景,包括但不限于金融行业、互联网行业、汽车行业、餐饮行业、电信行业、能源行业、娱乐行业、体育行业、物流行业、医疗行业、安全行业等。在一些实施例中,数据处理系统100可以应用于需要对数据进行实时处理的情况,也可以应用于无需对数据进行实时处理的情况。在一些实施例中,对于不同场景下的数据处理系统100,例如对数据处理有不同的时限要求的情况下,可以综合考虑各方面因素,通过不同的再处理方式进行数据处理。如图1所示,数据处理系统100可以包括数据源110、数据处理120、数据输出130和处理设备140。
数据源110为数据处理系统100提供一个数据源。在一些实施例中,数据源110可以用于为系统提供需要进行处理的数据,可以是各个行业的各种数据,包括金融数据、电信数据、物流数据等。数据源110可以是以一个单独的中央服务器的形式存在,也可以是以多个通过网络连接的服务器的形式存在,还可以是以大量的个人设备的形式存在。
数据处理120可以处理来自数据处理系统100的至少一个组件的数据和/或信息。例如,数据处理120可以处理来自数据源110的数据,和/或来自处理设备140的对异常数据进行修复后的数据。在一些实施例中,完成处理的数据可以由数据处理120发送至数据输出130。在一些实施例中,数据处理120可以在云平台上实施。仅作为示例,所述云平台可以包括私有云、公共云、混合云、社区云、分布云、内部云、多层云等或其任意组合。
在一些实施例中,数据处理120可以是单个处理程序,也可以包括多个处理子程序(121、122、123、……)。在一些实施例中,多个处理子程序可以按照业务逻辑的实现进行划分,并按照一定的顺序进行排列。在一些实施例中,每个处理子程序可以包括一个或多个处理逻辑(或是处理代码),从而实现不同的业务处理逻辑。在一些实施例中,数据处理120可以包括至少一个处理单元(例如,单核处理设备或多核处理设备)。仅作为示例,数据处理120包括中央处理单元(CPU)、专用集成电路(ASIC)、专用应用指令集处理器(ASIP)、图形处理单元(GPU)、物理处理单元(PPU)、数字信号处理器(DSP)、现场可程序门阵列(FPGA)、可程序逻辑设备(PLD)、控制器、微控制器单元、精简指令集计算机(RISC)、微处理器等或其任意组合。
数据输出130可以为数据处理系统100输出数据。在一些实施例中,数据输出130可以用于将系统处理完成的数据输出,可以包括数据处理的结果或是其他相关信息。数据输出130可以是以一个单独的中央服务器的形式存在,也可以是以多个通过网络连接的服务器的形式存在,还可以是以大量的个人设备的形式存在。
处理设备140可以实现本说明书实施例描述的方法和系统相关的一个或多个功能。例如,处理设备140可以获取来自数据处理120的异常数据及其对应的元数据,并至少基于所述元数据,将所述异常数据对应的输入数据进行修复并发送修复的输入数据至数据处理120重新进行处理,或是将所述异常数据对应的输入数据进行反馈并获取针对数据处理程序的更新。在一些实施例中,处理设备140还可以将所述异常数据及其对应的元数据进行存储,用以分析优化数据处理程序(例如,数据处理120)。
在一些实施例中,处理设备140可以是单个处理设备,也可以是处理设备组。处理设备组可以是集中式处理设备组或者分布式处理设备组。在一些实施例中,处理设备140可以与数据处理系统100中的至少一个组件通信。在一些实施例中,处理设备140可以包括至少一个处理单元(例如,单核处理设备或多核处理设备)。仅作为示例,处理设备112包括中央处理单元(CPU)、专用集成电路(ASIC)、专用应用指令集处理器(ASIP)、图形处理单元(GPU)、物理处理单元(PPU)、数字信号处理器(DSP)、现场可程序门阵列(FPGA)、可程序逻辑设备(PLD)、控制器、微控制器单元、精简指令集计算机(RISC)、微处理器等,或其任意组合。在一些实施例中,处理设备140可以在云平台上实施。仅作为示例,所述云平台可以包括私有云、公共云、混合云、社区云、分布云、内部云、多层云等或其任意组合。
在一些实施例中,处理设备140可以包括存储设备,该存储设备可于储存数据和/或指令。例如,可以存储异常数据以及与异常数据相关的数据等。在一些实施例中,存储设备可以存储处理设备140中可执行的数据和/或指令,处理设备140可以通过执行或使用所述数据和/或指令以实现本说明书描述的示例性方法。在一些实施例中,存储设备可以包括大容量存储器、可移动存储器、易失性读写存储器、只读存储器(ROM)等或其任意组合。示例性的大容量存储器可以包括磁盘、光盘、固态磁盘等。示例性可移动存储器可以包括闪存驱动器、软盘、光盘、存储卡、压缩盘、磁带等。示例性易失性读写存储器可以包括随机存取存储器(RAM)。示例性RAM可以包括动态随机存取存储器(DRAM)、双倍数据速率同步动态随机存取存储器(DDRSDRAM)、静态随机存取存储器(SRAM)、晶闸管随机存取存储器(T-RAM)和零电容随机存取存储器(Z-RAM)等。示例性只读存储器可以包括掩模型只读存储器(MROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(PEROM)、电可擦除可编程只读存储器(EEPROM)、光盘只读存储器(CD-ROM)和数字多功能磁盘只读存储器等。在一些实施例中,所述存储设备可在云平台上实现。仅作为示例,所述云平台可以包括私有云、公共云、混合云、社区云、分布云、内部云、多层云等或其任意组合。在一些实施例中,存储设备可以使用HDFS(Hadoop Distributed File System)分布式文件系统。
可以理解的是,待处理的数据可以由数据源110发送至数据处理120,经由数据处理120处理完成的数据可以通过数据输出130输出至指定位置。以上可以由传统的数据处理方法或设备实现。在数据处理过程中所产生的异常数据,可由本说明书实施例披露的方法或系统进行处理,例如,处理设备140,并且与整个数据处理过程相互连接。例如,处理设备140可以将异常数据返回数据处理120进行有限次的重试操作。又例如,处理设备140可以根据异常原因对异常数据分别进行修复处理或是反馈处理。
应当注意的是,上述有关数据处理系统100的描述仅仅是为了示例和说明,而不限定本说明书的适用范围。对于本领域技术人员来说,在本说明书的指导下可以对数据处理系统100进行各种修正和改变。然而,这些修正和改变仍在本说明书的范围之内。
图2是根据本说明书的一些实施例所示的示例性处理设备的框图。处理设备200可以包括用来实现本说明书实施例中所描述的系统的任意部件。例如,处理设备200可以通过硬件、软件程序、固件或其任意组合,用以实现图1中所描述的处理设备140。为了方便起见,图中仅绘制了一个处理设备,但是本说明书实施例所描述的与处理设备200相关的计算功能可以以分布的方式、由一组相似的平台所实施,以分散系统的处理负荷。
在一些实施例中,处理设备200可以包括处理器210、存储器220、输入/输出部件230和通信端口240。在一些实施例中,所述处理器(例如,CPU)210,可以以一个或多个处理器的形式执行程序指令。在一些实施例中,所述存储器220包括不同形式的程序存储器和数据存储器,例如,硬盘、只读存储器(ROM)、随机存储器(RAM)等,用于存储由计算机处理和/或传输的各种各样的数据文件。在一些实施例中,所述输入/输出部件230可以用于支持处理设备200与其他部件之间的输入/输出。在一些实施例中,所述通信端口240可以与网络连接,用于实现数据通信。示例性的处理设备可以包括存储在只读存储器(ROM)、随机存储器(RAM)和/或其他类型的非暂时性存储介质中的由处理器210执行的程序指令。本说明书实施例的方法和/或流程可以以程序指令的方式实现。处理设备200也可以通过网络通讯接收本说明书中披露的程序和数据。
作为示例,当处理设备200用于实现处理设备140时,处理器210可以执行数据重试处理、数据修复处理以及反馈更新处理等相关操作。存储器220可以实现数据处理过程中数据的缓存以及异常数据和相关元数据的存储。输入/输出230和通信端口240可以实现与数据源110、数据处理120以及数据输出130之间的数据及信息流通。
为理解方便,图2中仅示例性绘制了一个处理器。然而,需要注意的是,本说明书实施例中的处理设备200可以包括多个处理器,因此本说明书实施例中描述的由一个处理器实现的操作和/或方法也可以共同地或独立地由多个处理器实现。例如,如果在本说明书中,处理设备200的处理器执行步骤1和步骤2,应当理解的是,步骤1和步骤2也可以由处理设备200的两个不同的处理器共同地或独立地执行(例如,第一处理器执行步骤1,第二处理器执行步骤2,或者第一和第二处理器共同地执行步骤1和步骤2)。
图3是根据本说明书的一些实施例所示的数据处理方法的示例性流程图。在一些实施例中,方法300中的一个或以上步骤可以由图5所示的处理设备500实现。
步骤320,获取数据处理程序中出现的异常数据,以及与所述异常数据相关的元数据。步骤320可以由获取模块510执行。
在一些实施例中,所述数据处理程序为处理与应用场景相关的输入数据的程序。在数据处理过程中,可能由于各方面的原因导致处理失败,例如,可能是服务器主机损坏导致的个别主机节点失效而导致处理失败,可能是网络问题导致的主机网络连接超时而导致处理失败,还可能是外部数据形式或是数据处理代码导致的处理失败。所述异常数据即为在数据处理失败的情况下对应的输入数据。在一些实施例中,所述输入数据可以是各种应用场景下产生的待处理数据,包括但不限于金融行业、互联网行业、汽车行业、餐饮行业、电信行业、能源行业、娱乐行业、体育行业、物流行业、医疗行业、安全行业等的数据。在一些实施例中,输入数据还需要要求满足一定的形式,若是在形式上有异常,则可能导致数据处理失败。例如,在金融场景下,有一个批次的待处理数据,该待处理数据的数据量为10条,在数据处理程序中,有一条数据由于格式异常(例如作为金额的数字末尾在小数点后多了一个零)而导致处理失败,则该数据即为异常数据,需要进行后续处理,避免被丢弃或是略过。
在一些实施例中,所述数据处理程序可以包含至少一个处理子程序,处理子程序可以由至少一个处理逻辑(或处理代码)实现。因此,在数据处理过程中,可以将处理过程分为多个处理节点,每一个节点可以是执行一个完整的处理逻辑,也可以是执行完一个完整的处理子程序。在正常的数据处理流程中,输入数据从数据源中产生,之后流入数据处理中根据实际的业务逻辑实现完成数据处理,正确处理的数据根据流程传递至下一个处理节点继续进行数据处理,直至处理完成后输出处理完成的数据。由此可以理解,与所述异常数据相关的元数据可以包括所述异常数据产生的处理节点的信息,例如,对应于处理节点的处理子程序或处理逻辑、所述处理节点的具体位置等。基于此,所述元数据可以用来指示异常数据的来源。因此,根据异常数据及与异常数据相关的元数据,可以在处理失败的基础上对异常数据进行再处理操作,从而在一定程度上提高数据的可靠性。
在一些实施例中,输入数据进入数据处理程序依次序完成一个个处理逻辑后,若均被正确处理则最终处理后的数据会被发送至数据输出,但若在数据处理过程中的某一个处理逻辑时处理失败,则所述处理逻辑无法得到正确处理后的数据。因此,系统可以根据是否获得正确处理后的数据从而判断在所述处理逻辑是否处理失败。在一些实施例中,若某一处理逻辑处理失败,还可以根据数据处理过程中产生的日志进行判断,或是根据处理失败时通常会返回的错误代码进行判断。
步骤340,基于所述元数据,对所述异常数据执行至少一种输入数据再处理操作。步骤340可以由处理模块520执行。
在一些实施例中,对于处理失败的异常数据可以执行一种或多种再处理操作,从而得到处理完成的数据。所述再处理操作可以包括重试操作、修复操作、反馈操作等。
在一些实施例中,所述异常数据可以包括由于所述数据处理程序异常导致处理失败的数据,以及由于所述数据本身异常导致处理失败的数据。所述数据处理程序异常可以包括由于数据处理逻辑异常而导致,也可以是外部客观原因而导致,例如网络异常。所述数据本身异常可以包括数据格式错误或是数据与处理逻辑不适配。例如,一个有效输入数据包括有A、B、C三个字段,要求在有A字段时C字段必须有一个值,但在实际情况中该有效输入数据在有A字段的情况下却没有C字段,或是C字段的值不符合预期,则该有效输入数据本身存在异常。
在一些实施例中,对于所述由于数据处理程序异常导致处理失败的数据,可以执行至少一次重试操作,和/或反馈操作。在一些实施例中,对于短时间处理失败的输入数据,可以进行适度的重试,从而避免由于暂时性原因导致的数据处理失败的情况,例如,暂时性的网络异常。重试的具体方式可以为将未能正确处理的输入数据重新在数据源中进行排队,再一次输入到数据处理程序中进行处理,也可以为定时或者触发性地将所述数据处理程序中获取数据源的地址修改为存储异常数据的地址,通过该地址将未能正确处理的输入数据重新获取到数据处理程序中进行处理。
在一些实施例中,对于长时间依旧不能被正确处理的输入数据,可以将异常数据及与异常数据相关的元数据执行反馈操作,再进行后续处理。反馈的具体方式可以为将异常数据与相关元数据传输至处理设备或外接设备,处理设备或外接设备可以根据异常数据及元数据获得数据处理过程中的所有过程信息,并据此构建数据处理失败时刻的系统镜像,以重现问题场景并定位出异常点。
在一些实施例中,对于所述由于所述数据本身异常导致处理失败的数据,可以执行修复操作。在一些实施例中,输入数据和处理逻辑可能不相匹配,但在进行修复操作后,得到的修正数据可以进行正确处理。在一些实施例中,修复完成的修正数据需要返回至数据处理程序进行重新处理,处理完成后再发送至数据输出,例如数据输出130。修复的具体方式可以为在数据格式异常导致处理失败的情况下,调整异常数据的格式以获取与所述处理子程序相匹配的修正数据,再将获取的修正数据返回至所述数据处理程序的输入进行重新处理。
在一些实施例中,在数据处理程序过程中的异常数据和元数据可以被存储,在再处理操作中可以随时调用并辅助进行操作。在一些实施例中,异常数据及元数据可以存储在处理设备的存储器中,该存储器可以包含一个缓存系统和一个可靠的存储系统,例如HDFS。在一些实施例中,存储的异常数据及元数据可以被用于分析及优化所述数据处理程序。例如,对于处理程序异常的情况,可以通过系统或是外部工作人员分析处理逻辑的异常原因并进行修复优化,解决导致的异常问题。在一些实施例中,通过对异常数据与元数据的存储及再处理,可以迅速定位异常问题并进行处理,加速了数据处理程序服务的业务的正向迭代。在一些实施例中,上述存储及分析优化操作,可以分别由存储模块530及分析模块540执行。系统优化的具体方式可以为判断处理子程序或处理逻辑是否需要更正,如需更正则需要获取优化后的异常处理子程序的更新,利用所述更新,更新所述异常处理子程序,使得异常数据能够被正常处理。
上述重试、修复、反馈、系统优化可以根据需要进行灵活的任意两种或者三种的组合,例如:重试后仍未能正确处理,可以修复并反馈;在特定场景下,可以直接反馈;修复可以包括修复数据,还可以包括修复子程序;例如:可以根据异常数据的位置和来源分析出可能出现问题的子程序,并对子程序或者子程序的部分处理逻辑进行更新。
本说明书实施例披露的数据处理方法,在正常的数据处理的基础上,对异常数据进行再处理在一方面可以防止数据损失,在某些场景下,处理失败的异常数据也可以辅助优化数据处理系统。在另一方面,还可以帮助外部工作人员解决实际运行过程中产生的各种问题。
应当注意的是,上述有关流程300的描述仅仅是为了示例和说明,而不限定本说明书的适用范围。对于本领域技术人员来说,在本说明书的指导下可以对流程300进行各种修正和改变。然而,这些修正和改变仍在本说明书的范围之内。例如,步骤320和340可以进行循环操作直至确定输入数据无法处理完成。
图4是根据本说明书的一些实施例所示的数据再处理方法的示例性流程图。流程400可以由图5所示的处理设备500(或处理模块520)执行。
步骤420,判断所述异常数据类别。
在一些实施例中,若是出现数据处理失败的情况,需要首先判断异常数据的类别,再根据异常数据的不同类别,执行至少一种不同的再处理操作。在一些实施例中,异常数据可以包括由于所述数据处理程序异常导致处理失败的输入数据,以及由于输入数据本身异常导致处理失败的输入数据。所述数据处理程序异常的情况可以包括数据处理逻辑导致的问题(例如,处理逻辑或是处理代码错误,无法正确处理输入数据),也可以是外部客观原因导致的问题(例如,主机损坏导致的个别主机节点失效或是网络问题导致的主机网络连接超时)。所述处理逻辑错误可以包括输入数据漏处理或是处理逻辑存在缺陷等问题。在一些实施例中,输入数据本身异常可以包括由于输入数据和处理逻辑不匹配导致。
在一些实施例中,异常数据类别的识别可以通过在异常数据进行处理过程中所产生的相关数据信息进行。在数据处理过程中,若数据处理失败,通常会返回错误代码,通过错误代码,可以判断数据处理出现错误的原因,从而判断异常数据的类别,进而进行再处理操作。
在一些实施例中,若异常数据是由于所述数据处理程序异常导致处理失败的数据,则可以进入步骤440执行至少一次重试操作,或是进入步骤460执行反馈操作,或者进入步骤440执行至少一次重试操作,仍然不能被正确处理后进入步骤460执行反馈操作。在一些实施例中,若异常数据是由于所述数据本身异常导致处理失败的数据,则可以进入步骤480执行修复操作。在一些实施例中,若通过步骤480执行修复后的数据仍然处理失败,则可以进入步骤460执行反馈操作。在一些实施例中,反馈操作可以在不同情况下执行,用于辅助优化处理程序。
步骤440,将输入数据重新输入数据处理程序进行重试。步骤440可以由重试单元521执行。
在一些实施例中,根据步骤420判断的异常数据类别,在异常数据是由于所述数据处理程序异常导致处理失败的数据的情况下,可以执行至少一次重试操作。在一些实施例中,可以根据异常数据的来源,返回所述异常数据至所述数据处理程序中对应于所述来源的位置,并对所述异常数据重新进行数据处理。在一些实施例中,异常数据的来源为异常数据处理失败时的处理逻辑,对应来源的位置为所述处理逻辑的进入节点。异常数据返回对应来源的位置后,可以根据所述处理逻辑重新进行数据处理。在一些实施例中,若异常数据经过重试操作后能成功完成处理,则可以进入下一处理子流程或处理逻辑,或是将数据处理结果输出;若异常数据经过重试操作后仍然无法处理完成,则可以根据不同的应用场景情况选择继续进行重试操作或是放弃重试操作而进入步骤460。
在一些实施例中,进行重试操作的次数是有限的,可以预先进行设定,例如,2次、5次、10次等,也可以根据不同的应用场景设定不同的次数。在一些实施例中,进行重试操作的时间可以预先进行设定,可以是10s、30s、1min等任意时间长度,还可以根据不同的应用场景进行设定。在实际情况中,不同的输入数据对时限的要求不同。例如,某些场景下要求在极短时间内处理完成的数据,若处理时间超出1s可能就会被丢弃,对于这样的异常数据,只能以最快速度进行重试操作;某些场景下时限要求不是特别短的异常数据,在经过数次重试后仍然无法处理完成,则可以持续时间进行归档或统计,或是可以进入步骤480进行数据修复。因此,异常数据是否需要进行重试操作需要根据具体业务场景情况进行选择。
在一些实施例中,还可能出现时限要求太短无法进行重试的情况,在这样的情况下,虽然处理的数据已经不再被需要,但是异常数据和关联的元数据仍然需要进行存储。在一些实施例中,在限定的重试次数或重试时间内仍然无法处理完成的异常数据,也需要将异常数据和元数据进行存储。存储的异常数据和相关元数据在存储系统中可以根据不同的应用场景定期或是实时进行修复或反馈,从而保证每一条数据都会被正确处理或是得到最终处理结果。
步骤460,将异常数据和与异常数据相关的元数据进行反馈。步骤460可以由反馈单元523执行。
在一些实施例中,对于无法正确处理的异常数据,可以执行反馈操作。其中,反馈操作包括将异常数据及相关的元数据传输至处理设备(例如,处理设备500)中的其他部件,例如,分析模块540,或传输至处理设备的外接设备,例如,外接的分析系统。在一些实施例中,所述元数据还包括对应于所述异常数据的处理子程序及各处理逻辑,从而可以根据所述元数据获得数据处理过程中的所有过程信息。因此,处理设备(例如,处理设备500)或处理设备的外接设备可以根据异常数据及相关元数据构建数据处理错误时刻的系统镜像,以重现问题场景并定位出异常点,例如,异常的处理子程序。
在一些实施例中,对于执行了反馈操作的异常数据,后续还需要执行更新操作,以处理异常数据。在分析模块540,或处理设备的外接设备获得异常数据以及相关元数据后,可以根据所述异常数据与元数据进行分析导致数据处理失败的具体原因,判断处理子程序或处理逻辑是否需要更正,如需更正则需要优化处理子程序,使得异常数据能够被正常处理。
在一些实施例中,可以获取针对所述异常数据的异常处理子程序的更新,利用所述更新,更新所述异常处理子程序,在更新完毕后,返回异常数据至所述数据处理流程的输入进行重新处理。在一些实施例中,更新所述异常处理子程序和其中具体的处理逻辑可以在整个处理流程不停止的情况下进行,根据人为触发的动态更新,将获取的更新包替换到指定的节点上,通过重新下载等方式,将对应节点重新启动。在重新启动后的节点,将异常数据重新进行数据处理,处理成功的数据则发送至数据输出。若重启后异常数据仍然无法被正确处理,则再次执行反馈操作即可。
在一些实施例中,反馈和更新的操作可以解决系统无法自动解决的问题,从而保证所有数据都被正确处理,即使在某些情况下异常数据可能已经被忽略,也可以通过反馈更新优化数据处理程序,从而优化更新数据处理系统。在一些实施例中,异常的数据会通过反馈更新的形式在系统中进行有限次的循环,直至被正确处理或是被最终抛弃。在不破坏业务及不增加业务复杂性的同时,加强了数据流程的韧性,降低因外部因素导致的“数据损失”。
步骤480,对输入数据进行修复或者对数据处理程序进行修复。步骤480可以由修复单元522执行。
在一些实施例中,对于所述由于输入数据本身异常导致处理失败的数据,可以执行修复操作。所述修复可以是指调整所述异常数据的格式以获取与所述处理子程序相匹配的修正数据。在获取所述修正数据后,可以将其返回至所述数据处理程序的输入进行重新处理。例如,上述金融场景下的一个批次为10条的数据,其中一条作为金额的数字末尾在小数点后多了一个零,执行修复操作可以将小数点后多余的0删去,使该条修正数据满足要求。修复后的数据发送至数据处理程序的输入端对数据进行重新处理,则该条修正数据可以被正确处理并发送至数据输出。
在一些实施例中,进行修复的异常数据通常是由于输入数据格式与处理逻辑不匹配造成的,因此被认为是异常数据。将异常数据修复为修正数据后,将修正数据返回至数据处理程序的输入可以称为局部数据回放,通过局部数据回放能力,可以让修正数据在数据处理程序中进行重新处理,使原来的输入数据可以最终被正确处理,以完成数据的订正处理。在一些实施例中,当通过修复操作无法将数据修复为可以被正确处理的数据时,可以执行反馈操作,从而正确处理所有异常数据。在一些实施例中,随着异常数据问题的逐渐积累,修复操作可以根据历史异常情况进行更新,从而能够直接修复更多异常数据,减少系统负荷。
在一些实施例中,所述数据处理程序可以被实现为主处理程序和子处理程序。主处理程序负责数据处理的主要部分,子处理程序用于辅助处理,还可以从业务的角度实现数据处理的主子流程,即如果输入数据不能被主流程处理,则下放给子流程。子流程相较于主流程有更为宽松的限制以及处理机制,可以对数据进行备选处理。
应当注意的是,上述有关流程400的描述仅仅是为了示例和说明,而不限定本说明书的适用范围。对于本领域技术人员来说,在本说明书的指导下可以对流程400进行各种修正和改变。然而,这些修正和改变仍在本说明书的范围之内。例如,步骤480可以在步骤460之前进行,或是步骤460可以被略过。又例如,反馈操作的执行可以根据应用场景的不同进行设定,可以在重试操作完成后也可以在修复操作完成后,不同的应用场景或是不同的处理策略可能会是不同的操作流程。还例如,反馈操作可以在固定时间进行,例如每2或4个小时反馈一次,或是根据应用场景及处理策略进行设定,也可以是实时进行反馈。
图5是根据本说明书的一些实施例所示的示例性数据处理系统的框图。如图5所示,该系统可以包括获取模块510、处理模块520、存储模块530和分析模块540。
获取模块510可以用于获取数据处理程序中出现的异常数据,以及与所述异常数据相关的元数据。在一些实施例中,获取模块510获取的元数据可以包括异常数据产生的处理节点的信息,例如,对应于处理节点的处理子程序或处理逻辑、所述处理节点的具体位置等。在一些实施例中,获取模块510可以获取异常处理子程序的更新。在一些实施例中,获取模块510还可以获取异常数据修复后的修正数据进行重新处理。
处理模块520可以用于基于所述元数据,对异常数据执行至少一种输入数据再处理操作。在一些实施例中,所述处理模块520可以用于对于所述由于所述数据处理程序异常导致处理失败的数据,执行至少一次重试操作,或所述反馈操作。在一些实施例中,所述处理模块520还可以用于对于所述由于所述数据本身异常导致处理失败的数据,执行所述修复操作。
在一些实施例中,所述处理模块520可以包括重试单元521、修复单元522和反馈单元523。在一些实施例中,重试单元521可以用于将未能正确处理的输入数据重新在数据源中进行排队,再一次输入到数据处理程序中进行处理。在一些实施例中,重试单元521可以用于为定时或者触发性地将所述数据处理程序中获取数据源的地址修改为存储异常数据的地址,通过该地址将未能正确处理的输入数据重新获取到数据处理程序中进行处理。在一些实施例中,修复单元522可以用于在数据格式异常导致处理失败的情况下,调整异常数据的格式以获取与所述处理子程序相匹配的修正数据,再将获取的修正数据返回至所述数据处理程序的输入进行重新处理。在一些实施例中,反馈单元523可以用于根据异常数据及元数据获得数据处理过程中的所有过程信息,并据此构建数据处理失败时刻的系统镜像,以重现问题场景并定位出异常点。在一些实施例中,反馈单元523可以用于反馈所述异常数据及所述元数据,获取针对所述异常数据的异常处理子程序的更新,利用所述更新更新所述异常处理子程序,并且返回所述异常数据至所述数据处理流程的输入进行重新处理。
存储模块530可以用于存储获取模块510获取的异常数据及于异常数据相关的元数据。在一些实施例中,异常数据为数据处理程序中出现的异常数据,元数据包括指示所述异常数据的来源的节点状态信息以及对应于异常数据的异常处理子程序。在一些实施例中,存储模块530存储的异常数据和元数据可以在再处理操作中随时被调用并辅助进行操作。
分析模块540可以用于基于所述存储的异常数据及所述元数据分析并优化所述数据处理程序。在一些实施例中,分析模块540可以用于分析异常数据处理失败的原因,并针对处理失败的原因对数据处理程序进行优化,在一定程度上减少数据处理失败的情况。在一些实施例中,分析模块540还可以用于基于所述存储的异常数据及所述元数据,判断处理子程序或处理逻辑是否需要更新,并根据判断结果,更新所述异常处理子程序,使得异常数据能够被正常处理。
应当理解,图5所示的系统及其模块可以利用各种方式来实现。例如,在一些实施例中,系统及其模块可以通过硬件、软件或者软件和硬件的结合来实现。其中,硬件部分可以利用专用逻辑来实现;软件部分则可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域技术人员可以理解上述的方法和系统可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、CD或DVD-ROM的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本说明书的系统及其模块不仅可以有诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用例如由各种类型的处理器所执行的软件实现,还可以由上述硬件电路和软件的结合(例如,固件)来实现。
需要注意的是,以上对于数据处理系统500及其模块的描述,仅为描述方便,并不能把本说明书限制在所举实施例范围之内。可以理解,对于本领域的技术人员来说,在了解该系统的原理后,可能在不背离这一原理的情况下,对各个模块进行任意组合,或者构成子系统与其他模块连接。例如,在一些实施例中,图5中披露的数据获取模块510、处理模块520、存储模块530和分析模块540可以是一个系统中的不同模块,也可以是一个模块实现上述的两个或两个以上模块的功能。又例如,数据处理系统500还可以通信模块,用来与其他部件通信,例如用于将存储的异常数据与元数据发送至处理模块进行再处理。数据处理系统500中各个模块可以共用一个存储模块,各个模块也可以分别具有各自的存储模块。诸如此类的变形,均在本说明书的保护范围之内。
本说明书实施例可能带来的有益效果包括但不限于:1)在数据处理失败的基础上进行再处理操作,提高数据处理的可靠性;2)根据存储的异常数据及元数据,分析并优化所述数据处理程序;3)通过对异常数据与元数据的存储及再处理,可以迅速定位异常问题并进行处理,加速了业务的正向迭代;4)保证每一条数据都会被正确处理或是得到最终处理结果,防止数据损失,辅助优化数据处理系统;5)帮助外部工作人员迅速了解数据处理程序在实际运行过程中产生的各种问题;6)在不破坏业务及不增加业务复杂性的同时,加强了数据流程的韧性,降低因外部因素导致的“数据损失”;7)通过局部数据回放,让修正数据在数据处理程序中进行重新处理,使原来的输入数据可以最终被正确处理,以完成数据的订正处理。需要说明的是,不同实施例可能产生的有益效果不同,在不同的实施例里,可能产生的有益效果可以是以上任意一种或几种的组合,也可以是其他任何可能获得的有益效果。
上文已对基本概念做了描述,显然,对于本领域技术人员来说,上述详细披露仅仅作为示例,而并不构成对本说明书的限定。虽然此处并没有明确说明,本领域技术人员可能会对本说明书进行各种修改、改进和修正。该类修改、改进和修正在本说明书中被建议,所以该类修改、改进、修正仍属于本说明书示范实施例的精神和范围。
同时,本说明书使用了特定词语来描述本说明书的实施例。如“一个实施例”、“一实施例”、和/或“一些实施例”意指与本说明书至少一个实施例相关的某一特征、结构或特点。因此,应强调并注意的是,本说明书中在不同位置两次或多次提及的“一实施例”或“一个实施例”或“一个替代性实施例”并不一定是指同一实施例。此外,本说明书的一个或多个实施例中的某些特征、结构或特点可以进行适当的组合。
此外,本领域技术人员可以理解,本说明书的各方面可以通过若干具有可专利性的种类或情况进行说明和描述,包括任何新的和有用的工序、机器、产品或物质的组合,或对他们的任何新的和有用的改进。相应地,本说明书的各个方面可以完全由硬件执行、可以完全由软件(包括固件、常驻软件、微码等)执行、也可以由硬件和软件组合执行。以上硬件或软件均可被称为“数据块”、“模块”、“引擎”、“单元”、“组件”或“系统”。此外,本说明书的各方面可能表现为位于一个或多个计算机可读介质中的计算机产品,该产品包括计算机可读程序编码。
计算机存储介质可能包含一个内含有计算机程序编码的传播数据信号,例如在基带上或作为载波的一部分。该传播信号可能有多种表现形式,包括电磁形式、光形式等,或合适的组合形式。计算机存储介质可以是除计算机可读存储介质之外的任何计算机可读介质,该介质可以通过连接至一个指令执行系统、装置或设备以实现通讯、传播或传输供使用的程序。位于计算机存储介质上的程序编码可以通过任何合适的介质进行传播,包括无线电、电缆、光纤电缆、RF、或类似介质,或任何上述介质的组合。
本说明书各部分操作所需的计算机程序编码可以用任意一种或多种程序语言编写,包括面向对象编程语言如Java、Scala、Smalltalk、Eiffel、JADE、Emerald、C++、C#、VB.NET、Python等,常规程序化编程语言如C语言、Visual Basic、Fortran2003、Perl、COBOL2002、PHP、ABAP,动态编程语言如Python、Ruby和Groovy,或其他编程语言等。该程序编码可以完全在用户计算机上运行、或作为独立的软件包在用户计算机上运行、或部分在用户计算机上运行部分在远程计算机运行、或完全在远程计算机或处理设备上运行。在后种情况下,远程计算机可以通过任何网络形式与用户计算机连接,比如局域网(LAN)或广域网(WAN),或连接至外部计算机(例如通过因特网),或在云计算环境中,或作为服务使用如软件即服务(SaaS)。
此外,除非权利要求中明确说明,本说明书所述处理元素和序列的顺序、数字字母的使用、或其他名称的使用,并非用于限定本说明书流程和方法的顺序。尽管上述披露中通过各种示例讨论了一些目前认为有用的发明实施例,但应当理解的是,该类细节仅起到说明的目的,附加的权利要求并不仅限于披露的实施例,相反,权利要求旨在覆盖所有符合本说明书实施例实质和范围的修正和等价组合。例如,虽然以上所描述的系统组件可以通过硬件设备实现,但是也可以只通过软件的解决方案得以实现,如在现有的处理设备或移动设备上安装所描述的系统。
同理,应当注意的是,为了简化本说明书披露的表述,从而帮助对一个或多个发明实施例的理解,前文对本说明书实施例的描述中,有时会将多种特征归并至一个实施例、附图或对其的描述中。但是,这种披露方法并不意味着本说明书对象所需要的特征比权利要求中提及的特征多。实际上,实施例的特征要少于上述披露的单个实施例的全部特征。
一些实施例中使用了描述成分、属性数量的数字,应当理解的是,此类用于实施例描述的数字,在一些示例中使用了修饰词“大约”、“近似”或“大体上”来修饰。除非另外说明,“大约”、“近似”或“大体上”表明所述数字允许有±20%的变化。相应地,在一些实施例中,说明书和权利要求中使用的数值参数均为近似值,该近似值根据个别实施例所需特点可以发生改变。在一些实施例中,数值参数应考虑规定的有效数位并采用一般位数保留的方法。尽管本说明书一些实施例中用于确认其范围广度的数值域和参数为近似值,在具体实施例中,此类数值的设定在可行范围内尽可能精确。
针对本说明书引用的每个专利、专利申请、专利申请公开物和其他材料,如文章、书籍、说明书、出版物、文档等,特此将其全部内容并入本说明书作为参考。与本说明书内容不一致或产生冲突的申请历史文件除外,对本说明书权利要求最广范围有限制的文件(当前或之后附加于本说明书中的)也除外。需要说明的是,如果本说明书附属材料中的描述、定义、和/或术语的使用与本说明书所述内容有不一致或冲突的地方,以本说明书的描述、定义和/或术语的使用为准。
最后,应当理解的是,本说明书中所述实施例仅用以说明本说明书实施例的原则。其他的变形也可能属于本说明书的范围。因此,作为示例而非限制,本说明书实施例的替代配置可视为与本说明书的教导一致。相应地,本说明书的实施例不仅限于本说明书明确介绍和描述的实施例。