数据同步方法、装置、电子设备和存储介质
文献发布时间:2023-06-19 10:32:14
技术领域
本申请涉及数据处理技术领域,尤其涉及一种数据同步方法、装置、电子设备和存储介质。
背景技术
应用程序的不断发展,越来越多类型的APP应运而生,如视频APP、音乐APP、电子书APP等,人们在使用APP时,除了观看APP中视频、小说等相应的内容外,还会查看网友评论、参与评论、点赞、转发等操作,以参与社交互动。
而点赞、评论和转发等作为用户参与社交互动的重要表现形式,用户在执行相应操作后,会将评论内容、点赞和转发的操作发送至中台。由于中台对于迭代快、个性化强的功能支持上存在一定的困难,因此,需要后端从中台接入新增消息和历史消息,通过后端对消息进行处理,以进行个性化展示等。
相关技术中,后端在处理新增消息和历史消息时,往往在获取到消息后,直接在消息处理队列内对消息进行处理,由于新增消息和历史消息数量较多,当一个消息任务处理失败或卡顿时,将会影响后续消息的处理。
发明内容
本申请提供了一种数据同步方法、装置、电子设备和存储介质,用以解决现有技术中,后端在处理新增消息和历史消息时,往往在获取到消息后,直接在消息处理队列内对消息进行处理,由于新增消息和历史消息数量较多,使用一个消息处理队列处理效率较低,并且,在一个消息任务处理失败或卡顿时,将会影响后续消息的处理的问题。
第一方面,本申请实施例提供了一种数据同步方法,包括:
获取待同步的实时消息;
将所述实时消息发送至实时消息队列,以通过所述实时消息队列对所述实时消息进行同步处理;
检测所述实时消息队列中是否存在消息同步异常;
若是,将所述实时消息发送至消息重试队列,以通过所述消息重试队列对所述实时消息进行同步处理。
可选的,所述将所述实时消息发送至实时消息队列之前,还包括:
获取所述实时消息的基本信息;
若所述基本信息满足预设的信息条件,将所述实时消息发送至与所述预设的信息条件对应的目标消息队列。
可选的,所述基本信息包括所述消息的处理时长,所述若所述基本信息满足预设的信息条件,将所述实时消息发送至与所述预设的信息条件对应的目标消息队列,包括:
判断所述基本信息中消息处理时长是否大于第一预设时长;
若是,将所述消息重试队列中的长作业重试队列作为所述目标消息队列。
可选的,所述基本信息包括消息个性化处理信息,所述若所述基本信息满足预设的信息条件,将所述实时消息发送至与所述预设的信息条件对应的目标消息队列,包括:
判断所述基本信息中是否包括消息个性化处理信息;
若是,将所述消息重试队列中的个性化重试队列作为所述目标消息队列。
可选的,所述基本信息包括所述实时消息的优先级,所述若所述基本信息满足预设的信息条件,将所述实时消息发送至与所述预设的信息条件对应的目标消息队列,包括:
判断所述实时消息的优先级是否达到预设优先级;
若是,将所述述消息重试队列中的高优重试队列作为所述目标消息队列。
可选的,所述将所述实时消息发送至消息重试队列,以通过所述消息重试队列对所述实时消息进行同步处理之后,还包括:
判断所述消息同步异常是否由调用的第三方服务故障导致;
若不是由调用的第三方服务故障导致,判断所述消息同步异常是否脏数据混入导致,若是由脏数据混入导致,通过日志或离线文件的方式保留所述脏数据的原始消息;
若是由调用的第三方服务故障导致,判断所述第三方服务是否在第二预设时长内解决所述故障,若不能在第二预设时长内解决所述故障,将所述消息重试队列中的实时消息导出,得到离线消息。
可选的,所述将所述消息重试队列中的实时消息导出,得到离线消息之后,还包括:
将所述离线消息发送至离线队列,以通过所述离线队列对所述离线消息进行同步处理。
可选的,所述将所述实时消息发送至消息重试队列,以通过所述消息重试队列对所述实时消息进行同步处理之后,还包括:
统计所述消息重试队列内的实时消息的数量;
若所述数量大于预设数量,触发报警机制并发送报警信息。
可选的,还包括:
获取中台侧未进行消息同步的消息数据;
将未同步的所述消息数据发送至离线队列,以通过所述离线队列对未同步的所述消息数据进行同步处理。
可选的,所述获取待同步的实时消息之后,还包括:
对所述实时消息进行筛选,以去除所述实时消息中的脏数据。
第二方面,本申请实施例提供了一种数据同步装置,包括:
获取模块,用于获取待同步的实时消息;
第一同步模块,用于将所述实时消息发送至实时消息队列,以通过所述实时消息队列对所述实时消息进行同步处理;
检测模块,用于检测所述实时消息队列中是否存在消息同步异常;
第二同步模块,用于在存在消息同步异常时,将所述实时消息发送至消息重试队列,以通过所述消息重试队列对所述实时消息进行同步处理。
可选的,还包括:
第一获取模块,用于获取所述实时消息的基本信息;
第三同步模块,用于若所述基本信息满足预设的信息条件,将所述实时消息发送至与所述预设的信息条件对应的目标消息队列。
可选的,所述基本信息包括所述消息的处理时长,所述第三同步模块,具体包括:
判断所述基本信息中消息处理时长是否大于第一预设时长;
若是,将所述消息重试队列中的长作业重试队列作为所述目标消息队列。
可选的,所述基本信息包括消息个性化处理信息,所述第三同步模块,具体包括:
判断所述基本信息中是否包括消息个性化处理信息;
若是,将所述消息重试队列中的个性化重试队列作为所述目标消息队列。
可选的,所述基本信息包括所述实时消息的优先级,所述第三同步模块,具体包括:
判断所述实时消息的优先级是否达到预设优先级;
若是,将所述述消息重试队列中的高优重试队列作为所述目标消息队列。
可选的,还包括:
判断模块,用于判断所述消息同步异常是否由调用的第三方服务故障导致;
第一判断子模块,用于若不是由调用的第三方服务故障导致,判断所述消息同步异常是否脏数据混入导致,若是由脏数据混入导致,通过日志或离线文件的方式保留所述脏数据的原始消息;
第二判断子模块,用于若是由调用的第三方服务故障导致,判断所述第三方服务是否在第二预设时长内解决所述故障,若不能在第二预设时长内解决所述故障,将所述消息重试队列中的实时消息导出,得到离线消息。
可选的,所述第二判断子模块,还用于:
将所述离线消息发送至离线队列,以通过所述离线队列对所述离线消息进行同步处理。
可选的,还包括:
统计模块,用于统计所述消息重试队列内的实时消息的数量;
报警模块,用于若所述数量大于预设数量,触发报警机制并发送报警信息。
可选的,还包括:
第二获取模块,用于获取中台侧未进行消息同步的消息数据;
第四同步模块,用于将未同步的所述消息数据发送至离线队列,以通过所述离线队列对未同步的所述消息数据进行同步处理。
可选的,还包括:
筛选模块,用于对所述实时消息进行筛选,以去除所述实时消息中的脏数据。
第三方面,本申请实施例提供了一种电子设备,包括:处理器、通信接口、存储器和通信总线,其中,处理器、通信接口和存储器通过通信总线完成相互间的通信;
所述存储器,用于存储计算机程序;
所述处理器,用于执行所述存储器中所存储的程序,实现第一方面所述的数据同步方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现第一方面所述的数据同步方法。
本申请实施例提供的上述技术方案与现有技术相比具有如下优点:本申请实施例提供的该方法,获取待同步的实时消息;将实时消息发送至实时消息队列,以通过实时消息队列对实时消息进行同步处理;检测实时消息队列中是否存在消息同步异常;若是,将实时消息发送至消息重试队列,以通过消息重试队列对实时消息进行同步处理。如此,通过后端的实时消息队列对中台的实时消息进行实时同步处理,保证了实时消息的实时更新与同步,并且,在实时消息队列同步异常时,将异常的实时消息发送至消息重试队列,通过消息重试队列对处理异常的消息进行同步处理,从而避免了所有实时消息都在实时消息队列内进行数据同步处理的方式,在一个待同步的实时消息同步异常,将其在消息重试队列内进行处理,不会影响后续的实时消息的同步处理,提高了实时消息处理效率。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请一实施例提供的数据同步方法的流程图;
图2为本申请另一实施例提供的数据同步方法的流程图;
图3为本申请另一实施例提供的数据同步方法的流程图;
图4为本申请一实施例提供的数据同步装置的结构图;
图5为本申请一实施例提供的电子设备的结构图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请一实施例中提供了一种数据同步方法,该方法可以应用于任意一种形式的电子设备中,如终端和服务器中。如图1所示,该数据同步方法,包括:
步骤101、获取待同步的实时消息。
一些实施例中,实时消息从预设中台处实时获取的。其中,预设中台为与后端预先通信连接的中台,中台基于其所提供的功能命名为评论中台、点赞中台或者转发中台等。
用户在终端执行了评论、转发或点赞后,将会评论内容、点赞和转发的操作作为实时消息发送至中台,由于中台对于迭代快、个性化强的实时消息的处理上,存在一定的困难,因此,中台将该实时消息发送至后端,以使后端获取待同步的实时消息。
进一步的,在获取待同步的实时消息之后,对实时消息进行筛选,以去除实时消息中的脏数据。
通过对实时消息进行筛选,可以有效的将实时消息中的脏数据滤除,避免异常数据产生程序问题,提高消息同步效率。
其中,在中台不同时,判断脏数据的方式也不同,例如,在评论这一功能场景中,中台为评论中台时,脏数据可以但不限于包括评论发布消息无评论人、无评论内容;在转发这一功能场景中,中台为转发中台时,脏数据可以但不限于包括无转发人。正如上面所述,实际执行过程中,中台不仅限于上述两种场景,脏数据也不仅限上述两种场景。本申请中将只要跟期待的数据不一样、且会影响系统正常行为的数据均统称为脏数据。
步骤102、将实时消息发送至实时消息队列,以通过实时消息队列对实时消息进行同步处理。
进一步的,将实时消息发送至实时消息队列之前,还包括:
获取实时消息的基本信息;若基本信息满足预设的信息条件,将实时消息发送至与预设的信息条件对应的目标消息队列。
一些实施例中,实时消息的基本信息可以但不限于包括该实时消息的消息处理时间、优先级及个性化处理信息。
以下实施例中,根据基本信息不同时,基本信息满足预设的信息条件,将实时消息发送至与预设的信息条件对应的目标消息队列,进行具体说明。
第一种,基本信息为消息的处理时长,若基本信息满足预设的信息条件,将实时消息发送至与预设的信息条件对应的目标消息队列,包括:
判断基本信息中消息处理时长是否大于第一预设时长;若是,将消息重试队列中的长作业重试队列作为目标消息队列。
一些实施例中,实时消息中可能存在大量短作业消息混杂长作业消息的情况,长作业消息耗时久,会影响后续的短作业消息的及时处理,同时长时间未返回处理结果,会触发消息重试机制,再一次地影响整体处理效率。
因此,通过先判断实时消息的消息处理时长,是否大于第一预设时长,在确定实时消息为长作业消息后,可以不处理该实时消息,将其发送至长作业重试队列中,以通过长作业重试队列同步该实时消息。如此,可以明显提高处理效率,并且避免长作业消息的重复消费带来的资源浪费。
其中,长作业消息可以但不限于为群发消息,群发消息可能涉及千万级用户,处理时间较长,将其发送到长作业重试队列中处理,从而不影响单发消息的短作业的处理。
第二种,基本信息包括消息个性化处理信息,若基本信息满足预设的信息条件,将实时消息发送至与预设的信息条件对应的目标消息队列,包括:
判断基本信息中是否包括消息个性化处理信息;若是,将消息重试队列中的个性化重试队列作为目标消息队列。
一些实施例中,个性化处理消息可以但不限于为评论点赞消息需要处理的点赞数和点赞状态,在实时消息中包括个性化处理消息后,可以将其发送至个性化重试队列,将个性化处理消息与实时消息异步进行,提高同步效率。
而对于一些命中特定规则的数据在消费成功后,需要做进一步处理,其差异化处理过程也可以通过重试队列的形式实现,这样既避免了大量个性化处理消息放在一个监听器(listener)中造成的逻辑混乱,也避免后续处理过程失败重新处理带来的资源浪费和效率影响。
其中,在中台为评论中台时,评论新增消息可以包括评论发布消息、评论删除消息、评论点赞消息等,如果是评论发布/删除消息会引起评论数的变化,评论点赞消息会引起该评论点赞数和点赞状态的变化。命中特征规则的数据可以为评论数、点赞数、点赞状态,此类数据的处理可以在重试队列中实现。可以理解的是,区分发布消息、评论删除消息、评论点赞消息可以通过消息的字段区分。在中台为转发中台时,转发新增消息可以为转发内容消息、转发删除消息等,其中,转发删除消息会引起转发数的变化。
第三种,基本信息包括实时消息的优先级,若基本信息满足预设的信息条件,将实时消息发送至与预设的信息条件对应的目标消息队列,包括:
判断实时消息的优先级是否达到预设优先级;若是,将述消息重试队列中的高优重试队列作为目标消息队列。
一些实施例中,对于一些实时消息,在同步处理的过程中,经常会调用第三方服务进行数据筛选、逻辑处理和数据入库。若同步异常,可能是由于第三方服务异常而未及时同步导致的,后续会将其保存在离线数据库中,再次对该类实时消息同步时,可能需要对该类实时消息进行优先同步处理。在此类实时消息中,用户将其优先级预先定义,在对其进行同步时,便可以根据其优先级将其发送至高优队列,以通过高优队列同步该实时消息。
可以理解的是,实时消息若包括上述两个以上的基本信息,可以以高优队列、长作业重试队列、实时队列、离线队列、异常重试队列、个性化重试队列的次序,将实时消息发送至相应的目标消息队列。
步骤103、检测实时消息队列中是否存在消息同步异常,若存在,执行步骤104,若不存在,执行步骤101。
一些实施例中,在实时消息队列对实时消息进行同步处理的过程中,可能会出现处理异常的情况,在出现异常时,需要及时发现并进行相应的处理,以保证后续实时消息的同步处理。
其中,消息同步异常的原因有多种,例如可以是第三方服务器调用异常。
步骤104、将实时消息发送至消息重试队列,以通过消息重试队列对实时消息进行同步处理。
一些实施例中,通过设置消息重试队列,对消息同步异常的实时消息进行处理,保证了该实时消息后续的消息的及时同步,提高了消息的同步效率。
本申请中,通过后端的实时消息队列对中台的实时消息进行实时同步处理,保证了实时消息的实时更新与同步,并且,在实时消息队列同步异常时,将异常的实时消息发送至消息重试队列,通过消息重试队列对处理异常的消息进行同步处理,从而避免了所有实时消息都在实时消息队列内进行数据同步处理的方式,在一个待同步的实时消息同步异常,将其在消息重试队列内进行处理,不会影响后续的实时消息的同步处理,提高了实时消息处理效率。
进一步的,将实时消息发送至消息重试队列,以通过消息重试队列对实时消息进行同步处理之后,还包括:
步骤201、判断同步异常是否由调用的第三方服务故障导致,若否,执行步骤202,若是,执行步骤204。
一些实施例中,实时消息的同步处理过程,若同步成功,则该实时消息不会进入重试队列,开始消费下一条;如果同步异常,则会将该实时消息发送到异常重试队列,消费异常通常往往是两种情况导致,一是由于调用第三方服务过程中异常导致,而是脏数据混入导致。
步骤202、判断同步异常是否脏数据混入导致。若是,执行步骤203。
步骤203、通过日志或离线文件的方式保留脏数据的原始消息。
一些实施例中,在确定同步异常是由脏数据导致后,可以通过日志或离线文件的方式将脏数据的原始消息保留,以做问题追踪。
步骤204、判断第三方服务是否在第二预设时长内解决故障,若否,执行步骤205。
一些实施例中,在确定同步异常是由第三方服务调用故障导致后,可以先判断第三方服务是否能够在第二预设时长内解决故障,若能够解决该故障,可以将同步异常的实时消息发送至异常重试队列,以完成同步。
步骤205、将实时获取的实时消息导出,得到离线消息。
一些实施例中,在第三方服务不能在第二时长内解决故障时,可以先将实时获取的实时消息导出,将导出的离线消息发送至离线队列以完成同步。
其中,第三方服务故障包括某个存储出问题、无法正常存储,在第三方服务不能在短时间内恢复,由于新增的实时消息还在源源不断产生,为了防止消息堆积过多(或方式出现丢消息的情况),则将实时消息通过本地文件的方式保存,等第三方服务恢复后再处理。
可以理解的是,可以利用rocketMQ支持海量数据积压的特性,将实时消息导出为离线消息。rocketMQ自身实现了亿级别的消息消费不及时的积压问题,这样一旦第三方服务短时间不能修复,则可以不消费新增消息,让新增消息积压,等到第三方服务修复,再继续消费积压的消息。
更进一步的,将消息重试队列中的实时消息导出,得到离线消息之后,将离线消息发送至离线队列,以通过离线队列对离线消息进行同步处理。
一些实施例中,在得到离线消息后,对于离线消息也需要进行同步处理,将离线消息发送至离线队列,通过离线队列对离线消息进行同步处理,保证了中台的消息可以全被后端获取并同步处理,
进一步的,将实时消息发送至消息重试队列,以通过消息重试队列对实时消息进行同步处理之后,统计消息重试队列内的实时消息的数量;若数量大于预设数量,触发报警机制并发送报警信息。
一些实施例中,重试队列在有大量实时消息进入时,会触发其报警机制,通过报警的方式可以使得开发人员及时发现问题。可以理解的是,重试队列短时间内有大量消息进入,可能是由第三方服务异常导致的,此时,可以报警提醒相关人员处理异常。
进一步的,该数据同步方法还包括:
获取中台侧未进行消息同步的消息数据;将未同步的所述消息数据发送至离线队列,以通过所述离线队列对未同步的所述消息数据进行同步处理。
一些实施例中,预先连接的中台中不仅包括实时消息,还包括未及时处理的消息数据。本实施例中,通过获取预先连接的中台中未同步的消息数据,并将消息数据通过离线队列进行同步处理,保证了中台侧所有消息都能够被同步,使得同步的消息更加完整。
具体的,评论中台中存储有用户的评论新增数据和历史数据,在从评论中台获取离线消息时,只需要将未同步的消息获取即可。因此,可以通过将将中台侧的第一消息数据和后台侧数据库中的第二消息数据进行比对,确定第一消息数据中与第二消息数据不同的第三消息数据,将第三消息数据作为未同步的消息数据,进行获取即可。
其中,第一消息数据是中台侧存储的其接收到的消息,第二消息数据是后台侧存储的其从中台侧获取并同步过的消息。
可以理解的是,上述的实时消息队列、离线队列、消息重试队列和高优重试队列可以是在接收到实时消息或离线消息时,实时创建相应的处理队列;或者,每个第三方服务对应一个相应的处理队列;或者,根据消息格式的不同创建相应的处理队列。例如,可以评论中台的所有实时消息使用一个队列;也可以只针对评论中台的新增实时消息使用一个消息队列,评论中台的其他消息使用另一个消息队列。
可以理解的是,对于实时消息和离线消息,在二者消息格式相同时,可以采用相同的消息重试队列和高优重试队列。
本申请中,针对实时消息,创建了实时消息队列,通过实时消息队列对实时消息进行同步处理,保证了实时消息的实时处理。另外,在实时消息队列基础上创新地引入了消息重试队列,针对正常消息处理异常、消息差异化处理、异常数据处理等处理场景提出创新,对不同的处理场景提供相应的重试队列(例如,在实时消息处理异常时,将其发送至异常重试队列,保证了后续实时消息的及时处理;在实时消息处理时长超过预设时长时,将其发送至长作业重试队列,避免长时间处理该长作业,导致后续消息不能及时处理的情况;在实时消息中存在个性化处理信息时,将其发送至个性化重试队列,将个性化处理消息与实时消息异步进行,提高同步效率),完善了解决方案,保证了实时消息稳定性、准确性、灵活性和效率,同时从代码层面具有可复用性强、代码修改少、代码可阅读性强等优点。进一步的,针对离线消息,离线队列用作历史数据同步,也可以配合重试队列保证新增数据不被丢失,保证系统架构的鲁棒性。另外,创新地引入了高优队列,在应对紧急需求时可以快速准确、响应。
本申请另一实施例中提供了一种数据同步方法,参照图3,该方法可以应用于后端侧,且该后端侧与中台侧通信连接。该数据同步方法,包括:
步骤301、从中台侧获取待同步的实时消息;
步骤302、对待同步的实时消息进行筛选,以去除实时消息中的脏数据。
步骤303、将实时消息发送至实时消息队列,以通过实时消息队列对实时消息进行同步处理。
步骤304、判断所述实时消息是否消费成功,若成功,执行步骤305,若未成功,执行步骤306。在评论这一场景中,消费成功表示对该实时消息进行逻辑处理和数据入库成功。
其中,在实时消息未消费成功后,还会统计消费失败的实时消息的数量,若有大量消费失败的实时消息,则触发报警。
步骤305、判断是否处理完成,若是,执行步骤307,若否,执行步骤306。其中,在处理完成后,实时消息若需要进行个性化处理,可以通过重试通道完成;还可以处理长作业等,根据不同的需求定制多个通道。
步骤306、将实时消息发送至重试通道,以通过重试通道对消息进行同步处理。
步骤307、消息同步完成。
步骤308、判断重试通道内的实时消息是否消费成功,若是,执行步骤307,若否,重新消费,并再次执行步骤308。
步骤309、判断重试次数是否超过阈值,若是,执行步骤310.
步骤310、判断失败是否由第三方故障导致,若是,执行步骤311,若否,执行步骤312。
步骤311、将消费失败的消息利用离线文件存储,并利用离线通道导入。
步骤312、确定该实时消息为脏数据,将该实时消息抛弃或作为文件保留,以用作问题分析。
步骤313、将离线文件通过hive表数据比对得到历史数据。
步骤314、判断历史数据的优先级,若优先级高,发送至高优通道,以通过高优通道对历史数据进行同步处理,若优先级不高,发送至离线通道,以通过离线通道对历史数据进行同步处理。
基于同一构思,本申请实施例中提供了一种数据同步装置,该装置的具体实施可参见方法实施例部分的描述,重复之处不再赘述,如图4所示,该装置主要包括:
获取模块401,用于获取模块,用于获取待同步的实时消息;
第一同步模块402,用于将实时消息发送至实时消息队列,以通过实时消息队列对实时消息进行同步处理;
检测模块403,用于检测实时消息队列中是否存在消息同步异常;
第二同步模块404,用于在存在消息同步异常时,将实时消息发送至消息重试队列,以通过消息重试队列对实时消息进行同步处理。
可选的,还包括:
第一获取模块,用于获取所述实时消息的基本信息;
第三同步模块,用于若所述基本信息满足预设的信息条件,将所述实时消息发送至与所述预设的信息条件对应的目标消息队列。
可选的,所述基本信息包括所述消息的处理时长,所述第三同步模块,具体包括:
判断所述基本信息中消息处理时长是否大于第一预设时长;
若是,将所述消息重试队列中的长作业重试队列作为所述目标消息队列。
可选的,所述基本信息包括消息个性化处理信息,所述第三同步模块,具体包括:
判断所述基本信息中是否包括消息个性化处理信息;
若是,将所述消息重试队列中的个性化重试队列作为所述目标消息队列。
可选的,所述基本信息包括所述实时消息的优先级,所述第三同步模块,具体包括:
判断所述实时消息的优先级是否达到预设优先级;
若是,将所述述消息重试队列中的高优重试队列作为所述目标消息队列。
可选的,还包括:
判断模块,用于判断所述消息同步异常是否由调用的第三方服务故障导致;
第一判断子模块,用于若不是由调用的第三方服务故障导致,判断所述消息同步异常是否脏数据混入导致,若是由脏数据混入导致,通过日志或离线文件的方式保留所述脏数据的原始消息;
第二判断子模块,用于若是由调用的第三方服务故障导致,判断所述第三方服务是否在第二预设时长内解决所述故障,若不能在第二预设时长内解决所述故障,将所述消息重试队列中的实时消息导出,得到离线消息。
可选的,所述第二判断子模块,还用于:
将所述离线消息发送至离线队列,以通过所述离线队列对所述离线消息进行同步处理。
可选的,还包括:
统计模块,用于统计所述消息重试队列内的实时消息的数量;
报警模块,用于若所述数量大于预设数量,触发报警机制并发送报警信息。
可选的,还包括:
第二获取模块,用于获取中台侧未进行消息同步的消息数据;
第四同步模块,用于将未同步的所述消息数据发送至离线队列,以通过所述离线队列对未同步的所述消息数据进行同步处理。
可选的,还包括:
筛选模块,用于对所述实时消息进行筛选,以去除所述实时消息中的脏数据。
基于同一构思,本申请实施例中提供了一种电子设备,如图5所示,该电子设备主要包括:处理器501、通信接口502、存储器503和通信总线504,其中,处理器501、通信接口502和存储器503通过通信总线504完成相互间的通信。其中,存储器503中存储有可被至处理器501执行的程序,处理器501执行存储器503中存储的程序,实现如下步骤:
获取待同步的实时消息;
将实时消息发送至实时消息队列,以通过实时消息队列对实时消息进行同步处理;
检测实时消息队列中是否存在消息同步异常;
若是,将实时消息发送至消息重试队列,以通过消息重试队列对实时消息进行同步处理。
上述电子设备中提到的通信总线504可以是外设部件互连标准(PeripheralComponent Interconnect,简称PCI)总线或扩展工业标准结构(Extended IndustryStandard Architecture,简称EISA)总线等。该通信总线504可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口502用于上述电子设备与其他设备之间的通信。
存储器503可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选地,存储器还可以是至少一个位于远离前述处理器501的存储装置。
上述的处理器501可以是通用处理器,包括中央处理器(Central ProcessingUnit,简称CPU)、网络处理器(Network Processor,简称NP)等,还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本申请的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,当该计算机程序在计算机上运行时,使得计算机执行上述实施例中所描述的数据同步方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机指令时,全部或部分地产生按照本申请实施例所述的流程或功能。该计算机可以时通用计算机、专用计算机、计算机网络或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、微波等)方式向另外一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质(例如软盘、硬盘、磁带等)、光介质(例如DVD)或者半导体介质(例如固态硬盘)等。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
- 数据同步方法、数据同步装置、电子设备及存储介质
- B1C信号数据与导频同步方法、装置、电子设备和可读存储介质