CN112612583A - 数据同步方法、装置、计算机设备和可读存储介质 - Google Patents
数据同步方法、装置、计算机设备和可读存储介质 Download PDFInfo
- Publication number
- CN112612583A CN112612583A CN202011484355.4A CN202011484355A CN112612583A CN 112612583 A CN112612583 A CN 112612583A CN 202011484355 A CN202011484355 A CN 202011484355A CN 112612583 A CN112612583 A CN 112612583A
- Authority
- CN
- China
- Prior art keywords
- thread
- data
- message
- determining
- time
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 60
- 238000012545 processing Methods 0.000 claims abstract description 96
- 230000001360 synchronised effect Effects 0.000 claims abstract description 53
- 230000008859 change Effects 0.000 claims description 46
- 238000012360 testing method Methods 0.000 claims description 37
- 230000015654 memory Effects 0.000 claims description 27
- 238000004590 computer program Methods 0.000 claims description 9
- 239000002699 waste material Substances 0.000 abstract description 8
- 230000006978 adaptation Effects 0.000 abstract description 4
- 230000008569 process Effects 0.000 description 17
- 230000003203 everyday effect Effects 0.000 description 9
- 230000000694 effects Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000002354 daily effect Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000011160 research Methods 0.000 description 3
- 238000011144 upstream manufacturing Methods 0.000 description 3
- 210000001072 colon Anatomy 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及数据处理技术领域,提供了一种数据同步方法、装置、计算机设备和可读存储介质。该方法包括:确定执行数据同步线程的数据处理能力;确定消息队列中的消息主题;以及在同步所述消息主题对应的数据时,根据所述数据处理能力和所述消息主题的历史流量信息,调整所述消息主题的线程分配数量。通过本申请,能够提升同步线程与同步数据量之间的适配率,解决线程资源的浪费和同步进度的迟滞的问题。
Description
技术领域
本申请涉及数据处理技术领域,尤其涉及一种数据同步方法、装置、计算机设备和可读存储介质。
背景技术
随着各种业务的深度交叉,上下游业务***之间依赖关系的增强,对上下游之间的数据同步要求也在提升。业内上下游数据同步方案一般会使用消息队列实现业务解耦和数据泄洪,在数据同步过程中一般依据经验和业务情况预估数据量,使用固定的线程数来消费某个或某几个主题。但是,发明人研究发现,这样的方案存在明显的问题,因为业务数据通常是随时间变化的,使用固定的线程数来消费某个或某几个主题容易造成线程资源浪费或同步进度迟滞,线程数量与同步的数据量之间并不能很好的适配。
因此,如何提升同步线程与同步数据量之间的适配率,解决线程资源的浪费和同步进度的迟滞问题,成为本领域亟需解决的技术问题。
发明内容
本申请的目的是提供一种数据同步方法、装置、计算机设备和可读存储介质,用于解决现有技术中的上述技术问题。
一方面,为实现上述目的,本申请提供了一种数据同步方法。
该数据同步方法包括:确定执行数据同步线程的数据处理能力;确定消息队列中的消息主题;以及在同步所述消息主题对应的数据时,根据所述数据处理能力和所述消息主题的历史流量信息,调整所述消息主题的线程分配数量。
进一步地,在同步所述消息主题对应的数据时,根据所述数据处理能力和所述消息主题的历史流量信息,调整消息主题的线程分配数量的步骤包括:根据所述历史流量信息确定所述消息主题的数据量变化周期和间隔周期;根据所述变化周期确定所述线程分配数量的调整时间;根据所述间隔周期确定所述调整时间所依据的历史时间;若当前时间达到所述调整时间时,根据所述数据处理能力和所述历史时间的数据量确定目标线程数;通过所述目标线程数调整所述线程分配数量。
进一步地,根据所述数据处理能力和所述历史时间的数据量确定目标线程数的步骤包括:根据所述数据处理能力确定在单位时长内处理数据量和所需线程数的对应关系;根据所述历史时间的数据量确定所述单位时长内的历史数据量;以及在所述对应关系中,确定与所述历史数据量对应的线程数,以得到所述目标线程数。
进一步地,根据所述变化周期确定所述线程分配数量的调整时间的步骤包括:当所述变化周期不满足与时间的相关性要求时,确定所述调整时间为每间隔预定时长调整一次,其中,所述预定时长小于或等于所述预定周期;当所述变化周期满足与时间的相关性要求时,确定所述调整时间为每间隔所述变化周期对应的时长调整一次。
进一步地,确定执行数据同步的线程的数据处理能力的步骤包括:在所述消息队列的测试消息主题中写入满足测试量的测试数据;订阅所述测试消息主题,以使所述线程消费所述测试数据;记录所述线程的消费完成时间;以及根据所述测试量和所述消费完成时间,确定所述线程的数据处理能力。
进一步地,在调整消息主题的线程分配数量的步骤之后,所述数据同步方法还包括:将所述线程分配数量的线程分配至若干同步节点,其中,当所述线程分配数量大于1时,至少将两个所述线程分配至不同的同步节点。
进一步地,当所述线程分配数量大于1时,将所述线程分配数量的线程分配至若干同步节点的步骤包括:若所述线程分配数量等于所述同步节点的数量时,为每个所述同步节点分配一个所述线程;若所述线程分配数量大于所述同步节点的数量时,为每个所述同步节点分配至少一个所述线程,且为线程运行数量少的所述同步节点线程分配数量多的所述线程;若所述线程分配数量小于所述同步节点的数量时,将每个所述线程分配至不同的所述同步节点,且被分配线程的同步节点的线程运行数量小于或等于未被分配线程的同步节点的线程运行数量。
另一方面,为实现上述目的,本申请提供了一种数据同步装置。
该数据同步装置包括:第一确定模块,用于确定执行数据同步线程的数据处理能力;第二确定模块,用于确定消息队列中的消息主题;以及调整模块,用于在同步所述消息主题对应的数据时,根据所述数据处理能力和所述消息主题的历史流量信息,调整所述消息主题的线程分配数量。
又一方面,为实现上述目的,本申请还提供一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,该处理器执行计算机程序时实现上述方法的步骤。
又一方面,为实现上述目的,本申请还提供计算机可读存储介质,包括存储数据区和存储程序区,存储数据区存储根据区块链节点的使用所创建的数据,存储程序区存储有计算机程序,其中,该计算机程序被处理器执行时实现上述方法的步骤。
本申请提供的数据同步方法、装置、计算机设备和可读存储介质,确定执行数据同步线程的数据处理能力和消息队列中的消息主题后,在同步该消息主题对应的数据时,根据线程数据处理能力以及该消息主题的历史流量信息,调整该消息主题的线程分配数量,实现了消息主题的线程分配数量的动态自动调整,提升同步线程与同步数据量之间的适配率,从而减少线程资源的浪费,以及同步进度的迟滞,程序可自动运行调整,减少人工操作,提升程序运行效率。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为本申请实施例一提供的数据同步方法的流程图;
图2为本申请实施例二提供的数据同步装置的框图;
图3为本申请实施例三提供的计算机设备的硬件结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为了解决现有技术中使用固定的线程数来消费某个或某几个主题容易造成线程资源浪费或同步进度迟滞,线程数量与同步的数据量之间并不能很好适配的技术问题,发明人进行了如下研究:在数据同步过程中,设置一些手动调节的节点,在该节点,依据该时期预估的数据量,手动调整线程数量来减少线程资源浪费或同步进度迟滞的出现概率,但是,发明人进一步研究发现,上述处理方式仍然存在以下的问题:第一,对数据量预估的准确性要求高,容易由于预估不准确而导致调整效果差,第二,需要人工操作,操作复杂且程序运行效率低。
基于此,本申请提出一种数据同步方法、装置、计算机设备和可读存储介质,在该数据同步方法中,首先确定执行数据同步线程的数据处理能力,并确定消息队列中的消息主题,在同步该消息主题对应的数据的过程中,根据其历史流量信息和数据处理能力,调整消息主题的线程分配数量,也就是说,在调整消息主题对应的线程分配数量时,所依据的因素是该消息主题的历史流量信息和线程的数据处理能力,而数据同步过程中,同一消息主题不同时期的数据量通常呈一定规律变化,因此,消息主题的历史流量信息能够反映出该消息主题下待处理数据的数据量,同时结合线程的数据处理能力,便能够较准确的确定出对该消息主题的线程分配数量,提升调整效果。此外,可通过程序自动获取消息主题的历史流量信息和线程的数据处理能力,并在数据同步的过程中,自动调整线程分配数量,提升程序运行效率。
关于本申请提供的数据同步方法、装置、计算机设备和可读存储介质的具体实施例,将在下文中详细描述。
实施例一
本申请实施例一提供了一种数据同步方法,通过该方法,能依据历史数据量的变化,调整数据同步过程中的线程分配数量,减少了人工操作,提高了程序的运行效率。具体地,图1为本申请实施例一提供的数据同步方法的流程图,如图1所示,该数据同步方法包括如下的步骤S101至步骤S103:
步骤S101:确定执行数据同步线程的数据处理能力。
具体地,执行数同步的线程用于按照特定的处理逻辑处理消息队列中的消息主题,以实现该消息主题下的数据的同步。其中的处理逻辑依据实际业务的不同而发生变化,该处不再详述。
可在进行数据同步处理前,先确定执行数据同步线程的数据处理能力,该数据处理能力是指线程按照上述特定的处理逻辑,处理完预定数据量的数据所需要耗费的时长,其中,所耗费的时长越长,线程的数据处理能力越差,所耗费的时长越短,线程的数据处理能力越强,可以将该时长作为表征数据处理能力的参数;或者,该数据处理能力是指线程按照上述特定的处理逻辑,在预定的时长内可处理的数据量,其中,可处理的数据量越少,线程的数据处理能力越差,可处理的数据量越多,线程的数据处理能力越强,可以将该数据量作为表征数据处理能力的参数;又或者,可以利用单位时间内处理的数据量,也即数据处理速度作为表征数据处理能力的参数。其中,上述的数据量可以为数据的大小,例如,200MB,1000KB等;也可以为数据条数的多少,例如1000条,2000条等。其中,在对处理程序执行效率要求不高的场景下,可采用数据的大小作为数据量,以提升调整线程的线程分配数量的精确性;在对线程的线程分配数量准确性要求不高的场景下,可采用数据条数的多少作为数据量,以提升调整线程的线程分配数量程序执行的效率。
在确定执行数据同步线程的数据处理能力时,可根据执行相同处理逻辑的线程的数据处理历史数据记录进行确定,例如,历史数据记录包括执行相同处理逻辑的线程处理数据量S所耗费的时长为T,则可根据该数据量S和时长T确定执行数据同步线程的数据处理能力。
或者,在确定执行数据同步线程的数据处理能力时,可设置测试实验,在目标节点(也即实际将要用于完成数据同步的设备)上测试执行相同处理逻辑的线程的数据处理能力。
步骤S102:确定消息队列中的消息主题。
具体地,在实现数据同步的消息队列中包括若干消息主题,每个消息主题产生若干待同步数据,通过消费消息队列中各消息主题产生的数据,也即实现了对待同步数据的同步。
步骤S103:在同步消息主题对应的数据时,根据数据处理能力和消息主题的历史流量信息,调整消息主题的线程分配数量。
具体地,对于消息队列中的每一消息主题,在同步其对应数据的过程中,均根据线程的数据处理能力以及该消息主题的历史流量信息,调整其线程分配数量。例如,某消息队列中包括3个消息主题,在进行数据分配的第一时间段,依次分配有x1,y1和z1个线程,在第一时间段结束后,分别根据线程的数据处理能力和自身的历史流量信息调整线程分配数量,使得在进行数据分配的第二时间段,依次分配有x2,y2和z2个线程。
其中,对于初始线程分配数量,可按照现有技术中的方法进行设置,例如按照消息主题的预估数据量,设置该消息主题的初始线程分配数量;或者,也可设置固定初始值,该固定初始值大于或等于1且小于可利用线程数;或者,也可根据消息主题的历史一段时间内的数据量均值和线程的数据处理能力,设置该消息主题的初始线程分配数量;或者,也可根据消息队列中其他消息主题的历史一段时间内的数据量均值,以及线程的数据处理能力,设置消息主题的初始线程分配数量等。
在设置初始线程分配数量之后,在按照初始线程分配数量同步消息主题对应的数据时,即可根据消息主题的历史流量信息和所述数据处理能力,调整所述消息主题的线程分配数量,具体例如:根据消息主题上一个月平均每天产生的数据量和线程一天所能处理的数据量,设置本月内该消息主题每天的线程分配数量,从而每个月调整一次该消息主题的线程分配数量;根据消息主题昨天相同时间段(小时)产生的数据量和线程一个小时所能处理的数据量,设置今天相同时间段内该消息主题的线程分配数量,从而今天每小时调整一次该消息主题的线程分配数量。
在该实施例提供的数据同步方法,确定执行数据同步线程的数据处理能力和消息队列中的消息主题后,在同步该消息主题对应的数据时,根据线程数据处理能力以及该消息主题的历史流量信息,调整该消息主题的线程分配数量,实现了消息主题的线程分配数量的动态自动调整,提升同步线程与同步数据量之间的适配率,从而减少线程资源的浪费,以及同步进度的迟滞,程序可自动运行调整,减少人工操作,提升程序运行效率。
可选地,在一种实施例中,在同步消息主题对应的数据时,根据数据处理能力和消息主题的历史流量信息,调整消息主题的线程分配数量的步骤包括:根据历史流量信息确定消息主题的数据量变化周期和间隔周期;根据变化周期确定线程分配数量的调整时间;根据间隔周期确定调整时间所依据的历史时间;若当前时间达到调整时间时,根据数据处理能力和历史时间的数据量确定目标线程数;通过目标线程数调整线程分配数量。
具体地,消息队列设置有存储消费数据的历史记录,因此,通过该历史记录可以获取到消息队列中每个消息主题的历史流量信息,通过一个消息主题的历史流量信息,可确定该消息主题每分钟、每小时和或每天等周期内数据量的变化。
因此,通过消息主题的历史流量信息,可确定数据量变化周期,也即可确定数据量是每小时均会发生变化,还是每天发生变化,或者每月发生变化,亦或是基本稳定,不发生变化。其中,需要说明的是,该处的变化不是绝对的变化,而是指变化量超出线程的处理弹性空间,数据量的减小已经造成了线程资源的浪费,或者,数据量的增加已经造成了数据同步的迟滞。在确定变化周期后,根据该变化周期即可确定出线程分配数量的调整时间,在每个变化周期的临界点,进行线程分配数量的调整,也就是说,数据量变化周期,决定的是调整的时间点。
同时,通过消息主题的历史流量信息,也可确定数据量间隔周期,也即,一个数据量范围出现的间隔时间,例如,某消息主题在每个月的1日均会出现10万-12万条数据,又如,某消息主题在每天的23时只有100条-150条数据等,在确定间隔周期后,根据该间隔周期即可确定出在调整时间处调整线程分配数量时,具体要依据哪一历史时间的数据量进行调整,在当前时间达到调整时间时,根据间隔周期确定要参考哪一历史时间的数据量,然后进一步根据该数据量和线程的数据处理能力,确定出应该设置多大的线程分配数量,也即目标线程数,再利用目标线程数调整线程分配数量,也就是说,数据量间隔周期,直接决定的是调整时所依据的数据量是哪一时间的数据量,从而也间接决定调整时应该是多大的调整量。例如某消息主题的数据量每小时均会发生变化,且每个工作日中相同小时的数据量一致,每个休息日中相同小时的数据量一致,则在同步该消息主题对应的数据时,每小时对该消息主题的线程分配数量进行一次调整,且对于工作日而言,按照线程的数据处理能力和前一个工作日的相同时间的数据量进行调整,对于休息日而言,按照线程的数据处理能力和前一个休息日的相同时间的数据量进行调整。
可选地,具体调整时,若当前的线程分配数量大于目标线程数,则减小线程分配数量至目标线程数;若当前的线程分配数量小于目标线程数,其目标线程数小于可用最大线程数时,则增大线程分配数量至目标线程数;若当前的线程分配数量小于目标线程数,其目标线程数大于或等于可用最大线程数时,则增大线程分配数量至可用最大线程数。其中,不同的消息队列对应的可用最大线程数不同,例如,kafka消息队列对应的可用最大线程数为分区数的值。
采用该实施例提供的数据同步方法中,根据历史数据量的变化周期确定调整时间,根据历史数据量的间隔周期确定调整时依据哪一历史时间的数据量,能够进一步提升调整线程分配数量的准确性,从而使得数据同步过程更加高效,且资源能够更加被合理利用,使得数据同步具备了自学习的能力,能依据历史数据量的变化,按一定时间周期动态调整消息队列中各消息主题对应的线程分配数量,减少了人工操作,提高了程序的运行效率并且实现了程序的高可用。
可选地,在一种实施例中,根据数据处理能力和历史时间的数据量确定目标线程数的步骤包括:根据数据处理能力确定在单位时长内处理数据量和所需线程数的对应关系;根据历史时间的数据量确定单位时长内的历史数据量;以及在对应关系中,确定与历史数据量对应的线程数,以得到目标线程数。
具体地,可将单位时长规定为某一个时间长度,根据数据处理能力确定在该时间长度内处理数据量和所需线程数的对应关系,该对应关系可以是阶梯变化关系或者其他关系。具体地,每个消息队列中会有多个消息主题,不同的消息主题产生的数据的速度是不一样的。通过设置一个阶梯变化的某时间长度的数据量与线程数的对应关系,作为不同消息主题动态消费的依据,例如,设对应关系:1d 1:0-1000,2:1000-10000,3:10000-50000
其中,1d代表时间长度是一天,右边每一个逗号对应一个阶梯,在一个阶梯中,冒号左边代表线程数,冒号右边代表数据量范围;该阶梯变化的对应关系解释为:1天内数据量为0-1000范围内线程数分配为1,数据量为1000-10000范围内线程数分配为2,数据量为10000-50000范围内线程数分配为3,其他数据量线程数为默认值,该默认值对于不同的消息队列,可设置不同的值,具体为大于等于1且小于可利用最大线程数。
在根据历史时间的数据量确定单位时长内的历史数据量时,如果历史时间的时长与单位时长相同,则历史时间的数据量即为单位时长的历史数据量,例如历史时间为上一个月的相同日期的一天,单位时长也为一天,则一天的历史数据量也为上一个月相同日期一天内的数据量;如果历史时间的时长与单位时长不同,需要将历史时间的数据量换算为单位时长的历史数据量,例如历史时间的数据量为前一个小时的数据量,单位时长为一天,则一天的历史数据量为前一个小时的数据量乘以24。
在确定对应关系和历史数据量之后,即可在对应关系中找到历史数据量所对应的线程数,便可得到目标线程数。例如,对应关系为上述举例中的阶梯变化的关系,历史时间的数据量为前一个小时的数据量,且前一个小时的数据量为500条,则一天的历史数据量12000条,在对应关系中确定出目标线程数为3,则将当前的线程分配数量调整为3。
可选地,在一种实施例中,根据变化周期确定线程分配数量的调整时间的步骤包括:当变化周期不满足与时间的相关性要求时,确定调整时间为每间隔预定时长调整一次;当变化周期满足与时间的相关性要求时,确定调整时间为每间隔变化周期对应的时长调整一次。
具体地,对于分布式***,资源调度使信息在节点间传输,会占用带宽和计算资源,所有应尽可能少的次数进行资源重分配。因此,如果变化周期不满足与时间的相关性要求,也即数据量随机变化或相对较稳定的情况,可设置每间隔预定时长调整一次,例如设置每个月调整一次,且使用按上一月天数据量均值作为历史数据量进行参考;对于变化周期满足与时间的相关性要求,例如按月呈现出周期性的变化的,可每月调整一次,按天呈现出周期性的变化的,可每天调整一次等。
具体地,某消息主题的历史流量信息包括一个月中每一小时的数据量,则可采用以下策略确定线程分配数量:
如果变化周期为每小时都在发生变化,且每天相同小时的数据量相同,则可按日周期按小时分配资源,也即每小时执行调整一次,每次调整按上一天同时间段的数据量分配线程资源,比如2月1日1时按1月30日1时分配资源。
如果变化周期为每天都在发生变化,且每周相同天的数据量相同,则按日周期按日分配资源,也即每天执行调整一次,每次调整按上一天的数据量分配线程资源,比如2月1日按1月30日的数据量分配资源。
如果变化周期为每小时都在发生变化,且每月同一天相同时间段的数据量相同,则按月周期按小时分配资源,也即每小时执行调整一次,每次按上一月同一日同一时间段的数据量分配线程资源。比如2月1日1时按1月1日1时分配资源。
如果变化周期为每天都在发生变化,且每月同一天的数据量相同,则按月周期按日分配资源,也即每天执行调整一次,每次按上一个月同一日的数据量分配线程资源。比如2月1日按1月1日分配资源。
如果变化周期为每月都在发生变化,且每月与上一个月的数据量相同,则按月周期按月分配资源:每月执行一次,每次按上一个月数据量分配资源。比如2月按1月分配资源。
可选地,在一种实施例中,确定执行数据同步的线程的数据处理能力的步骤包括:在消息队列的测试消息主题中写入满足测试量的测试数据;订阅测试消息主题,以使线程消费测试数据;记录线程的消费完成时间;以及根据测试量和消费完成时间,确定线程的数据处理能力。
具体地,对于不同的消息队列和不同的处理逻辑,线程消费数据的能力有很大差异,故采用部署前按实际服务器进行测定,以给出数据处理能力,也即计算线程分配数量的依据,具体步骤如下:
1)在消息队列的测试消息主题中写入满足测试量的测试数据时,例如在消息队列中主题TEST_TOPIC写入m(条)数据,每条数据q(MB)其中,保证数据量在1000条以上,共500MB以上,以保证测试效果;
2)订阅测试消息主题,以使线程消费测试数据,例如订阅消息主题TEST_TOPIC,使得线程开始按处理逻辑消费数据;
3)记录线程的消费完成时间,也即测试消费完成时间t(s)。
4)根据测试量和所述消费完成时间,确定线程的数据处理能力,例如可以为单位时间内消费的条数=m/t(条/s);单位时间内消费的数据量=m*q/t(MB/s)。
采用该实施例提供的数据同步方法,通过测试的方式得到线程的数据处理能力,有利于准确确定线程分配数量。
可选地,在一种实施例中,在调整线程的线程分配数量之后,数据同步方法还包括:将线程分配数量的线程分配至若干同步节点,其中,当线程分配数量大于1时,至少将两个线程分配至不同的同步节点。
具体地,在确定消息队列中各个消费主题的线程分配数量后,将各线程分配至同步节点中,在分配时,当线程分配数量大于1时,至少将两个线程分配至不同的同步节点,能够使得一个消费主题至少有两个线程位于不同的同步节点,从而当其中一个同步节点出现故障时,至少还有另一个同步节点上的线程可以同步数据。例如,假设消息主题A有1个线程a,则分布到1个节点。消息主题B有2个线程b1和b2,消息主题C有3个线程c1、c2和c3同步节点包括甲和乙,则可采用轮询的分配方式,将线程a分配至甲,将b1和b2分别依次分配至甲和乙,将c1和c2分配至甲,将c3分配至乙,以尽量将同一主题的不同线程分配到不同的节点。
可选地,在一种实施例中,当线程分配数量大于1时,将线程分配数量的线程分配至若干同步节点的步骤包括:若线程分配数量等于同步节点的数量时,为每个同步节点分配一个线程;若线程分配数量大于同步节点的数量时,为每个同步节点分配至少一个线程,且为线程运行数量少的同步节点线程分配数量多的线程;若线程分配数量小于同步节点的数量时,将每个线程分配至不同的同步节点,且被分配线程的同步节点的线程运行数量小于或等于未被分配线程的同步节点的线程运行数量。
采用该实施例提供的数据同步方法,在保证消息主题同步过程中的线程可靠运行的同时,兼顾了同步节点中线程的均衡性,从而可以将消费资源均衡的分布到各同步节点,实现了按历史数据量的分布式的智能消费。
实施例二
对应于上述实施例一,本申请实施例二提供了一种数据同步装置,相应的技术特征和对应的技术效果可参考上述实施例一,该处不再赘述。图2为本申请实施例二提供的数据同步装置的框图,如图2所示,该数据同步装置包括:第一确定模块201、第二确定模块202和调整模块203。
第一确定模块201用于确定执行数据同步线程的数据处理能力;第二确定模块202用于确定消息队列中的消息主题;以及调整模块203用于在同步所述消息主题对应的数据时,根据所述数据处理能力和所述消息主题的历史流量信息,调整所述消息主题的线程分配数量。
可选地,在一种实施例中,所述调整模块包括:第一确定单元,用于根据所述历史流量信息确定所述消息主题的数据量变化周期和间隔周期;第二确定单元,用于根据所述变化周期确定所述线程分配数量的调整时间;第三确定单元,用于根据所述间隔周期确定所述调整时间所依据的历史时间;第四确定单元,用于若当前时间达到所述调整时间时,根据所述数据处理能力和所述历史时间的数据量确定目标线程数;调整单元,用于通过所述目标线程数调整所述线程分配数量。
可选地,在一种实施例中,所述第四确定单元在根据所述数据处理能力和所述历史时间的数据量确定目标线程数时,具体执行的步骤包括:根据所述数据处理能力确定在单位时长内处理数据量和所需线程数的对应关系;根据所述历史时间的数据量确定所述单位时长内的历史数据量;以及在所述对应关系中,确定与所述历史数据量对应的线程数,以得到所述目标线程数。
可选地,在一种实施例中,所述第二确定单元在根据所述变化周期确定所述线程分配数量的调整时间时,具体执行的步骤包括:当所述变化周期不满足与时间的相关性要求时,确定所述调整时间为每间隔预定时长调整一次,其中,所述预定时长小于或等于所述预定周期;当所述变化周期满足与时间的相关性要求时,确定所述调整时间为每间隔所述变化周期对应的时长调整一次。
可选地,在一种实施例中,第一确定模块20包括:写入单元,用于在所述消息队列的测试消息主题中写入满足测试量的测试数据;订阅单元,用于订阅所述测试消息主题,以使所述线程消费所述测试数据;记录单元,用于记录所述线程的消费完成时间;以及第五确定单元,用于根据所述测试量和所述消费完成时间,确定所述线程的数据处理能力。
可选地,在一种实施例中,所述数据同步装置还包括:分配模块,用于在调整模块203调整消息主题的线程分配数量之后,将所述线程分配数量的线程分配至若干同步节点,其中,当所述线程分配数量大于1时,至少将两个所述线程分配至不同的同步节点。
可选地,在一种实施例中,所述线程分配数量大于1,所述分配模块包括:第一分配单元,用于若所述线程分配数量等于所述同步节点的数量时,为每个所述同步节点分配一个所述线程;第二分配单元,用于若所述线程分配数量大于所述同步节点的数量时,为每个所述同步节点分配至少一个所述线程,且为线程运行数量少的所述同步节点线程分配数量多的所述线程;第三分配单元,用于若所述线程分配数量小于所述同步节点的数量时,将每个所述线程分配至不同的所述同步节点,且被分配线程的同步节点的线程运行数量小于或等于未被分配线程的同步节点的线程运行数量。
实施例三
本实施例三还提供一种计算机设备,如可以执行程序的智能手机、平板电脑、笔记本电脑、台式计算机、机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。如图3所示,本实施例的计算机设备01至少包括但不限于:可通过***总线相互通信连接的存储器012、处理器011,如图3所示。需要指出的是,图3仅示出了具有组件存储器012和处理器011的计算机设备01,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
本实施例中,存储器012(即可读存储介质)包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器012可以是计算机设备01的内部存储单元,例如该计算机设备01的硬盘或内存。在另一些实施例中,存储器012也可以是计算机设备01的外部存储设备,例如该计算机设备01上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,存储器012还可以既包括计算机设备01的内部存储单元也包括其外部存储设备。本实施例中,存储器012通常用于存储安装于计算机设备01的操作***和各类应用软件,例如实施例二的数据同步装置等。此外,存储器012还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器011在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器011通常用于控制计算机设备01的总体操作。本实施例中,处理器011用于运行存储器012中存储的程序代码或者处理数据,例如数据同步方法等。
实施例四
本实施例四还提供一种计算机可读存储介质,如闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘、服务器、App应用商城等等,其上存储有计算机程序,程序被处理器执行时实现相应功能。本实施例的计算机可读存储介质用于存储数据同步装置,该计算机可读存储介质被处理器执行时实现实施例一的数据同步方法。
进一步地,所述计算机可读存储介质可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序等;存储数据区可存储根据区块链节点的使用所创建的数据等。
本申请所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
本申请可用于众多通用或专用的计算机***环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器***、基于微处理器的***、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何***或设备的分布式计算环境等等。本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。
以上仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (10)
1.一种数据同步方法,其特征在于,包括:
确定执行数据同步线程的数据处理能力;
确定消息队列中的消息主题;以及
在同步所述消息主题对应的数据时,根据所述数据处理能力和所述消息主题的历史流量信息,调整所述消息主题的线程分配数量。
2.根据权利要求1所述的数据同步方法,其特征在于,在同步所述消息主题对应的数据时,根据所述数据处理能力和所述消息主题的历史流量信息,调整消息主题的线程分配数量的步骤包括:
根据所述历史流量信息确定所述消息主题的数据量变化周期和间隔周期;
根据所述变化周期确定所述线程分配数量的调整时间;
根据所述间隔周期确定所述调整时间所依据的历史时间;
若当前时间达到所述调整时间时,根据所述数据处理能力和所述历史时间的数据量确定目标线程数;
通过所述目标线程数调整所述线程分配数量。
3.根据权利要求2所述的数据同步方法,其特征在于,根据所述数据处理能力和所述历史时间的数据量确定目标线程数的步骤包括:
根据所述数据处理能力确定在单位时长内处理数据量和所需线程数的对应关系;
根据所述历史时间的数据量确定所述单位时长内的历史数据量;以及
在所述对应关系中,确定与所述历史数据量对应的线程数,以得到所述目标线程数。
4.根据权利要求2所述的数据同步方法,其特征在于,根据所述变化周期确定所述线程分配数量的调整时间的步骤包括:
当所述变化周期不满足与时间的相关性要求时,确定所述调整时间为每间隔预定时长调整一次,其中,所述预定时长小于或等于所述预定周期;
当所述变化周期满足与时间的相关性要求时,确定所述调整时间为每间隔所述变化周期对应的时长调整一次。
5.根据权利要求1所述的数据同步方法,其特征在于,确定执行数据同步的线程的数据处理能力的步骤包括:
在所述消息队列的测试消息主题中写入满足测试量的测试数据;
订阅所述测试消息主题,以使所述线程消费所述测试数据;
记录所述线程的消费完成时间;以及
根据所述测试量和所述消费完成时间,确定所述线程的数据处理能力。
6.根据权利要求1所述的数据同步方法,其特征在于,在调整消息主题的线程分配数量的步骤之后,所述数据同步方法还包括:
将所述线程分配数量的线程分配至若干同步节点,其中,当所述线程分配数量大于1时,至少将两个所述线程分配至不同的同步节点。
7.根据权利要求6所述的数据同步方法,其特征在于,当所述线程分配数量大于1时,将所述线程分配数量的线程分配至若干同步节点的步骤包括:
若所述线程分配数量等于所述同步节点的数量时,为每个所述同步节点分配一个所述线程;
若所述线程分配数量大于所述同步节点的数量时,为每个所述同步节点分配至少一个所述线程,且为线程运行数量少的所述同步节点线程分配数量多的所述线程;
若所述线程分配数量小于所述同步节点的数量时,将每个所述线程分配至不同的所述同步节点,且被分配线程的同步节点的线程运行数量小于或等于未被分配线程的同步节点的线程运行数量。
8.一种数据同步装置,其特征在于,包括:
第一确定模块,用于确定执行数据同步线程的数据处理能力;
第二确定模块,用于确定消息队列中的消息主题;以及
调整模块,用于在同步所述消息主题对应的数据时,根据所述数据处理能力和所述消息主题的历史流量信息,调整所述消息主题的线程分配数量。
9.一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7任一项所述方法的步骤。
10.一种计算机可读存储介质,包括存储数据区和存储程序区,存储数据区存储根据区块链节点的使用所创建的数据,存储程序区存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011484355.4A CN112612583B (zh) | 2020-12-16 | 2020-12-16 | 数据同步方法、装置、计算机设备和可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011484355.4A CN112612583B (zh) | 2020-12-16 | 2020-12-16 | 数据同步方法、装置、计算机设备和可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112612583A true CN112612583A (zh) | 2021-04-06 |
CN112612583B CN112612583B (zh) | 2024-07-09 |
Family
ID=75239477
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011484355.4A Active CN112612583B (zh) | 2020-12-16 | 2020-12-16 | 数据同步方法、装置、计算机设备和可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112612583B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113360557A (zh) * | 2021-05-28 | 2021-09-07 | 青岛海信网络科技股份有限公司 | 一种数据集成速度的调整方法、装置、设备及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080295107A1 (en) * | 2007-05-23 | 2008-11-27 | Fabrizio Muscarella | Adaptive Thread Pool |
CN109739929A (zh) * | 2018-12-18 | 2019-05-10 | 中国人民财产保险股份有限公司 | 数据同步方法、装置及*** |
CN110688066A (zh) * | 2019-09-06 | 2020-01-14 | 苏州浪潮智能科技有限公司 | 一种数据处理方法、***、电子设备及存储介质 |
CN111625366A (zh) * | 2020-06-02 | 2020-09-04 | 深圳市网是科技有限公司 | 基于发布与订阅模型的弹性伸缩服务方法 |
-
2020
- 2020-12-16 CN CN202011484355.4A patent/CN112612583B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080295107A1 (en) * | 2007-05-23 | 2008-11-27 | Fabrizio Muscarella | Adaptive Thread Pool |
CN109739929A (zh) * | 2018-12-18 | 2019-05-10 | 中国人民财产保险股份有限公司 | 数据同步方法、装置及*** |
CN110688066A (zh) * | 2019-09-06 | 2020-01-14 | 苏州浪潮智能科技有限公司 | 一种数据处理方法、***、电子设备及存储介质 |
CN111625366A (zh) * | 2020-06-02 | 2020-09-04 | 深圳市网是科技有限公司 | 基于发布与订阅模型的弹性伸缩服务方法 |
Non-Patent Citations (1)
Title |
---|
袁震: "基于消息中间件的数据同步更新方法", 《兵工自动化》, vol. 32, no. 7, 15 July 2013 (2013-07-15), pages 93 - 96 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113360557A (zh) * | 2021-05-28 | 2021-09-07 | 青岛海信网络科技股份有限公司 | 一种数据集成速度的调整方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112612583B (zh) | 2024-07-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Xiao et al. | {AntMan}: Dynamic scaling on {GPU} clusters for deep learning | |
CN107291546B (zh) | 一种资源调度方法及装置 | |
CN111813513A (zh) | 基于分布式的实时任务调度方法、装置、设备及介质 | |
EP3129880B1 (en) | Method and device for augmenting and releasing capacity of computing resources in real-time stream computing system | |
CN112612607B (zh) | 基于消息队列的数据处理方法、装置、计算机设备和介质 | |
EP2728473B1 (en) | Systems and methods for instruction entity allocation and scheduling on multi-processors | |
WO2016119412A1 (zh) | 一种云平台上的资源伸缩方法和一种云平台 | |
CN111861412B (zh) | 面向完成时间优化的科学工作流调度方法及*** | |
CN111225050B (zh) | 云计算资源分配方法及装置 | |
CN109739627B (zh) | 任务的调度方法、电子设备及介质 | |
CN110599148B (zh) | 集群数据处理方法、装置、计算机集群及可读存储介质 | |
CN111190696A (zh) | Docker容器的部署方法、***、设备及存储介质 | |
CN112860387A (zh) | 分布式任务调度方法、装置、计算机设备及存储介质 | |
CN111694669A (zh) | 一种任务处理方法及装置 | |
CN112612583B (zh) | 数据同步方法、装置、计算机设备和可读存储介质 | |
CN109634812A (zh) | Linux***的进程CPU占用率控制方法、终端设备及存储介质 | |
CN115756756A (zh) | 基于gpu虚拟化技术的显存资源分配方法、装置和设备 | |
Kang et al. | Kernel Thread Scheduling in Real‐Time Linux for Wearable Computers | |
CN115640167A (zh) | 数据备份方法、装置、电子设备及存储介质 | |
CN113468442A (zh) | 资源位流量的分发方法、计算设备及计算机存储介质 | |
CN112130974B (zh) | 云计算资源配置方法、装置、电子设备与存储介质 | |
CN111858542B (zh) | 数据处理方法、装置、设备及计算机可读存储介质 | |
CN113703945A (zh) | 微服务集群的调度方法、装置、设备及存储介质 | |
CN114020430A (zh) | 一种分布式任务调度方法、装置、电子设备及存储介质 | |
CN112612606A (zh) | 消息主题的处理方法、装置、计算机设备和可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |