自适应延迟消费方法、程序产品及存储介质

文档序号:190491 发布日期:2021-11-02 浏览:33次 >En<

阅读说明:本技术 自适应延迟消费方法、程序产品及存储介质 (Adaptive delay consumption method, program product, and storage medium ) 是由 周勇 于 2021-06-17 设计创作,主要内容包括:本发明提供一种自适应延迟消费方法、程序产品及存储介质,该方法包括:获取待消费事件,并将所述待消费事件添加进任务池;检测数据库系统的主从延迟时间,根据所述主从延迟时间和预设最大延迟时间之间的关系调整任务分发速度,并以所述任务分发速度将所述任务池中的所述待消费事件存储入任务队列;从所述任务队列中取出所述待消费事件,并对所述待消费事件进行消费处理。本发明提供的自适应延迟消费方法、程序产品及存储介质,在完成数据同步的同时,能够自动检测数据库主从延迟的时间,并根据主从延迟程度自适应调整同步速度,提高了系统稳定性,时效性高,且节省了人力消耗。(The invention provides a self-adaptive delay consumption method, a program product and a storage medium, wherein the method comprises the following steps: acquiring an event to be consumed, and adding the event to be consumed into a task pool; detecting master-slave delay time of a database system, adjusting task distribution speed according to the relation between the master-slave delay time and preset maximum delay time, and storing the events to be consumed in the task pool into a task queue at the task distribution speed; and taking out the event to be consumed from the task queue, and performing consumption processing on the event to be consumed. The self-adaptive delay consumption method, the program product and the storage medium provided by the invention can automatically detect the master-slave delay time of the database while finishing data synchronization, and self-adaptively adjust the synchronization speed according to the master-slave delay degree, thereby improving the system stability, having high timeliness and saving the manpower consumption.)

自适应延迟消费方法、程序产品及存储介质

技术领域

本发明涉及计算机技术领域,尤其涉及一种自适应延迟消费方法、程序产品及存储介质。

背景技术

在现有的数据同步系统中,一般会将数据落地到mysql等存储服务中,同时为了保证存储服务的可用性,存储服务一般会采用主从架构,因此同步过程中可能会出现同步速度过快导致数据库主从延迟过高的现象。主从架构的存储服务采用主数据库和从数据库实现。主从延迟是指主数据库和从数据库对接收的相同数据消费后存储时的时间差。为了降低主从延迟,一般是在收到数据库主从延迟报警后人为降低同步速度,以用来降低延迟程度,这种人工操作增大了解决问题的复杂性以及降低了时效性。

发明内容

针对现有技术存在的问题,本发明提供一种自适应延迟消费方法、程序产品及存储介质。

本发明提供一种自适应延迟消费方法,包括:获取待消费事件,并将所述待消费事件添加进任务池;检测数据库系统的主从延迟时间,根据所述主从延迟时间和预设最大延迟时间之间的关系调整任务分发速度,并以所述任务分发速度将所述任务池中的所述待消费事件存储入任务队列;从所述任务队列中取出所述待消费事件,并对所述待消费事件进行消费处理。

根据本发明提供的一种自适应延迟消费方法,所述检测数据库系统的主从延迟时间,具体包括:更新主数据库中的预设数据库记录,并将当前更新时间保存在预设字段;查询从数据库获取所述预设字段的字段值,计算所述当前更新时间和所述字段值的差值的绝对值,从而得到所述主从延迟时间。

根据本发明提供的一种自适应延迟消费方法,所述根据所述主从延迟时间和预设最大延迟时间之间的关系调整任务分发速度,具体包括:若所述主从延迟时间大于或等于所述预设最大延迟时间,则减小所述任务分发速度,直至所述任务分发速度达到预设最小任务分发速度;若所述主从延迟时间小于所述预设最大延迟时间,则增大所述任务分发速度,直至所述任务分发速度达到预设最大任务分发速度。

根据本发明提供的一种自适应延迟消费方法,所述任务分发速度的初始值设置为所述预设最大任务分发速度。

根据本发明提供的一种自适应延迟消费方法,所述减小所述任务分发速度,具体包括:将所述任务分发速度减小为原来的1/2。

根据本发明提供的一种自适应延迟消费方法,所述增大所述任务分发速度,具体包括:将所述任务分发速度增大为原来的2倍。

根据本发明提供的一种自适应延迟消费方法,所述获取待消费事件,具体包括:从kafka消息队列中获取所述待消费事件。

本发明还提供一种自适应延迟消费装置,包括:事件收集模块,用于:获取待消费事件,并将所述待消费事件添加进任务池;任务分发模块,用于:检测数据库系统的主从延迟时间,根据所述主从延迟时间和预设最大延迟时间之间的关系调整任务分发速度,并以所述任务分发速度将所述任务池中的所述待消费事件存储入任务队列;事件消费模块,用于:从所述任务队列中取出所述待消费事件,并对所述待消费事件进行消费处理。

本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述自适应延迟消费方法的步骤。

本发明还提供一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现如上述任一种所述自适应延迟消费方法的步骤。

本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述自适应延迟消费方法的步骤。

本发明提供的自适应延迟消费方法、程序产品及存储介质,通过获取待消费事件,并将待消费事件添加进任务池,根据主从延迟时间和预设最大延迟时间之间的关系调整任务分发速度,并以任务分发速度将任务池中的待消费事件存储入任务队列,从任务队列中取出待消费事件,并对待消费事件进行消费处理,在完成数据同步的同时,能够自动检测数据库主从延迟的时间,并根据主从延迟程度自适应调整同步速度,提高了系统稳定性,时效性高,且节省了人力消耗。

附图说明

为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明提供的自适应延迟消费方法的流程示意图;

图2是本发明提供的自适应延迟消费装置的结构示意图;

图3是本发明提供的电子设备的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

下面结合图1-图3描述本发明的自适应延迟消费方法、程序产品及存储介质。

图1是本发明提供的自适应延迟消费方法的流程示意图。如图1所示,所述方法包括:

步骤101、获取待消费事件,并将所述待消费事件添加进任务池。

数据同步系统中,上游系统向下游系统发送消费消息,一般会将消费消息存储在消息队列中。可以从消息队列中获取待消费事件,待消费事件包括尚未消费的消息。获取待消费事件后,将待消费事件添加进任务池以供后续处理。

步骤102、检测数据库系统的主从延迟时间,根据所述主从延迟时间和预设最大延迟时间之间的关系调整任务分发速度,并以所述任务分发速度将所述任务池中的所述待消费事件存储入任务队列。

检测数据库系统的主从延迟时间,比如按照预设的时间周期检测数据库系统的主从延迟时间。根据主从延迟时间和预设最大延迟时间之间的关系调整任务分发速度,主从延迟时间不应超过预设最大延迟时间,可以根据主从延迟时间和预设最大延迟时间之间的大小关系调整任务分发速度,并基于任务分发速度将任务池中的待消费事件存储入任务队列,实现任务分发处理。

步骤103、从所述任务队列中取出所述待消费事件,并对所述待消费事件进行消费处理。

对待消费事件进行消费处理即实现上下游系统的数据同步。消费时,从任务队列中取出待消费事件,并对待消费事件进行消费处理。调整任务队列的任务分发速度即相当于调整消费速度,也即调整数据同步速度。基于任务分发速度对于任务池中的消费事件进行分发,任务分发完成后进行消费,消费后进行数据库存储。数据存储过程产生主从延迟时间,根据主从延迟时间和预设最大延迟时间的关系得到任务分发速度。由此,可以形成控制的闭环,使得数据同步过程(消费过程)和数据库存储过程具有了制约关系,可以实现自适应的调整消费进度,从而优化主从延迟。

本发明提供的自适应延迟消费方法,通过获取待消费事件,并将待消费事件添加进任务池,根据主从延迟时间和预设最大延迟时间之间的关系调整任务分发速度,并以任务分发速度将任务池中的待消费事件存储入任务队列,从任务队列中取出待消费事件,并对待消费事件进行消费处理,在完成数据同步的同时,能够自动检测数据库主从延迟的时间,并根据主从延迟程度自适应调整同步速度,提高了系统稳定性,时效性高,且节省了人力消耗。

根据本发明提供的一种自适应延迟消费方法,所述检测数据库系统的主从延迟时间,具体包括:更新主数据库中的预设数据库记录,并将当前更新时间保存在预设字段;查询从数据库获取所述预设字段的字段值,计算所述当前更新时间和所述字段值的差值的绝对值,从而得到所述主从延迟时间。

主从数据库的同步存储可以采用现有技术的方式实现。主从数据库中存储的数据和字段都是相同的。可以定时检测数据库系统的主从延迟时间。检测数据库系统的主从延迟时间时,可以更新主数据库中的预设数据库记录,并将当前更新时间保存在预设字段。主数据库进行数据更新,则从数据库也会进行同样的更新,并将数据保存在同样的字段,即预设字段。因此,在主数据库更新完成后,查询从数据库获取预设字段的字段值,这个字段值表示的是从数据库中预设数据库记录的更新时间。由于此时从数据库可能还未来得及进行最新的上述更新,则字段值将小于当前更新时间。如果从数据库已经进行了最新的上述更新,则字段值将大于当前更新时间。无论从数据库的字段值大于还是小于当前更新时间,当前更新时间和从数据库中预设字段的字段值的差值的绝对值均能反映主从延迟时间,因此,计算当前更新时间和字段值的差值的绝对值,从而得到主从延迟时间。

其中,预设数据库记录可以是通过在主数据库和从数据库中新建一个表,预先写入的一条数据库记录。

本发明提供的自适应延迟消费方法,通过更新主数据库中的预设数据库记录,并将当前更新时间保存在预设字段;查询从数据库获取预设字段的字段值,计算当前更新时间和字段值的差值的绝对值,从而得到主从延迟时间,实现了主从延迟时间的快速可靠获取。

根据本发明提供的一种自适应延迟消费方法,所述根据所述主从延迟时间和预设最大延迟时间之间的关系调整任务分发速度,具体包括:若所述主从延迟时间大于或等于所述预设最大延迟时间,则减小所述任务分发速度,直至所述任务分发速度达到预设最小任务分发速度;若所述主从延迟时间小于所述预设最大延迟时间,则增大所述任务分发速度,直至所述任务分发速度达到预设最大任务分发速度。

可以预先设置一个预设最大任务分发速度和一个预设最小任务分发速度,用于表示任务分发的最大限值和最小限值,即任务分发速度应介于预设最小任务分发速度和预设最大任务分发速度之间。

在根据主从延迟时间和预设最大延迟时间之间的关系调整任务分发速度时,若主从延迟时间大于或等于预设最大延迟时间,则减小任务分发速度,直至任务分发速度达到预设最小任务分发速度,减小任务分发速度的方式可以根据实际需要设定。若主从延迟时间小于预设最大延迟时间,则增大任务分发速度,直至任务分发速度达到预设最大任务分发速度,增大任务分发速度的方式可以根据实际需要设定。

本发明提供的自适应延迟消费方法,通过在主从延迟时间大于或等于预设最大延迟时间,则减小任务分发速度,直至任务分发速度达到预设最小任务分发速度;在主从延迟时间小于预设最大延迟时间,则增大任务分发速度,直至任务分发速度达到预设最大任务分发速度,保证了任务分发速度介于预设区间范围,且平衡了任务分发速度和主从延迟时间,从而平衡了消费进度和主从延迟。

根据本发明提供的一种自适应延迟消费方法,所述任务分发速度的初始值设置为所述预设最大任务分发速度。

设置任务分发速度的初始值(一个周期内的启动速度)为预设最大任务分发速度,则若此时的主从延迟时间小于最大延迟时间的话,将以预设最大任务分发速度进行任务分发,由此在满足了主从延迟要求的基础上,提高了事件消费效率。

本发明提供的自适应延迟消费方法,通过设置任务分发速度的初始值为预设最大任务分发速度,实现了在满足了主从延迟要求的基础上,提高了事件消费效率。

根据本发明提供的一种自适应延迟消费方法,所述减小所述任务分发速度,具体包括:将所述任务分发速度减小为原来的1/2。

在主从延迟时间大于或等于预设最大延迟时间,减小任务分发速度时,可以将任务分发速度减小为原来的1/2。比如,若调整前任务分发速度为ns,将ns调整为ns/2。然后,在此任务分发速度下再次计算主从延迟时间,若主从延迟时间仍大于或等于预设最大延迟时间,则再将ns/2调整为ns/4,以此类推,直至任务分发速度达到预设最小任务分发速度。

本发明通过在减小任务分发速度时,将任务分发速度减小为原来的1/2,提高了任务分发速度调整的简便性。

根据本发明提供的一种自适应延迟消费方法,所述增大所述任务分发速度,具体包括:将所述任务分发速度增大为原来的2倍。

在主从延迟时间小于预设最大延迟时间,增大任务分发速度时,可以将任务分发速度增大为原来的2倍。比如,若调整前任务分发速度为ns,将ns调整为2ns。然后,在此任务分发速度下再次计算主从延迟时间,若主从延迟时间仍小于预设最大延迟时间,则再将2ns调整为4ns,以此类推,直至任务分发速度达到预设最大任务分发速度。

本发明通过在增大任务分发速度时,将任务分发速度增大为原来的2倍,提高了任务分发速度调整的简便性。

根据本发明提供的一种自适应延迟消费方法,所述获取待消费事件,具体包括:从kafka消息队列中获取所述待消费事件。

可以利用kafka消费事件,在获取待消费事件时,可以从kafka消息队列中获取待消费事件。

本发明提供的自适应延迟消费方法,通过从kafka消息队列中获取待消费事件,提高了事件消费的简便性。

下面再通过一具体实例说明本发明提供的自适应延迟消费方法的流程。本发明提供的自适应延迟消费方法包括:

1、获取上游的待消费事件,并将待消费事件添加进任务池中,如:启动事件收集进程,从kafka等消息队列获取待消费事件,并将待消费事件添加进任务池。

2、检测数据库系统主从延迟的时间,如:启动监控进程,定时更新主库中的一条记录,将更新时间保存在mtime字段中,同时从从库中查询该记录的mtime字段值t,计算当前时间与t的差值的绝对值,即为主从延迟时间T。

3、将任务池中的任务放入任务队列,并根据数据库主从延迟时间自动调整任务分发速度,如:预设最大分发速度max,最小分发速度min,启动任务分发进程,启动速度设为ns=max,按照ns将任务池中任务放入任务队列,循环开始,若主从延迟时间T>=最大延迟时间mt,ns=ns/2,直到达到最小分发速度min;若T<mt,ns=2ns,直到达到最大分发速度max。

4、从任务队列中获取事件,并对事件作相应处理,如:启动消费者进程,从任务队列中取出任务,消费任务将数据落地。

下面对本发明提供的自适应延迟消费装置进行描述,下文描述的自适应延迟消费装置与上文描述的自适应延迟消费方法可相互对应参照。

图2是本发明提供的自适应延迟消费装置的结构示意图。如图2所示,所述装置包括:事件收集模块10、任务分发模块20及事件消费模块30,其中:事件收集模块10用于:获取待消费事件,并将所述待消费事件添加进任务池;任务分发模块20用于:检测数据库系统的主从延迟时间,根据所述主从延迟时间和预设最大延迟时间之间的关系调整任务分发速度,并以所述任务分发速度将所述任务池中的所述待消费事件存储入任务队列;事件消费模块30用于:从所述任务队列中取出所述待消费事件,并对所述待消费事件进行消费处理。

本发明提供的自适应延迟消费方法,通过获取待消费事件,并将待消费事件添加进任务池,根据主从延迟时间和预设最大延迟时间之间的关系调整任务分发速度,并以任务分发速度将任务池中的待消费事件存储入任务队列,从任务队列中取出待消费事件,并对待消费事件进行消费处理,在完成数据同步的同时,能够自动检测数据库主从延迟的时间,并根据主从延迟程度自适应调整同步速度,提高了系统稳定性,时效性高,且节省了人力消耗。

根据本发明提供的一种自适应延迟消费装置,任务分发模块20在用于检测数据库系统的主从延迟时间时,具体用于:更新主数据库中的预设数据库记录,并将当前更新时间保存在预设字段;查询从数据库获取所述预设字段的字段值,计算所述当前更新时间和所述字段值的差值的绝对值,从而得到所述主从延迟时间。

本发明提供的自适应延迟消费方法,通过更新主数据库中的预设数据库记录,并将当前更新时间保存在预设字段;查询从数据库获取预设字段的字段值,计算当前更新时间和字段值的差值的绝对值,从而得到主从延迟时间,实现了主从延迟时间的快速可靠获取。

根据本发明提供的一种自适应延迟消费装置,任务分发模块20在用于根据所述主从延迟时间和预设最大延迟时间之间的关系调整任务分发速度时,具体用于:若所述主从延迟时间大于或等于所述预设最大延迟时间,则减小所述任务分发速度,直至所述任务分发速度达到预设最小任务分发速度;若所述主从延迟时间小于所述预设最大延迟时间,则增大所述任务分发速度,直至所述任务分发速度达到预设最大任务分发速度。

本发明提供的自适应延迟消费方法,通过在主从延迟时间大于或等于预设最大延迟时间,则减小任务分发速度,直至任务分发速度达到预设最小任务分发速度;在主从延迟时间小于预设最大延迟时间,则增大任务分发速度,直至任务分发速度达到预设最大任务分发速度,保证了任务分发速度介于预设区间范围,且平衡了任务分发速度和主从延迟时间,从而平衡了消费进度和主从延迟。

根据本发明提供的一种自适应延迟消费装置,所述任务分发速度的初始值设置为所述预设最大任务分发速度。

本发明提供的自适应延迟消费方法,通过设置任务分发速度的初始值为预设最大任务分发速度,实现了在满足了主从延迟要求的基础上,提高了事件消费效率。

根据本发明提供的一种自适应延迟消费装置,所述减小所述任务分发速度,具体包括:将所述任务分发速度减小为原来的1/2。

本发明通过在减小任务分发速度时,将任务分发速度减小为原来的1/2,提高了任务分发速度调整的简便性。

根据本发明提供的一种自适应延迟消费装置,所述增大所述任务分发速度,具体包括:将所述任务分发速度增大为原来的2倍。

本发明通过在增大任务分发速度时,将任务分发速度增大为原来的2倍,提高了任务分发速度调整的简便性。

根据本发明提供的一种自适应延迟消费装置,所述获取待消费事件,具体包括:从kafka消息队列中获取所述待消费事件。

本发明提供的自适应延迟消费方法,通过从kafka消息队列中获取待消费事件,提高了事件消费的简便性。

图3是本发明提供的电子设备的结构示意图,如图3所示,该电子设备可以包括:处理器(processor)310、通信接口(Communications Interface)320、存储器(memory)330和通信总线340,其中,处理器310,通信接口320,存储器330通过通信总线340完成相互间的通信。处理器310可以调用存储器330中的逻辑指令,以执行自适应延迟消费方法,该方法包括:获取待消费事件,并将所述待消费事件添加进任务池;检测数据库系统的主从延迟时间,根据所述主从延迟时间和预设最大延迟时间之间的关系调整任务分发速度,并以所述任务分发速度将所述任务池中的所述待消费事件存储入任务队列;从所述任务队列中取出所述待消费事件,并对所述待消费事件进行消费处理。

此外,上述的存储器330中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的自适应延迟消费方法,该方法包括:获取待消费事件,并将所述待消费事件添加进任务池;检测数据库系统的主从延迟时间,根据所述主从延迟时间和预设最大延迟时间之间的关系调整任务分发速度,并以所述任务分发速度将所述任务池中的所述待消费事件存储入任务队列;从所述任务队列中取出所述待消费事件,并对所述待消费事件进行消费处理。

又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各提供的自适应延迟消费方法,该方法包括:获取待消费事件,并将所述待消费事件添加进任务池;检测数据库系统的主从延迟时间,根据所述主从延迟时间和预设最大延迟时间之间的关系调整任务分发速度,并以所述任务分发速度将所述任务池中的所述待消费事件存储入任务队列;从所述任务队列中取出所述待消费事件,并对所述待消费事件进行消费处理。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

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

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

12页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:工业数据库集群系统及其数据访问方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!