本申请实施例提供了一种保障数据一致性的处理方法,涉及计算机领域。通过从数据源读取添加有快照标记信息的第一数据,对所述第一数据进行处理,并将处理后的数据写入至存储系统,通过记录两个快照标记信息之间的数据写入的事务日志,并在数据写入出现异常时,保存事务日志,以便于后续基于事务日志重试将两个快照标记信息之间的数据写入至存储系统。本申请实施例还提供了一种保障数据一致性的处理装置、电子设备、芯片及计算机可读存储介质。本申请通过记录两个快照标记信息之间数据写入的事务日志来实现保障从上游数据源到下游存储系统的数据一致性,且不依赖下游存储系统是否支持事务,皆可保障端到端的数据一致性。皆可保障端到端的数据一致性。皆可保障端到端的数据一致性。
【技术实现步骤摘要】
保障数据一致性的处理方法、装置及相关设备
[0001]本申请涉及数据处理
,尤其涉及一种保障数据一致性的处理方法、装置、电子设备、芯片及计算机可读存储介质。
技术介绍
[0002]随着电子产品的普及,日常使用各类网站或应用都在产生数据。数据已渗透到当今社会各个行业,于是产生了大数据(Big Data)的概念。随着时间的推移,越来越多企业意识到海量数据的价值,为了对这些海量数据进行存储、挖掘与运用,诞生了一系列的存储和计算引擎。其中,主流的开源存储引擎有分布式文件系统(Hadoop Distributed File System,HDFS),主流的开源计算引擎有Spark计算引擎,Flink计算引擎,Hive计算引擎等。
[0003]大数据处理一般可以分两种类型:一种是批处理计算,即将某小时/某天/某月的数据作为一批数据进行处理;另一种是流处理计算,即将数据看作持续不断的、无界限的流,每来一条数据即进行计算。对于一个分布式系统来说,单个进程或节点崩溃导致整个任务失败是经常发生的事情,批处理系统比较容易实现容错机制。由于文件可以重复访问,当某个任务失败后,重启该任务即可。然而,对于流处理系统,由于数据源可以等同为无限的数据流,可能导致一个流处理任务执行几个月的情况,将所有数据缓存或是持久化,留待以后重复访问基本上是不可行的。而数据一致性是流处理系统需要支持的一个非常重要的特性,它可以保证每一条数据只被流处理系统处理一次。
[0004]随着各种业务需求的出现,业务已不满足于仅计算引擎内部的数据一致性,而对流处理端到端(整个任务的数据从上游数据源到计算引擎,再到下游存储引擎)的数据一致性的要求越来越高。在当前的技术背景下,如果下游存储引擎不支持事务(事务具有4个属性:原子性、一致性、隔离性、持久性),无法实现流处理端到端的数据一致性。如图1所示,为Flink计算引擎提供二阶段提交的方式,在下游存储引擎支持事务的情况下,实现流处理的数据一致性。在Flink计算引擎中,Data Source算子从数据源读取数据,Window算子对数据进行预设处理,Data Sink算子将数据写入至存储系统。HDFS可用于保存每个算子的状态信息。第一阶段:基于Flink检查点,在做检查点操作时Data Sink算子执行预提交;若预提交成功,则检查点完成,继续第二阶段;若失败,则做检查点失败,Flink从上一次成功的检查点重启Flink任务。第二阶段:检查点完成后,JobManager通知Data Sink算子执行提交动作,并由下游存储系统保障数据一致。
技术实现思路
[0005]有鉴于此,有必要提供一种保障数据一致性的处理方法,其可克服上述问题,可以实现在下游存储引擎不支持事务的情形下,亦可保障上下游的数据一致性。
[0006]本申请实施例第一方面公开了一种保障数据一致性的处理方法,包括:从数据源读取第一数据,其中第一数据每间隔预设时间添加有快照标记信息;对第一数据进行处理,得到第二数据,并将第二数据写入至存储系统;记录两个快照标记信息之间的第二数据的
事务日志;若检测到两个快照标记信息之间的第二数据出现写入异常,保存事务日志,以及基于事务日志,重试将两个快照标记信息之间的第二数据写入至存储系统。
[0007]通过采用该技术方案,基于记录两个快照标记信息之间数据写入的事务日志来实现保障从上游数据源到下游存储系统的数据一致性,且不依赖下游存储系统是否支持事务,均可保障从上游数据端到下游存储端的数据一致性。
[0008]在一种可能的实现方式中,处理方法还包括:若未检测到两个快照标记信息之间的第二数据出现写入异常,删除事务日志。
[0009]通过采用该技术方案,事务日志的保存只在数据写入异常发生时记录到快照标记信息或者远程存储系统中,对系统的存储空间及IO消耗较低。
[0010]在一种可能的实现方式中,事务日志包括至少一个日志存储策略,保存所述事务日志,包括:基于预先设定的日志存储策略保存事务日志。
[0011]在一种可能的实现方式中,至少一个日志存储策略包括第一存储策略及第二存储策略,保存所述事务日志,包括:若选择第一存储策略保存事务日志,将事务日志保存至指定的远端存储系统中;或者若选择第二存储策略保存事务日志,将事务日志保存至上一次检查成功的快照标记信息中。
[0012]通过采用该技术方案,可实现将事务日志保存至远端存储系统中或者保存至上一次检查成功的快照标记信息中,便于Flink任务重启时读取所保存的事务日志,实现依据事务日志重试写入上次失败的数据至存储系统。
[0013]在一种可能的实现方式中,快照标记信息具有唯一的身份标识(Identity Document,ID),事务日志还保存有对应的快照标记信息的ID。
[0014]通过采用该技术方案,可以将快照标记信息的ID保存至事务日志,便于在进行Flink任务重试时,可以根据当前检查点ID及事务日志中保存的检查点ID确定数据写入至下游存储系统时是否需要进行数据回滚。
[0015]在一种可能的实现方式中,基于事务日志,重试将两个快照标记信息之间的第二数据写入至存储系统,包括:基于事务日志恢复得到两个快照标记信息之间的第二数据;将恢复得到的两个快照标记信息之间的第二数据写入至存储系统。
[0016]通过采用该技术方案,可实现依据事务日志重试将两个快照标记信息之间的第二数据写入至存储系统。
[0017]在一种可能的实现方式中,基于事务日志,重试将两个快照标记信息之间的第二数据写入至存储系统,包括:基于事务日志恢复得到两个快照标记信息之间的第二数据;从恢复得到的第二数据中滤除上一次成功写入至存储系统的数据,并将过滤后的数据写入至存储系统。
[0018]通过采用该技术方案,可实现依据事务日志重试将两个快照标记信息之间的第二数据写入至存储系统。
[0019]第二方面,本申请实施例提供一种保障数据一致性的处理装置,包括:数据源算子,用于从数据源读取第一数据,其中第一数据每间隔预设时间添加有快照标记信息;处理算子,用于对第一数据进行处理,得到第二数据;输出算子,用于将第二数据写入至存储系统;其中,输出算子还用于记录两个快照标记信息之间的第二数据的事务日志,及在检测到两个快照标记信息之间的第二数据出现写入异常时,保存事务日志。
[0020]通过采用该技术方案,基于记录两个快照标记信息之间数据写入的事务日志来实现保障从上游数据源到下游存储系统的数据一致性,且不依赖下游存储系统是否支持事务,均可保障从上游数据端到下游存储端的数据一致性。
[0021]在一种可能的实现方式中,输出算子还用于在未检测到两个快照标记信息之间的第二数据出现写入异常时,删除事务日志。
[0022]通过采用该技术方案,事务日志的保存只在数据写入异常发生时记录到快照标记信息或者远程存储系统中,对系统的存储空间及IO消耗较低。
[0023]在一种可能的实现方式中,快照标记信息具有唯一的ID,事务日本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种保障数据一致性的处理方法,其特征在于,包括:从数据源读取第一数据,其中所述第一数据每间隔预设时间添加有快照标记信息;对所述第一数据进行处理,得到第二数据,并将所述第二数据写入至存储系统;记录两个快照标记信息之间的第二数据的事务日志;若检测到所述两个快照标记信息之间的第二数据出现写入异常,保存所述事务日志,以及基于所述事务日志,重试将所述两个快照标记信息之间的第二数据写入至所述存储系统。2.如权利要求1所述的保障数据一致性的处理方法,其特征在于,所述处理方法还包括:若未检测到所述两个快照标记信息之间的第二数据出现写入异常,删除所述事务日志。3.如权利要求1或2所述的保障数据一致性的处理方法,其特征在于,所述事务日志包括第一存储策略及第二存储策略,所述保存所述事务日志,包括:若选择所述第一存储策略保存所述事务日志,将所述事务日志保存至指定的远端存储系统中;或者若选择所述第二存储策略保存所述事务日志,将所述事务日志保存至上一次检查成功的快照标记信息中。4.如权利要求3所述的保障数据一致性的处理方法,其特征在于,所述快照标记信息具有唯一的身份标识(Identity Document,ID),所述事务日志还保存有对应的快照标记信息的ID。5.如权利要求1至4中任意一项所述的保障数据一致性的处理方法,其特征在于,所述基于所述事务日志,重试将所述两个快照标记信息之间的第二数据写入至所述存储系统,包括:基于所述事务日志恢复得到所述两个快照标记信息之间的第二数据;将恢复得到的所述两个快照标记信息之间的第二数据写入至所述存储系统。6.如权利要求1至4中任意一项所述的保障数据一致性的处理方法,其特征在于,所述基于所述事务日志,重试将所述两个快照标记信息之间的第二数据写入至所述存储系统,包括:基于所述事务日志恢复得到所述两个快照标记信息之间的第二数据;从恢复得到的第二数据中滤除上一次成功写入至所述存储系统的数据,并将过滤后的数据写入至所述存储系统。7.一种保障数据一致性的处理装置,其特征在于,包括:数据源算子,用于从数据源读取第一数据,其中所述第一数据每间隔预设时间添加有快照标记信息;处理算子,用于对所述第一数据进行处理,得到第二数据;输出算子,用于将所述第二数据写入至存储系统;其中,所述输出算子还用于记录两个快照标记信息之间的第二数据的事务日志,及在检测到所述两个快照标记信息之间的第二...
【专利技术属性】
技术研发人员:许相坤,
申请(专利权)人:花瓣云科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。