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

日志同步方法、设备及计算机可读存储介质

文献发布时间:2023-06-19 11:45:49


日志同步方法、设备及计算机可读存储介质

技术领域

本发明涉及金融科技(Fintech)技术领域,尤其涉及日志同步方法、设备及计算机可读存储介质。

背景技术

随着计算机技术的发展,越来越多的技术(大数据、分布式、区块链Blockchain、人工智能等)应用在金融领域,传统金融业正在逐步向金融科技(Fintech)转变,但由于金融行业的安全性、实时性要求,也对自动化测试技术提出了更高的要求。在自动化测试领域,每天的持续回归自动化测试会产生大量的自动化测试日志,这些自动化测试日志是由自动化测试平台生成并入源数据存储源中。由于自动化测试日志需要快速检索和数据分析,所以需要将源数据存储源的日志数据同步至目标数据存储源中。

在现有的日志同步方案中,无论是在何时进行同步操作,都是基于同一张表所实现的。该表中记录有日志同步更新的种种相关信息,通过每次在表中更新相应数据,从而完成日志数据的更新。然而,在上述同步方案中,每次同步更新都需要人工进行同步操作或是修改相应配置,从而存在自动化测试领域中日志数据同步操作的智能性低下的技术问题。

发明内容

本发明的主要目的在于提出一种日志同步方法、设备及计算机可读存储介质,旨在解决自动化测试领域中日志数据同步操作的智能性低下的技术问题。

为实现上述目的,本发明提供一种日志同步方法,所述日志同步方法包括:

识别同步类型为日期分表类型的日志同步触发事件,其中,所述日期分表类型为基于日志数据的所属日期确定日志同步任务的同步类型;

根据所述日志同步触发事件,创建并执行与所述日志同步触发事件的目标所属日期对应的目标日志同步任务,以将所述目标日志同步任务中的待同步日志数据同步至目标数据源。

可选地,所述目标日志同步任务包括当天日志同步任务和/或跨天日志同步任务,

所述根据所述日志同步触发事件,创建并执行与所述日志同步触发事件的目标所属日期对应的目标日志同步任务,以将所述目标日志同步任务中的待同步日志数据同步至目标数据源的步骤包括:

根据所述日志同步触发事件确定预配置的同步元数据,并获取当天测试日志数据和/或跨天测试日志数据,其中,所述跨天测试日志数据为时间跨度为多天的日志数据;

基于所述同步元数据与当天测试日志数据,和/或跨天测试日志数据,创建与所述目标所属日期对应的当天日志同步任务和/或跨天日志同步任务;

执行所述当天日志同步任务和/或跨天日志同步任务,以将所述当天日志同步任务和/或跨天日志同步任务中的待同步日志数据同步至所述目标数据源。

可选地,所述基于所述同步元数据与当天测试日志数据,和/或跨天测试日志数据,创建与所述目标所属日期对应的当天日志同步任务和/或跨天日志同步任务的步骤包括:

根据所述同步元数据获取数据表前缀,并对所述目标所属日期进行格式化以得到内置变量;

基于所述当天测试日志数据、所述数据表前缀和所述内置变量生成当天日志同步数据表,以创建所述当天日志同步任务;和/或,

根据所述同步元数据遍历所述目标所属日期之前的历史日志同步记录队列,从所述历史日志同步记录队列中获取同步日期分表和最新同步跟踪列值;

基于所述跨天测试日志数据、所述同步日期分表和所述最新同步跟踪列值创建所述跨天日志同步任务。

可选地,所述识别同步类型为日期分表类型的日志同步触发事件的步骤之前,还包括:

接收基于用户发送的首次配置信息,其中,所述首次配置信息包括首次源数据源配置信息、首次目标数据源配置信息和首次同步任务配置信息;

基于所述首次配置信息进行同步元数据的初始化配置,以在下次日志同步任务中复用已配置的同步元数据。

可选地,所述执行所述当天日志同步任务和/或跨天日志同步任务,以将所述当天日志同步任务和/或跨天日志同步任务中的待同步日志数据同步至所述目标数据源的步骤包括:

以所述当天日志同步任务和/或跨天日志同步任务为目标,获取第一分布式锁和/或第二分布式锁;

按照数据切片方式对所述当天测试日志数据和/或跨天测试日志数据进行数据切分,以分次将所述当天测试日志数据和/或跨天测试日志数据推送至所述目标数据源;

在检测到所述当天测试日志数据和/或跨天测试日志数据推送完毕时,释放所述第一分布式锁和/或第二分布式锁。

可选地,所述在检测到所述当天测试日志数据和/或跨天测试日志数据推送完毕时,释放所述第一分布式锁和/或第二分布式锁的步骤之后,还包括:

遍历由所述当天测试日志数据和/或跨天测试日志数据推送完毕后所得到的同步成功记录表,以获取所述同步成功记录表中最后一次同步成功的跟踪列值;

根据所述同步元数据中的源数据表和目标数据表分别获取源跟踪列值与目标跟踪列值,并判断所述源跟踪列值与目标跟踪列值是否均大于所述最后一次同步成功的跟踪列值;

若是,则同步更新所述目标数据源中的日志数据,以完成对所述当天日志同步任务和/或跨天日志同步任务的核对。

可选地,所述识别同步类型为日期分表类型的日志同步触发事件的步骤包括:

在检测到存在同步任务配置的新增节点信息时,根据所述新增节点信息确定所述日志同步触发事件,其中,所述日志同步触发事件的触发条件包括人为触发和/或基于预设规则自动触发;

获取所述日志同步触发事件的同步类型字段,对所述同步类型字段进行识别,以确定所述日志同步触发事件的同步类型为日期分表类型。

可选地,所述根据所述日志同步触发事件,创建并执行与所述日志同步触发事件的目标所属日期对应的目标日志同步任务的步骤之后,还包括:

在检测到存在日志数据同步失败时,获取同步失败的日志数据;

将同步失败的日志数据推送至对应日期的重试数据同步队列,以依次将所述重试数据同步队列中的日志数据重新同步至所述目标数据源。

此外,为实现上述目的,本发明还提供一种日志同步装置,所述日志同步装置包括:

同步触发识别模块,用于识别同步类型为日期分表类型的日志同步触发事件,其中,所述日期分表类型为基于日志数据的所属日期确定日志同步任务的同步类型;

同步任务执行模块,用于根据所述日志同步触发事件,创建并执行与所述日志同步触发事件的目标所属日期对应的目标日志同步任务,以将所述目标日志同步任务中的待同步日志数据同步至目标数据源。

可选地,所述目标日志同步任务包括当天日志同步任务和/或跨天日志同步任务,所述同步任务执行模块包括:

日志数据获取单元,用于根据所述日志同步触发事件确定预配置的同步元数据,并获取当天测试日志数据和/或跨天测试日志数据,其中,所述跨天测试日志数据为时间跨度为多天的日志数据;

同步任务创建单元,用于基于所述同步元数据与当天测试日志数据,和/或跨天测试日志数据,创建与所述目标所属日期对应的当天日志同步任务和/或跨天日志同步任务;

同步任务执行单元,用于执行所述当天日志同步任务和/或跨天日志同步任务,以将所述当天日志同步任务和/或跨天日志同步任务中的待同步日志数据同步至所述目标数据源。

可选地,所述同步任务创建单元还用于:

根据所述同步元数据获取数据表前缀,并对所述目标所属日期进行格式化以得到内置变量;

基于所述当天测试日志数据、所述数据表前缀和所述内置变量生成当天日志同步数据表,以创建所述当天日志同步任务;和/或,

根据所述同步元数据遍历所述目标所属日期之前的历史日志同步记录队列,从所述历史日志同步记录队列中获取同步日期分表和最新同步跟踪列值;

基于所述跨天测试日志数据、所述同步日期分表和所述最新同步跟踪列值创建所述跨天日志同步任务。

可选地,所述日志同步装置还包括:

配置信息接收模块,用于接收基于用户发送的首次配置信息,其中,所述首次配置信息包括首次源数据源配置信息、首次目标数据源配置信息和首次同步任务配置信息;

同步数据配置模块,用于基于所述首次配置信息进行同步元数据的初始化配置,以在下次日志同步任务中复用已配置的同步元数据。

可选地,所述同步任务执行单元还用于:

以所述当天日志同步任务和/或跨天日志同步任务为目标,获取第一分布式锁和/或第二分布式锁;

按照数据切片方式对所述当天测试日志数据和/或跨天测试日志数据进行数据切分,以分次将所述当天测试日志数据和/或跨天测试日志数据推送至所述目标数据源;

在检测到所述当天测试日志数据和/或跨天测试日志数据推送完毕时,释放所述第一分布式锁和/或第二分布式锁。

可选地,所述同步任务执行单元还用于:

遍历由所述当天测试日志数据和/或跨天测试日志数据推送完毕后所得到的同步成功记录表,以获取所述同步成功记录表中最后一次同步成功的跟踪列值;

根据所述同步元数据中的源数据表和目标数据表分别获取源跟踪列值与目标跟踪列值,并判断所述源跟踪列值与目标跟踪列值是否均大于所述最后一次同步成功的跟踪列值;

若是,则同步更新所述目标数据源中的日志数据,以完成对所述当天日志同步任务和/或跨天日志同步任务的核对。

可选地,所述同步触发识别模块包括:

新增节点检测单元,用于在检测到存在同步任务配置的新增节点信息时,根据所述新增节点信息确定所述日志同步触发事件,其中,所述日志同步触发事件的触发条件包括人为触发和/或基于预设规则自动触发;

类型字段识别单元,用于获取所述日志同步触发事件的同步类型字段,对所述同步类型字段进行识别,以确定所述日志同步触发事件的同步类型为日期分表类型。

可选地,所述同步任务执行模块还包括:

同步失败检测单元,用于在检测到存在日志数据同步失败时,获取同步失败的日志数据;

失败数据重试单元,用于将同步失败的日志数据推送至对应日期的重试数据同步队列,以依次将所述重试数据同步队列中的日志数据重新同步至所述目标数据源。

此外,为实现上述目的,本发明还提供一种日志同步设备,所述日志同步设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的日志同步程序,所述日志同步程序被所述处理器执行时实现如上所述的日志同步方法的步骤。

此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有日志同步程序,所述日志同步程序被处理器执行时实现如上所述的日志同步方法的步骤。

本发明提供一种日志同步方法、设备及计算机可读存储介质。本发明通过在同步过程中引入日期划分的概念,将需要同步的日志数据按照所属日期进行批次划分,然后定义出与之相应的日期分表类型,以此类型来执行日志同步任务,使得能够在时间维度上实现日志数据的动态同步,从而提高了日志数据同步操作的智能性;通过自动对日志数据的同步操作触发事件进行识别,使得用户仅需进行触发操作,或甚至无需人工触发,系统可根据预设规则(例如根据日期更新自动触发)所自动触发的同步事件自动开始创建并执行相应的日志数据同步任务,省去了现有技术中日志同步过程所需的人为操作,从而进一步提高了日志数据同步操作的智能化水平,解决了自动化测试领域中日志数据同步操作的智能性低下的技术问题。

附图说明

图1是本发明实施例方案涉及的硬件运行环境的设备结构示意图;

图2为本发明日志同步方法第一实施例的流程示意图;

图3为本发明日志同步方法第二实施例中的跨天日志同步任务创建流程示意图;

图4为本发明日志同步方法第二实施例中的源数据源配置参数列表图;

图5为本发明日志同步方法第二实施例中的目标数据源(配置参数列表图;

图6为本发明日志同步方法第二实施例中的同步任务配置参数列表图;

图7为本发明日志同步方法第二实施例中基于数据切片的分次同步示意图;

图8为本发明日志同步方法第三实施例中一具体实施例的方案总体流程示意图;

图9为本发明日志同步装置的功能模块示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

如图1所示,图1是本发明实施例方案涉及的硬件运行环境的设备结构示意图。

如图1所示,该日志同步装置可以包括:处理器1001,例如CPU,用户接口1003,网络接口1004,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。

本领域技术人员可以理解,图1中示出的设备结构并不构成对设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及日志同步程序。

在图1所示的设备中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(程序员端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的日志同步程序,并执行下述日志同步方法中的操作:

识别同步类型为日期分表类型的日志同步触发事件,其中,所述日期分表类型为基于日志数据的所属日期确定日志同步任务的同步类型;

根据所述日志同步触发事件,创建并执行与所述日志同步触发事件的目标所属日期对应的目标日志同步任务,以将所述目标日志同步任务中的待同步日志数据同步至目标数据源。

进一步地,所述目标日志同步任务包括当天日志同步任务和/或跨天日志同步任务,

所述根据所述日志同步触发事件,创建并执行与所述日志同步触发事件的目标所属日期对应的目标日志同步任务,以将所述目标日志同步任务中的待同步日志数据同步至目标数据源的步骤包括:

根据所述日志同步触发事件确定预配置的同步元数据,并获取当天测试日志数据和/或跨天测试日志数据,其中,所述跨天测试日志数据为时间跨度为多天的日志数据;

基于所述同步元数据与当天测试日志数据,和/或跨天测试日志数据,创建与所述目标所属日期对应的当天日志同步任务和/或跨天日志同步任务;

执行所述当天日志同步任务和/或跨天日志同步任务,以将所述当天日志同步任务和/或跨天日志同步任务中的待同步日志数据同步至所述目标数据源。

进一步地,所述基于所述同步元数据与当天测试日志数据,和/或跨天测试日志数据,创建与所述目标所属日期对应的当天日志同步任务和/或跨天日志同步任务的步骤包括:

根据所述同步元数据获取数据表前缀,并对所述目标所属日期进行格式化以得到内置变量;

基于所述当天测试日志数据、所述数据表前缀和所述内置变量生成当天日志同步数据表,以创建所述当天日志同步任务;和/或,

根据所述同步元数据遍历所述目标所属日期之前的历史日志同步记录队列,从所述历史日志同步记录队列中获取同步日期分表和最新同步跟踪列值;

基于所述跨天测试日志数据、所述同步日期分表和所述最新同步跟踪列值创建所述跨天日志同步任务。

进一步地,所述识别同步类型为日期分表类型的日志同步触发事件的步骤之前,处理器1001可以用于调用存储器1005中存储的日志同步程序,并执行下述日志同步方法中的操作:

接收基于用户发送的首次配置信息,其中,所述首次配置信息包括首次源数据源配置信息、首次目标数据源配置信息和首次同步任务配置信息;

基于所述首次配置信息进行同步元数据的初始化配置,以在下次日志同步任务中复用已配置的同步元数据。

进一步地,所述执行所述当天日志同步任务和/或跨天日志同步任务,以将所述当天日志同步任务和/或跨天日志同步任务中的待同步日志数据同步至所述目标数据源的步骤包括:

以所述当天日志同步任务和/或跨天日志同步任务为目标,获取第一分布式锁和/或第二分布式锁;

按照数据切片方式对所述当天测试日志数据和/或跨天测试日志数据进行数据切分,以分次将所述当天测试日志数据和/或跨天测试日志数据推送至所述目标数据源;

在检测到所述当天测试日志数据和/或跨天测试日志数据推送完毕时,释放所述第一分布式锁和/或第二分布式锁。

进一步地,所述在检测到所述当天测试日志数据和/或跨天测试日志数据推送完毕时,释放所述第一分布式锁和/或第二分布式锁的步骤之后,处理器1001可以用于调用存储器1005中存储的日志同步程序,并执行下述日志同步方法中的操作:

遍历由所述当天测试日志数据和/或跨天测试日志数据推送完毕后所得到的同步成功记录表,以获取所述同步成功记录表中最后一次同步成功的跟踪列值;

根据所述同步元数据中的源数据表和目标数据表分别获取源跟踪列值与目标跟踪列值,并判断所述源跟踪列值与目标跟踪列值是否均大于所述最后一次同步成功的跟踪列值;

若是,则同步更新所述目标数据源中的日志数据,以完成对所述当天日志同步任务和/或跨天日志同步任务的核对。

进一步地,所述识别同步类型为日期分表类型的日志同步触发事件的步骤包括:

在检测到存在同步任务配置的新增节点信息时,根据所述新增节点信息确定所述日志同步触发事件,其中,所述日志同步触发事件的触发条件包括人为触发和/或基于预设规则自动触发;

获取所述日志同步触发事件的同步类型字段,对所述同步类型字段进行识别,以确定所述日志同步触发事件的同步类型为日期分表类型。

进一步地,所述根据所述日志同步触发事件,创建并执行与所述日志同步触发事件的目标所属日期对应的目标日志同步任务的步骤之后,处理器1001可以用于调用存储器1005中存储的日志同步程序,并执行下述日志同步方法中的操作:

在检测到存在日志数据同步失败时,获取同步失败的日志数据;

将同步失败的日志数据推送至对应日期的重试数据同步队列,以依次将所述重试数据同步队列中的日志数据重新同步至所述目标数据源。

基于上述硬件结构,提出本发明日志同步方法实施例。

每天的持续回归自动化测试会产生大量的自动化测试日志,这些自动化测试日志由自动化测试平台生成并入MySQL库中,由于自动化测试日志需要快速检索和数据分析,所以需要将MySQL的日志数据同步至目标数据源。然而,现有技术方案采用基于logstash-input-jdbc(一款插件)实现MySQL日志数据实时同步,但是该方案无法解决以下两类问题:(1)无法基于数据时间字段实现动态日期分表实时同步;(2)对于未存在的未来日期日志数据,需要人工干预修改同步配置。

为解决上述问题,本发明提供一种日志同步方法,即通过在同步过程中引入日期划分的概念,将需要同步的日志数据按照所属日期进行批次划分,然后定义出与之相应的日期分表类型,以此类型来执行日志同步任务,使得能够在时间维度上实现日志数据的动态同步,从而提高了日志数据同步操作的智能性;通过自动对日志数据的同步操作触发事件进行识别,使得用户仅需进行触发操作,或甚至无需人工触发,系统可根据预设规则(例如根据日期更新自动触发)所自动触发的同步事件自动开始创建并执行相应的日志数据同步任务,省去了现有技术中日志同步过程所需的人为操作,从而进一步提高了日志数据同步操作的智能化水平,解决了自动化测试领域中日志数据同步操作的智能性低下的技术问题。

参照图2,图2为本发明日志同步方法第一实施例的流程示意图。所述日志同步方法包括;

步骤S10,识别同步类型为日期分表类型的日志同步触发事件,其中,所述日期分表类型为基于日志数据的所属日期确定日志同步任务的同步类型;

在本实施例中,本方法应用于终端设备。日志数据指的是进行自动化测试所产生的自动化测试日志。自动化测试日志采用日期分表存储,表名命名为item_execute_status_[日期],例如2021年2月7日的自动化测试日志存储表名为item_execute_status_[20210207]。本申请通过预定义日期格式,将日志数据中的时间信息转化为特定的日期格式,从而将此带有特定日期格式的日志数据所对应的同步任务作为日期分表类型的同步任务。日志数据的所属日期指的是日志数据在业务逻辑上所属的日期。日志同步触发事件指的是用于触发日志同步任务的事件。

终端首先需要对日志同步触发事件进行监听,日志同步触发事件既可由用户主动发起,也可由终端根据预设规则自行发起。例如,可在首次由用户自行发起,然后设置相应的定时同步频率参数,此后终端即可根据该参数在相应的时间点上自行发起并执行日志数据同步任务,以达到动态同步更新的目的。此后终端在监听到存在日志同步触发事件时,需要判断该事件所对应的同步任务类型是否为日期分表类型,若是,则按照本申请中的后续步骤执行相应流程;若否,则可按照常规的日志同步方式执行同步任务。

步骤S20,根据所述日志同步触发事件,创建并执行与所述日志同步触发事件的目标所属日期对应的目标日志同步任务,以将所述目标日志同步任务中的待同步日志数据同步至目标数据源。

在本实施例中,目标所属日期指的是日志同步触发任务事件所属的当前日期,而目标日志同步任务可能会包括一种或多种不同类型的同步任务。因为在实际测试过程中,除了存在常规的当天开始且当天结束的当天日志数据之外,还可能会存在开始日期与结束日期不一致的跨天日志数据,因此目标同步任务可能会包含当天日期对应的当天日志同步任务,以及当天日期之前的跨天日志同步任务。

终端通过确定出当前所监听到的日志同步触发事件的目标所属日期,根据日志同步触发事件创建一种或多种不同类型的目标日志同步任务,具体可基于该事件所对应预配置的相关参数进行创建。终端获取当前待同步的日志数据,并执行当前所创建的一种或多种目标日志同步任务,从而将待同步日志数据从源数据源(例如MySQL)推送至目标数据源(例如ElasticSearch),以完成目标同步任务。

另外,在执行同步任务的过程中,还可设置相应的失败重试机制,例如,每当检测到存在日志数据同步失败时,可将同步失败的日志数据加入相应队列,以将队列中的日志数据重新同步至目标数据源;或是针对跨天日志的同步任务设置核对机制,在跨天同步任务执行结束后,通过比对相关参数确定跨天日志数据是否全部推送至目标数据源,以将未完成同步的数据再次进行同步,从而确保同步任务的准确性。

本实施例提供一种日志同步方法。所述日志同步方法通过识别同步类型为日期分表类型的日志同步触发事件,其中,所述日期分表类型为基于日志数据的所属日期确定日志同步任务的同步类型;根据所述日志同步触发事件,创建并执行与所述日志同步触发事件的目标所属日期对应的目标日志同步任务,以将所述目标日志同步任务中的待同步日志数据同步至目标数据源。本实施例通过在同步过程中引入日期划分的概念,将需要同步的日志数据按照所属日期进行批次划分,然后定义出与之相应的日期分表类型,以此类型来执行日志同步任务,使得能够在时间维度上实现日志数据的动态同步,从而提高了日志数据同步操作的智能性;通过自动对日志数据的同步操作触发事件进行识别,使得用户仅需进行触发操作,或甚至无需人工触发,系统可根据预设规则(例如根据日期更新自动触发)所自动触发的同步事件自动开始创建并执行相应的日志数据同步任务,省去了现有技术中日志同步过程所需的人为操作,从而进一步提高了日志数据同步操作的智能化水平,解决了自动化测试领域中日志数据同步操作的智能性低下的技术问题。

进一步地,基于上述图2所示的第一实施例,提出本发明日志同步方法的第二实施例。在本实施例中,所述目标日志同步任务包括当天日志同步任务和/或跨天日志同步任务,步骤S20包括:

根据所述日志同步触发事件确定预配置的同步元数据,并获取当天测试日志数据和/或跨天测试日志数据,其中,所述跨天测试日志数据为时间跨度为多天的日志数据;

基于所述同步元数据与当天测试日志数据,和/或跨天测试日志数据,创建与所述目标所属日期对应的当天日志同步任务和/或跨天日志同步任务;

执行所述当天日志同步任务和/或跨天日志同步任务,以将所述当天日志同步任务和/或跨天日志同步任务中的待同步日志数据同步至所述目标数据源。

在本实施例中,当天测试日志数据指同步程序运行时的当天日期产生的日志数据,因此当天同步任务只同步处理当天日期的测试日志数据。

跨天测试日志数据指同步程序运行时的当天日期产生但属于当天之前的日志数据,这类测试日志数据产生的原因有以下两点:(1)跨天产生的测试日志数据,例如:2021-02-07 23:59:59开始执行,2021-02-08 00:00:01结束执行,这期间产生的测试日志数据日期跨度为2天(2021-02-07和2021-02-08),但是业务逻辑上归属于2021-02-07的测试日志数据表;(2)跨天重试运行产生的测试日志数据,例如:2021-02-07执行的自动化测试记录A,2021-02-08对记录A发起重试运行,此时产生的测试日志数据产生日期虽然为2021-02-08,但是业务逻辑上归属于2021-02-07,因此该部分测试日志数据入库到2021-02-07的测试日志数据表。针对以上两种情况,当天同步任务无法处理,因此,需要单独创建独立的跨天同步任务来进行处理。跨天日志同步任务的出现是为了让基于日期分表的日志数据同步方案具备完整性,一方面,从程序设计的角度考量,跨天日志数据和当天测试数据不是属于一个日期批次,这也是日期分表的原因所在,跨天测试日志数据同步程序展现了“分工协作,相互配合”的思想。另一方面,相比于当天测试日志数据,跨天测试日志数据是少量的,因为跨天日志数据在自己的“当天”已大部分完成同步,因此当天日志数据同步程序解决当天日期批次的日志数据同步,跨天日志数据同步解决当天之前(包含多个日期批次)的日志数据同步,达到同步资源利用率最高的效果。

进一步地,所述基于所述同步元数据与当天测试日志数据,和/或跨天测试日志数据,创建与所述目标所属日期对应的当天日志同步任务和/或跨天日志同步任务的步骤包括:

根据所述同步元数据获取数据表前缀,并对所述目标所属日期进行格式化以得到内置变量;

基于所述当天测试日志数据、所述数据表前缀和所述内置变量生成当天日志同步数据表,以创建所述当天日志同步任务;和/或,

根据所述同步元数据遍历所述目标所属日期之前的历史日志同步记录队列,从所述历史日志同步记录队列中获取同步日期分表和最新同步跟踪列值;

基于所述跨天测试日志数据、所述同步日期分表和所述最新同步跟踪列值创建所述跨天日志同步任务。

在本实施例中,对于当天日志同步任务,需要解析同步元数据中同步任务配置参数中的statement参数,获取数据表前缀,例如:item_execute_status_,然后获取同步任务配置参数中的同步任务配置表date_format参数,将当前时间转化为date_format格式,并赋值给同步任务配置参数中的内置变量date_format(数据日期分表的时间日期格式,例如20210317对应的时间日期格式为:yyyyMMdd),即可生成当天同步任务JobKey,格式可为:数据表前缀大写英文字母+”:DATE_INDEX:”+当前时间的date_format格式,例如:ITEM_EXECUTE_STATUS_:DATE_INDEX:20210208,以表示当前处理的同步任务。

对于跨天日志同步任务,跨天同步任务JobKey的格式可为:数据表前缀大写英文字母+”:DATE_INDEX:”+跨天时间日期的date_format格式,例如:ITEM_EXECUTE_STATUS_:DATE_INDEX:20210208,以表示当前处理的跨天测试日志数据同步任务。遍历历史测试日志数据同步记录队列对历史每一日期批次的同步记录队列,取出同步日期分表和当前最新同步跟踪列值(当前最后一次同步成功数据的跟踪列值tracking_column_type+1,目的是记录下一次同步数据的起点,避免重复同步)current_sync_tracking_column_value,比对当前最新同步跟踪列值是否是源数据日期分表最新的跟踪列值,如果不是最新跟踪列值,以jobKey,当前最新同步跟踪列值和日期分表信息生成跨天日志数据同步任务,提交给线程池处理,流程可以抽象为如图3所示。

进一步地,步骤S10之前,还包括:

接收基于用户发送的首次配置信息,其中,所述首次配置信息包括首次源数据源配置信息、首次目标数据源配置信息和首次同步任务配置信息;

基于所述首次配置信息进行同步元数据的初始化配置,以在下次日志同步任务中复用已配置的同步元数据。

在本实施例中,首次配置具体可分为三个部分:源数据源配置、目标数据源配置以及同步任务配置。用户在使用基于日期分表的测试日志数据实时同步时,需要先配置同步元数据,后续新增同步任务时可复用元数据配置,减少同步任务维护成本,提升同步任务配置效率。

具体地,以源数据源为MySQL为例。源数据源配置为配置MySQL数据源连接信息,处理测试日志数据同步时需要从源数据源拉取数据,自动化测试日志数据源存储源为MySQL。源数据源(MySQL)配置参数如图4所示,首次需要配置源数据源的主键ID、连接地址、用户名、连接密码等等参数。

以目标数据源为ElasticSearch为例。目标数据源配置为配置ElasticSearch数据源连接信息,处理测试日志数据同步时需要往目标数据源推送数据,自动化测试日志数据目标存储源为ElasticSearch。目标数据源配置参数如图5所示,首次需要配置目标数据源的主键ID、连接地址、用户名和密码。

而对于同步任务配置,每一种测试日志数据表同步对应一个同步任务配置,同步任务配置添加时,会判断同步任务配置中的同步任务是否基于日期分表,如果是,则自动在同步任务配置中标注同步类型为日期分表同步。同步任务配置参数如图6所示,需要首次需要配置同步任务的主键ID、源数据源的主键ID、目标数据源的主键ID、statement参数(同步拉取源数据源数据执行SQL}为上次同步最后一条日志数据跟踪列+1)、schedule参数以及同步目标数据源索引等。

进一步地,所述执行所述当天日志同步任务和/或跨天日志同步任务,以将所述当天日志同步任务和/或跨天日志同步任务中的待同步日志数据同步至所述目标数据源的步骤包括:

以所述当天日志同步任务和/或跨天日志同步任务为目标,获取第一分布式锁和/或第二分布式锁;

按照数据切片方式对所述当天测试日志数据和/或跨天测试日志数据进行数据切分,以分次将所述当天测试日志数据和/或跨天测试日志数据推送至所述目标数据源;

在检测到所述当天测试日志数据和/或跨天测试日志数据推送完毕时,释放所述第一分布式锁和/或第二分布式锁。

在本实施例中,对于当天日志同步任务,首先需要以当天日志同步任务为目标获取对应的分布式锁(第一分布式锁),然后根据同步元数据中同步任务配置参数中国的同步目标数据源索引参数target_index(例如:item_execute_status_${current_date_value},其中${current_date_value}为当前同步日期)判断目标数据源索引是否存在,如果target_index不存在,创建目标数据源索引。再获取内置变量current_sync_tracking_column_value值。为实现当天测试日志数据实时同步,可采用数据切片思想,将当天测试日志数据按照预配置的跟踪列数值大小进行数据切分,分多次实时同步,假设一次同步的数据切片大小为1000,则本次同步数据切片对应的跟踪列区间为[current_sync_tracking_column_value,current_sync_tracking_column_value+1000],内置变量为上一次同步数据切片最大的跟踪列值加1,对于首次同步,内置变量初始化为1。基于数据切片的当天测试日志数据同步时,内置变量的变化流程如图7所示。

对于上方部分框图,表示首次同步开始,内置变量初始化为1,数据还未同步;对于中间部分框图,表示首次同步完成,内置变量更新为1001,即(1000+1),浅色表示未同步,深色表示已同步;对于下方部分框图,表示第二次同步完成,内置变量更新为2001,即(2000+1),浅色表示未同步,深色表示已同步,往后以此类推。

在数据分片同步完成后,将statement参数转换为实际执行的SQL,再执行SQL,获取待同步的日志数据,并将日志数据依次推送至目标数据源,获取已同步测试日志数据中最大的跟踪列值tracking_column_value,将内置变量更新为最大的跟踪列值+1后,释放第一分布式锁。

最后,判断当天同步处理的日期date1与当前时间日期date2是否相符,如果date1小于date2,将当天同步处理程序的源数据表,目标索引和同步跟踪列值绑定为一个日期分表信息放入历史测试日志数据同步记录队列,然后将当天同步程序的内置变量重置为1。

对于跨天日志同步任务,以跨天日志同步任务JobKey为目标获取第二分布式锁,然后根据JobKey获取之前已同步成功的日期分表信息(源数据表,目标数据索引以及下次需要同步的跟踪列值),并可与当天同步任务一样采用数据切片思想(假设数据切片大小设置为1000),分批次处理多个日期的同步任务,执行SQL,获取待同步的日志数据,并将日志数据依次推送至目标数据源,更新历史日志数据同步记录信息的最新跟踪列值为本次同步数据最大的跟踪列值tracking_column+1,最后释放第二分布式锁。需要说明的是,当且仅当本次生成的跨天测试日志数据同步任务提交至线程池执行并且全部完成,跨天日志数据同步任务才结束一轮同步。

进一步地,所述在检测到所述当天测试日志数据和/或跨天测试日志数据推送完毕时,释放所述第一分布式锁和/或第二分布式锁的步骤之后,还包括:

遍历由所述当天测试日志数据和/或跨天测试日志数据推送完毕后所得到的同步成功记录表,以获取所述同步成功记录表中最后一次同步成功的跟踪列值;

根据所述同步元数据中的源数据表和目标数据表分别获取源跟踪列值与目标跟踪列值,并判断所述源跟踪列值与目标跟踪列值是否均大于所述最后一次同步成功的跟踪列值;

若是,则同步更新所述目标数据源中的日志数据,以完成对所述当天日志同步任务和/或跨天日志同步任务的核对。

在本实施例中,本申请中还设有核对机制,当(当天和/或跨天)测试日志数据已同步成功,但是在未来某一时刻,这部分已同步成功且在源数据源的测试日志数据被更新,那此时这部分在目标测试日志数据的最新形态也需要被同步更新,因此这部分同步更新任务就移交给测试日志数据同步进度核对机制处理,核对机制会扫描源数据源和目标数据源已同步的测试日志数据,如果测试日志数据在源数据源和目标数据源不一致,就再次同步处理。

具体地,通过检查当前类型数据表是否已存在同步成功记录,如果存在,则遍历已存在同步的日期数据表。对于存在同步记录的日期测试日志数据表,获取其最后一次同步成功的跟踪列tracking_column值。逐步比对源数据表和目标数据表中跟踪列tracking_column值小于等于最后一次同步成功的跟踪列tracking_column值的数据。如果出现不一致,则同步更新目标数据源对应的数据。

本实施例进一步通过单独创建并行的当天同步任务和跨天同步任务来进行不同类型日志数据的同步操作,使得让基于日期分表的日志数据同步方案具备完整性,从而达到同步资源利用率最高的效果;通过用户在使用基于日期分表的测试日志数据实时同步时,先首次配置同步元数据,后续新增同步任务时复用元数据配置,从而减少同步任务维护成本,提升同步任务配置效率;通过采用数据切片的思想对待同步日志数据进行切分后分次进行同步,以实现当天测试日志数据实时同步;通过设置核对机制扫描源数据源和目标数据源已同步的测试日志数据,并在测试日志数据在源数据源和目标数据源不一致再次进行同步处理,从而保证了同步操作的准确性。

进一步地,基于上述图2所示的第一实施例,提出本发明日志同步方法的第三实施例。在本实施例中,步骤S10包括:

在检测到存在同步任务配置的新增节点信息时,根据所述新增节点信息确定所述日志同步触发事件,其中,所述日志同步触发事件的触发条件包括人为触发和/或基于预设规则自动触发;

获取所述日志同步触发事件的同步类型字段,对所述同步类型字段进行识别,以确定所述日志同步触发事件的同步类型为日期分表类型。

在本实施例中,日志同步触发事件既可由用户发起,也可由终端根据预设程序(例如根据预设的定时同步频率参数)自动定时发起。以下以用户首次发起为例进行说明。用户在前端同步任务管理新增同步任务配置,调用后台接口,后台系统往数据库插入一条同步任务配置,并往zookeeper的节点目录添加节点,同步任务监控器监控节点目录,监控有新节点信息新增,根据配置ID获取新增的同步配置参数,可使用Quartz作业调度框架动态添加注册同步任务,后续既可实现当天同步任务自动定时同步,同步频率为配置表的参数schedule。然后获取同步配置参数中的同步类型字段,识别同步类型字段为sync_type的同步类型为日期分表类型。

进一步地。所述根据所述日志同步触发事件,创建并执行与所述日志同步触发事件的目标所属日期对应的目标日志同步任务的步骤之后,还包括:

在检测到存在日志数据同步失败时,获取同步失败的日志数据;

将同步失败的日志数据推送至对应日期的重试数据同步队列,以依次将所述重试数据同步队列中的日志数据重新同步至所述目标数据源。

在本实施例中,本申请中还设有失败重试机制。当(当天和/或跨天)测试日志数据同步程序同步失败时,同步失败的测试日志数据会自动移交给重试机制处理程序。

具体地,通过判断当天日志同步任务或是跨天日志同步任务所属当前日期的同步数据表是否已创建失败重试数据同步队列,如果是首次执行同步,则创建失败重试数据同步队列;若否,则无需创建队列。当天或跨天同步测试日志数据出现同步失败时,会把同步失败的日志数据推送至对应日期失败重试数据同步队列。扫描当前日期及其以前的失败重试数据同步队列,如果失败重试同步数据队列存在数据,将队列中的日志数据依次推送至目标数据源,如果仍然失败,继续放入失败重试数据同步队列尾端。

作为一具体实施例,基于日期分表的测试日志数据实时同步总体流程如图8所示。实现日期分表的自动化测试日志数据实时同步方法总体划分为三部分,分别是:同步元数据配置,同步任务处理和同步任务失败处理机制,而同步元数据配置又分为三个部分:源数据源配置、目标数据源配置和同步任务配置;同步任务处理程序中包括当天测试日志数据同步程序和跨天测试日志数据同步程序;同步任务失败处理机制中包括测试日志数据同步失败重试机制以及测试日志数据同步进度核对机制。另外,需要说明的是,当天测试日志数据同步程序、跨天测试日志数据同步程序、重试机制以及核对机制均可在监听到新增同步触发事件时同时启动,然后根据实际情况对应执行。

本实施例进一步通过设置重试机制,使得同步失败的日志数据能够重新进行同步,进一步确保了同步操作的准确性,避免了同步失败的测试日志数据不存在于目标数据源的情况;通过实时监听日志同步触发事件,使得能够实时响应并执行相应的日志同步任务,从而达到实时同步的目的。

如图9所示,本发明还提供一种日志同步装置,所述日志同步装置包括:

同步触发识别模块10,用于识别同步类型为日期分表类型的日志同步触发事件,其中,所述日期分表类型为基于日志数据的所属日期确定日志同步任务的同步类型;

同步任务执行模块20,用于根据所述日志同步触发事件,创建并执行与所述日志同步触发事件的目标所属日期对应的目标日志同步任务,以将所述目标日志同步任务中的待同步日志数据同步至目标数据源。

上述各程序模块所执行的方法可参照本发明日志同步方法各个实施例,此处不再赘述。

本发明还提供一种日志同步设备。

所述日志同步设备包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的日志同步程序,其中所述日志同步程序被所述处理器执行时,实现如上所述的日志同步方法的步骤。

其中,所述日志同步程序被执行时所实现的方法可参照本发明日志同步方法的各个实施例,此处不再赘述。

本发明还提供一种计算机可读存储介质。

本发明计算机可读存储介质上存储有日志同步程序,所述日志同步程序被处理器执行时实现如上所述的日志同步方法的步骤。

其中,所述日志同步程序被执行时所实现的方法可参照本发明日志同步方法各个实施例,此处不再赘述。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

相关技术
  • 日志同步方法和装置、计算机可读存储介质、电子设备
  • 数据库日志同步方法、装置、计算机设备及可读存储介质
技术分类

06120113047584