CN109492018A - 一种数据同步系统自适应动态调整方法和装置 - Google Patents

一种数据同步系统自适应动态调整方法和装置 Download PDF

Info

Publication number
CN109492018A
CN109492018A CN201811060441.5A CN201811060441A CN109492018A CN 109492018 A CN109492018 A CN 109492018A CN 201811060441 A CN201811060441 A CN 201811060441A CN 109492018 A CN109492018 A CN 109492018A
Authority
CN
China
Prior art keywords
functional unit
data
synchronous
memory
thread
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
Application number
CN201811060441.5A
Other languages
English (en)
Other versions
CN109492018B (zh
Inventor
付铨
袁松彪
梅纲
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan Dream Database Co ltd
Original Assignee
Wuhan Dameng Database Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Wuhan Dameng Database Co Ltd filed Critical Wuhan Dameng Database Co Ltd
Priority to CN201811060441.5A priority Critical patent/CN109492018B/zh
Publication of CN109492018A publication Critical patent/CN109492018A/zh
Application granted granted Critical
Publication of CN109492018B publication Critical patent/CN109492018B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明涉及数据同步技术领域,具体涉及一种数据同步系统自适应动态调整方法和装置,其中方法包括:确定本次执行同步时功能组件可向系统申请的最大可用内存a;根据历史日志记录确定本次执行所需的最大缓存量b,从系统中获取相应内存并启动功能组件;功能组件向自己的消息队列中追加数据时实时更新当前已用缓存c,若c≥b*present.1且b<a,则向系统申请增加内存;本次执行结束后,将最大c值作为本次实际最大使用缓存记录到日志中,以便下次使用。通过在日志中增加历史执行最大缓存量,功能组件可根据日志记录确定本次执行所需的缓存使用量,并在运行时自适应调整内存;同时可根据实际运行动态增加一级线程和二级线程,提高数据同步性能。

Description

一种数据同步系统自适应动态调整方法和装置
【技术领域】
本发明涉及数据同步技术领域,具体涉及一种数据同步系统自适应动态调整方法和装置。
【背景技术】
在数据同步系统中,同步流程是指由数据读取类组件、数据转换类组件、数据装载类组件组成的数据抽取、转换、装载的数据同步任务,包含一个或多个数据读取类组件、零个或多个数据转换类组件、一个或多个数据装载类组件,一个同步流程构成一个同步任务。一个数据同步任务执行时会开启多个执行线程,首先针对整个同步流程开启一个一级线程以启动同步流程描述的同步任务,其次对同步流程中的每个功能组件开启一个或多个二级线程以执行各功能组件描述的功能任务。
数据同步服务器中可同时执行多个同步流程;对于每一个同步流程,同步服务器通过一个一级线程开启一个同步任务的运行,开启时为该同步任务分配能用的最大可用内存数量、每个功能组件可用到的内存和每个功能组件的二级处理线程数;其中,一级线程的数量一般在同步服务器的配置文件里设置,决定着一个数据同步服务器同时能执行多少个同步任务;二级线程的数量由用户在设计同步流程时设置,同一功能组件的二级线程有相同的处理逻辑。内存分配策略具体为:一级线程启动时通过计算得到该同步流程能用到的总的内存,每个功能组件均分总的内存,或所有功能组件的二级线程均分总的内存。
然而,在上述已有实现的方案中,往往还存在以下缺陷:
对于每一个同步任务,一级线程在启动时需通过计算分配同步流程总的可用内存以及各功能组件的可用内存,各功能组件无法自适应调整本次执行所需最大内存,分配内存过多造成资源浪费,而内存过少则直接影响性能,流程的反复定时调用执行缺乏自学习能力,且不能有效利用内存;同步流程在初始化时分配了最大可用内存的数量,但在执行过程中未必能全部用到,即使没用到,剩余的内存也不可能为其它执行的同步流程使用;
一级线程的数量决定了数据同步服务器同时能执行的同步任务最大数,即使计算机硬件服务器有大量的CPU空闲、内存空闲和网络空闲,在一级线程耗尽的情况下,也不会执行任务队列中新增的同步任务,缺乏根据实际硬件和运行环境动态增加或减少工作线程的自适应能力;当功能组件的上游组件的消息队列中数据缓存量很大时,说明该功能组件的处理能力不足,应该动态增加该功能组件的二级处理线程,上述方案不具备这样的能力。
鉴于此,克服上述现有技术所存在的缺陷是本技术领域亟待解决的问题。
【发明内容】
本发明需要解决的技术问题是:
传统的数据同步中,功能组件难以自适应调整本次执行所需最大内存,容易出现内存分配不合适,不能有效利用内存;而且无法根据运行情况动态增加二级线程或一级线程,影响同步服务器的整体性能。
本发明通过如下技术方案达到上述目的:
第一方面,本发明提供了一种数据同步系统自适应动态调整方法,包括:
确定本次执行同步时,功能组件可向系统申请的最大可用内存a;
根据历史执行同步时的日志记录确定所述功能组件本次执行所需的最大缓存量b,按照所述b从系统中获取相应内存并启动功能组件;其中,b≤a;
运行功能组件,所述功能组件向自己的消息队列中追加数据时实时更新所述功能组件当前已用缓存c,若发现c≥b*present.1且b<a,则所述功能组件向系统申请增加内存;
本次执行同步结束后,将所述功能组件生命周期中出现的最大c值作为本次实际最大使用缓存d记录到日志中,以便用于下一次执行同步时使用;
其中,present.1表示第一阈值比例。
优选的,在所述运行功能组件之后,所述方法还包括:所述功能组件向自己的消息队列中追加数据时,若发现c≥b*present.1,则所述功能组件通知其下游组件增加二级线程。
优选的,在所述运行功能组件之后,所述方法还包括:所述功能组件从其上游组件的消息队列中读取数据时,若发现上游组件的消息队列为空或消息队列中缓存数据量小于预设阈值,则通知所述上游组件增加二级线程。
优选的,当数据同步系统中的任一功能组件接收到增加二级线程的通知时,所述功能组件向系统发送增加二级线程的请求;
系统根据所述功能组件自身是否支持多线程处理、当前CPU利用率和/或当前网络利用率,确认是否批准所述功能组件增加二级线程;若批准,则所述功能组件增加二级线程;
其中,当所述功能组件自身支持多线程处理,且当前CPU利用率小于CPU利用率阈值,且当前网络利用率小于网络利用率阈值时,系统批准所述功能组件增加二级线程。
优选的,所述方法还包括:
当数据同步系统中新增同步任务,且从一级线程池无法获取可用的空闲线程时,则向系统发送增加一级线程的请求;
系统根据当前CPU利用率、当前网络利用率以及系统已用内存,确认是否批准增加一级线程;若批准,则增加一级线程用于执行新增同步任务;
其中,当前CPU利用率小于CPU利用率阈值,且当前网络利用率小于网络利用率阈值,且系统已用内存小于系统最大可用内存阈值时,系统批准增加一级线程。
优选的,在所述运行功能组件之后,所述方法还包括:
每当所述功能组件的消息队列中增加或被取出一条数据,对所述c值进行实时更新;
创建时间序列,每隔固定时间间隔将更新后的c值追加到所述时间序列,并判断所述时间序列是否稳定;
若所述时间序列稳定且c≤b*present.2,则释放b中的部分内存t,并更新当前可用内存b以及系统最大可使用缓存e;
其中,present.2表示第二阈值比例,b更新为b=b-t,e更新为e=e+t。
优选的,所述功能组件向系统申请增加内存后,若申请成功,则所述功能组件获取到内存,更新b值,继续执行同步过程;
若申请不成功,则暂停所述功能组件的二级线程,等待下游组件从所述功能组件的消息队列中取出数据后再继续执行同步过程。
优选的,所述确定本次执行同步时,功能组件可向系统申请的最大可用内存a,具体为:在本次执行同步任务前,根据系统最大可使用缓存e、一级线程的数量以及所述功能组件所在同步流程中总的功能组件数量,计算得到所述功能组件可向系统申请的最大可用内存a。
优选的,所述根据历史执行同步时的日志记录确定所述功能组件本次执行所需的最大缓存量b,具体为:
将最近一次执行同步时日志记录的d值作为本次执行的b值;或者,
将最近几次执行同步时日志记录的各d值取平均值或最大值,作为本次执行的b值;
其中,若本次执行同步流程为首次执行,则将所述最大可用内存a作为本次执行的b值。
第二方面,本发明还提供了一种数据同步系统自适应动态调整装置,用于实现上述第一方面所述的数据同步系统自适应动态调整方法,所述装置包括至少一个处理器和存储器,所述至少一个处理器和存储器之间通过数据总线连接,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令在被所述处理器执行后,用于完成第一方面所述的数据同步系统自适应动态调整方法。
本发明的有益效果是:
本发明提供的一种数据同步系统自适应动态调整方法中,在日志中增加历史执行同步时每次实际用到的最大缓存量,功能组件可根据之前的日志记录,自适应调整本次执行所需的最大缓存使用量,充分、有效地分配利用内存,在运行过程中还可根据实际需要动态调整内存;同时,执行过程中充分利用了计算机的硬件能力,根据实际运行情况动态增加一级线程和二级线程,增强了流程自适应调整处理能力,提高数据同步服务器的整体性能。
【附图说明】
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍。显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种数据同步流程的示意图;
图2为本发明实施例提供的功能组件的基本构成示意图;
图3为本发明实施例提供的一种数据同步系统自适应动态调整方法的流程图;
图4为本发明实施例提供的同步执行过程中释放内存的流程图;
图5为本发明实施例提供的同步服务器流程中同步任务的提交执行过程示意图;
图6为本发明实施例提供的一种数据同步系统自适应动态调整装置的架构图。
【具体实施方式】
为便于对本方案的理解,首先对数据同步流程中涉及到的各功能组件做简要介绍。参考图1,一个同步流程包含一个或多个数据读取类组件、零个或多个数据转换类组件、一个或多个数据装载类组件,一个同步流程构成一个同步任务。数据读取类组件用于从源数据源端处读取数据到自己的消息队列;数据转换类组件从上游连接的数据读取类组件的消息队列获取数据,经过清洗、转换等操作后放进自己的消息队列;数据装载类组件从上游的数据读取类组件或数据转换类组件的消息队列获取数据后,装载到目的数据源处。整个过程包含抽取、转换和装载,简称ETL。继续参考图1可知,各功能组件间的连接规则具体如下:数据读取类组件没有上游组件;数据转换类组件的上游组件是数据读取类组件或数据转换类组件;数据装载类组件的上游组件是数据读取类组件或数据转换类组件;数据读取类组件和数据转换类组件作为上游组件,可以同时连接到多个数据转类组件和/或数据装载类组件。
参考图2,一个功能组件的基本构成包含一个或多个二级线程和一个消息队列。其中,消息队列用于缓存该功能组件中二级线程处理后的数据;数据读取类组件的二级线程负责从源数据源端处读取数据;数据转换类组件的二级线程负责对从上游组件(数据读取类组件)的消息队列获取数据做清洗转换工作;数据装载类组件的二级线程负责从上游组件(数据读取类组件或数据转换类组件)的消息队列获取数据装载到目的数据源,其中,从上游组件获取的数据或立即转载到目的端数据源,或先缓存到自己的消息队列,达到一定数量后批量装载到目的端数据源。
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在本发明的描述中,术语“内”、“外”、“纵向”、“横向”、“上”、“下”、“顶”、“底”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明而不是要求本发明必须以特定的方位构造和操作,因此不应当理解为对本发明的限制。
此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。下面就参考附图和实施例结合来详细说明本发明。
实施例1:
本发明实施例提供了一种数据同步系统自适应动态调整方法,
为便于描述,采用字母a-e分别表示不同的缓存量,其中:
a值表示本次执行时功能组件可向系统申请的最大缓存量,记为最大可用内存:maxCacheSize;
b值表示本次执行时功能组件根据其可能所需的最大缓存量,已经从系统中获取到的最大缓存量,记为当前可用缓存:currentAvailableCacheSize;
c值表示本次执行时功能组件当前实际已经使用的缓存量,记为当前已用缓存:currentUsingCacheSize;
d值表示本次执行时功能组件的生命周期中实际使用的最大缓存量,即c值的最大值,记为本次实际最大使用缓存:maxCachedSize;
e值表示同步服务器中所有正在执行的同步流程的总的最大可用缓存量,记为系统最大可使用缓存:max_available_mem。
如图3所示,对于数据读取类组件、数据转换类组件以及数据装载类组件中的任一功能组件,在执行数据同步任务时具体包括以下步骤:
步骤10,确定本次执行同步时,功能组件可向系统申请的最大可用内存a。具体为,在本次执行同步任务前,根据系统最大可使用缓存e、一级线程的数量以及所述功能组件所在同步流程中总的功能组件数量,计算得到所述功能组件可向系统申请的最大可用内存a。其中,首先根据e值和一级线程的数量,得到当前所述功能组件所在同步流程的总内存,进而根据所在同步流程的总内存以及其中的功能组件数量,得到当前所述功能组件可分配到的最大可用内存a。
步骤20,根据历史执行同步时的日志记录确定所述功能组件本次执行所需的最大缓存量b,按照所述b从系统中获取相应内存并启动功能组件。
同步流程执行之前,需确定所述功能组件在本次执行可能所需要的最大缓存量b,进而从系统中获取,如果分配过多会造成内存浪费,而分配过少则会直接影响同步性能。本发明通过在日志中增加历史执行同步时每次的d值,在本次执行时参考历史日志记录确定本次执行所需的最大缓存量b。这样做的依据是在同一个软硬件环境下,相邻几次的数据同步具有相似性,在缓存数据方面体现为实际最大使用缓存具有相似性。因此,可将最近一次执行同步时日志记录的d值作为本次执行的b值;或者将最近几次执行同步时日志记录的各d值取平均值或最大值或其他计算方式得到的值,作为本次执行的b值;确定b值后,所述功能组件即可向系统获取相应的内存量b;此时b<a。其中,若本次执行同步流程为首次执行,无法参考日志记录,可直接将步骤10中计算得到的a值作为本次执行的b值,此时b=a。
步骤30,运行功能组件,所述功能组件向自己的消息队列中追加数据时实时更新所述功能组件当前已用缓存c,若发现c≥b*present.1且b<a,则所述功能组件向系统申请增加内存。
具体为,运行功能组件后,每当所述功能组件的消息队列增加一条数据(数据大小datasize),就对c值进行更新c=c+datasize;当增加某条数据后发现c≥b*present.1,如果消息队列中再继续增加下一条数据,所述功能组件当前从系统中已经获取到的内存b可能会不够用;如果此时b<a,则所述功能组件仍可向系统申请增加内存;如果此时b=a,则所述功能组件已经获取到系统能分配的最大可用内存,无法再向系统申请增加内存。其中,present.1可由用户根据需要配置,可设置在50%-100%之间,通常可选取比较贴近100%的比例,比如80%。所述功能组件向系统申请增加内存后,若申请成功,则所述功能组件获取到内存,更新b值,继续执行同步过程;若申请不成功,则暂停所述功能组件的二级线程,即阻塞二级线程,等待下游组件从所述功能组件的消息队列中取出数据后再继续执行同步过程。
步骤40,本次执行同步结束后,将所述功能组件生命周期中出现的最大c值作为本次实际最大使用缓存d记录到日志中,以便用于下一次执行同步时使用。其中,d值的确定方法具体为:在功能组件运行时,将d值初始化为0;每当所述功能组件的消息队列中增加一条数据,对所述c值进行更新,若更新后c>d,则更新d值:d=c;则在所述功能组件运行完整个生命周期后,即可得到c值的最大值d。参考步骤20可知,基于相邻几次的数据同步间的相似性,本次执行同步过程中记录的d值可直接作为下次执行同步过程时的b值;或者与更前几次的各d值一起取平均值或最大值或其他计算方式得到的值,作为下次执行同步过程时的b值。
本发明提供的数据同步系统自适应动态调整方法中,在日志中增加历史执行同步过程时功能组件实际用到的最大缓存量,使得功能组件可根据之前的日志记录,自适应调整本次执行所需的最大缓存使用量,充分、有效地分配利用内存,避免内存闲置浪费;同时在运行过程中,还可根据实际需要动态调整内存,提高同步性能。
按照传统方案,同步流程在初始化时分配了最大可用内存的数量,但在执行过程中未必能全部用到,为使得当前同步流程中所述功能组件没用到的内存可用于其它执行的同步流程,参考图4的流程图,在所述步骤30中运行功能组件之后,还包括以下方法:
步骤301,每当所述功能组件的消息队列中增加或被取出一条数据,对所述c值进行实时更新。同样假设增加或被取出的数据大小为datasize,则增加数据后c值更新为c=c+datasize,取出数据后c值更新为c=c-datasize。
步骤302,创建时间序列,每隔固定时间间隔将更新后的c值追加到所述时间序列,并判断所述时间序列是否稳定。所述时间间隔可由用户根据实际使用需求设置,比如可设置为5s,则每隔5s就将当前时刻更新得到的c值追加到所述时间序列。判断稳定性时可选取所述时间序列中的最近3-8次的c值,若各个c值依序前后变化值较小,则表示稳定。此处可根据需要设置一预设阈值,当c值变化量小于预设阈值时,即表示时间序列稳定。
步骤303,若所述时间序列稳定且c≤b*present.2,则释放b中的部分内存t,并更新当前可用内存b以及系统最大可使用缓存e;其中,present.2表示第二阈值比例,b更新为b=b-t,e更新为e=e+t。当各个c值稳定,且c≤b*present.2,说明所述功能组件当前获取到的内存b较大,本次执行同步无需这么大的内存,为了有效利用内存资源,则释放b中的部分内存t。其中,present.2由用户根据实际需要配置,通常可在50%左右选取,假设取60%,则c≤b*60%时释放内存,可选取t≤b*(1-present.2),则释放内存t后仍可保持内存够用,此处即为t≤b*40%。释放内存后b更新为b=b-t,e更新为e=e+t,如此一来,系统最大可使用缓存e值增大,多出来的内存t即可用于其它执行的同步流程使用,避免了内存闲置浪费。
结合本发明实施例,还存在一种优选的实现方案,为进一步提高系统根据实际硬件和运行环境动态调整工作线程的自适应能力,在运行功能组件之后,所述功能组件向自己的消息队列中追加数据时,若发现c≥b*present.1,则所述功能组件还通知其下游组件增加二级线程。另一方面,所述功能组件从其上游组件的消息队列中读取数据时,若发现上游组件的消息队列为空或消息队列中缓存数据量小于预设阈值,则通知所述上游组件增加二级线程。
结合本发明实施例,还存在一种优选的实现方案,为进一步提高系统根据实际硬件和运行环境动态调整工作线程的自适应能力,在数据同步时,当数据同步系统中新增同步任务,且从一级线程池无法获取可用的空闲线程时,则向系统发送增加一级线程的请求。
实施例2:
在上述实施例1的基础上,本发明实施例就同步过程中动态增加一级线程和二级线程提供了具体的实现方法。通过实施例1可知,在所述步骤30中,所述功能组件向自己的消息队列中追加数据时,若发现c≥b*present.1,则所述功能组件通知其下游组件增加二级线程。除此以外,所述功能组件还可通知其上游组件增加二级线程,具体为,所述功能组件从其上游组件的消息队列中读取数据时,若发现上游组件的消息队列为空或消息队列中缓存数据量小于预设阈值,则说明上游组件读取数据或转换数据的处理能力偏低,跟不上位于下游的所述功能组件的处理速度,此时通知所述上游组件增加二级线程。
由图1可知,数据同步系统中设置有多个功能组件,按照上下游顺序分别为数据读取类组件、数据转换类组件以及数据装载类组件。假设其中任一功能组件接收到来自其上游组件或下游组件发送来的增加二级线程的通知,则所述功能组件向系统发送增加二级线程的请求;系统根据所述功能组件自身是否支持多线程处理、当前CPU利用率和/或当前网络利用率,确认是否批准所述功能组件增加二级线程;若批准,则所述功能组件增加二级线程;其中,当所述功能组件自身支持多线程处理,且当前CPU利用率小于CPU利用率阈值,且当前网络利用率小于网络利用率阈值时,则说明所述功能组件能支持同时进行多个二级线程,且当前计算机硬件服务器还有一定的CPU空闲和网络空闲可以使用,系统批准所述功能组件增加二级线程。此处的CPU利用率阈值与网络利用率阈值均可由用户根据需要设置,比如可设为60%、70%等。其中,在本发明实施例中,系统中增设线程服务模块用于响应执行中的同步流程的功能组件新增二级线程的请求,假设各功能组件均支持多线程处理,则对于不同的功能组件有:
对于数据读取类组件,只有下游组件而没有上游组件,因此只能接收来自其下游组件(数据转换类组件或数据装载类组件)的通知。当所述数据读取类组件收到下游组件发送的增加二级线程的通知时,向所述线程服务模块发送增加二级线程的请求;所述线程服务模块根据当前CPU利用率、CPU利用率阈值、当前网络利用率、网络利用率阈值,确认是否批准所述数据读取类组件增加二级线程。
对于数据转换类组件,既有下游组件也有上游组件,可接收来自其上游组件(数据读取类组件)或下游组件(数据转换类组件或数据装载类组件)的通知。当所述数据转换类组件收到其上游组件或下游组件发送的增加二级线程的通知时,向所述线程服务模块发送增加二级线程的请求;所述线程服务模块根据当前CPU利用率和CPU利用率阈值,确认是否批准所述数据读取类组件增加二级线程。其中,对于数据转换类组件,一般不考虑网络空闲,判断时可只比较CPU利用率和CPU利用率阈值。
对于数据装载类组件,只有上游组件而没有下游组件,因此只能接收来自其上游组件(数据读取类组件或数据转换类组件)的通知。当所述数据装载类组件收到上游组件发送的增加二级线程的通知时,向所述线程服务模块发送增加二级线程的请求;所述线程服务模块根据当前CPU利用率、CPU利用率阈值、当前网络利用率、网络利用率阈值,确认是否批准所述数据装载类组件增加二级线程。
通过利用计算机的硬件能力,执行中的功能组件根据实际运行情况动态增加任一功能组件的二级线程,提高该功能组件的处理能力,进而避免上游组件的消息队列中数据缓存量过大出现阻塞的情况,提高了同步流程自适应调整处理能力,提高了同步的性能,且可能会释放更多的所需缓存,协助增加一级线程的数量。
参考图5,数据同步服务器中,一级线程的数量决定着一个数据同步服务器同时能执行多少个同步任务。在传统方案中,同步服务器中同步任务的提交执行过程具体如下:执行器通过检测任务队列,确认是否有新的同步任务到达;如果有新的同步任务到达,则从一级线程池取空闲线程;若取到空闲线程,则将新的同步任务交给取到的线程执行;若未取到空闲线程,则等待所述一级线程池中有空闲线程后继续执行。其中,任务队列中的同步任务由用户手动点击执行,提交到任务队列;或通过服务器内部的调度引擎根据用户的设置,将满足调度的流程提交到任务队列。
在本发明实施例中,所述执行器还可请求增加新的一级线程,系统中的所述线程服务模块还可用于响应执行器新增一级线程的请求,具体如下:
当数据同步系统中任务队列中有新增同步任务,且执行器从一级线程池无法获取可用的空闲线程时,执行器向所述线程服务模块发送增加一级线程的请求;所述线程服务模块根据当前CPU利用率、网络利用率以及系统已用内存,确认是否批准增加一级线程;若批准,则增加一级线程用于执行新增的同步任务;其中,当前CPU利用率小于CPU利用率阈值,且当前网络利用率小于网络利用率阈值,且系统已用内存小于系统最大可用内存阈值时,所述线程服务模块批准增加一级线程。此处的CPU利用率阈值与网络利用率阈值均可由用户根据需要设置,比如可设置为60%、70%等;系统最大可用内存阈值可由用户根据需要设置,比如可设置为系统最大可用内存的70%、80%等。
其中,上述新增的一级线程在同步流程执行完成后,看任务队列中是否有新增的等待执行的同步任务,若有则继续执行新的同步任务;若没有则结束执行,释放相应的CPU、网络及系统内存资源。
通过动态增加一级线程,充分利用了计算机的硬件能力,在当前一级线程耗尽的情况下,仍可利用计算机硬件服务器中的CPU空闲、内存空闲和网络空闲,新增一级线程以执行任务队列中的同步任务,增强了流程自适应调整处理能力,提高数据同步服务器的整体性能。
实施例3:
在实施例1和实施例2提供的一种数据同步系统自适应动态调整方法的基础上,本发明还提供了一种可用于实现上述方法的数据同步系统自适应动态调整装置,如图6所示,是本发明实施例的装置架构示意图。本实施例的数据同步系统自适应动态调整装置包括一个或多个处理器21以及存储器22。其中,图6中以一个处理器21为例。
所述处理器21和所述存储器22可以通过总线或者其他方式连接,图6中以通过总线连接为例。
所述存储器22作为一种数据同步系统自适应动态调整方法非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如实施例1和实施例2中的数据同步系统自适应动态调整方法。所述处理器21通过运行存储在所述存储器22中的非易失性软件程序、指令以及模块,从而执行数据同步系统自适应动态调整装置的各种功能应用以及数据处理,即实现实施例1和实施例2的数据同步系统自适应动态调整方法。
所述存储器22可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,所述存储器22可选包括相对于所述处理器21远程设置的存储器,这些远程存储器可以通过网络连接至所述处理器21。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
所述程序指令/模块存储在所述存储器22中,当被所述一个或者多个处理器21执行时,执行上述实施例1和实施例2中的数据同步系统自适应动态调整方法,例如,执行以上描述的图3和图4所示的各个步骤。
本领域普通技术人员可以理解实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,Random AccessMemory)、磁盘或光盘等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种数据同步系统自适应动态调整方法,其特征在于,包括:
确定本次执行同步时,功能组件可向系统申请的最大可用内存a;
根据历史执行同步时的日志记录确定所述功能组件本次执行所需的最大缓存量b,按照所述b从系统中获取相应内存并启动功能组件;其中,b≤a;
运行功能组件,所述功能组件向自己的消息队列中追加数据时实时更新所述功能组件当前已用缓存c,若发现c≥b*present.1且b<a,则所述功能组件向系统申请增加内存;
本次执行同步结束后,将所述功能组件生命周期中出现的最大c值作为本次实际最大使用缓存d记录到日志中,以便用于下一次执行同步时使用;
其中,present.1表示第一阈值比例。
2.根据权利要求1所述的数据同步系统自适应动态调整方法,其特征在于,在所述运行功能组件之后,所述方法还包括:所述功能组件向自己的消息队列中追加数据时,若发现c≥b*present.1,则所述功能组件通知其下游组件增加二级线程。
3.根据权利要求1所述的数据同步系统自适应动态调整方法,其特征在于,在所述运行功能组件之后,所述方法还包括:所述功能组件从其上游组件的消息队列中读取数据时,若发现上游组件的消息队列为空或消息队列中缓存数据量小于预设阈值,则通知所述上游组件增加二级线程。
4.根据权利要求2或3所述的数据同步系统自适应动态调整方法,其特征在于,当数据同步系统中的任一功能组件接收到增加二级线程的通知时,所述功能组件向系统发送增加二级线程的请求;
系统根据所述功能组件自身是否支持多线程处理、当前CPU利用率和/或当前网络利用率,确认是否批准所述功能组件增加二级线程;若批准,则所述功能组件增加二级线程;
其中,当所述功能组件自身支持多线程处理,且当前CPU利用率小于CPU利用率阈值,且当前网络利用率小于网络利用率阈值时,系统批准所述功能组件增加二级线程。
5.根据权利要求1所述的数据同步系统自适应动态调整方法,其特征在于,所述方法还包括:
当数据同步系统中新增同步任务,且从一级线程池无法获取可用的空闲线程时,则向系统发送增加一级线程的请求;
系统根据当前CPU利用率、当前网络利用率以及系统已用内存,确认是否批准增加一级线程;若批准,则增加一级线程用于执行新增同步任务;
其中,当前CPU利用率小于CPU利用率阈值,且当前网络利用率小于网络利用率阈值,且系统已用内存小于系统最大可用内存阈值时,系统批准增加一级线程。
6.根据权利要求1所述的数据同步系统自适应动态调整方法,其特征在于,在所述运行功能组件之后,所述方法还包括:
每当所述功能组件的消息队列中增加或被取出一条数据,对所述c值进行实时更新;
创建时间序列,每隔固定时间间隔将更新后的c值追加到所述时间序列,并判断所述时间序列是否稳定;
若所述时间序列稳定且c≤b*present.2,则释放b中的部分内存t,并更新当前可用内存b以及系统最大可使用缓存e;
其中,present.2表示第二阈值比例,b更新为b=b-t,e更新为e=e+t。
7.根据权利要求1所述的数据同步系统自适应动态调整方法,其特征在于,所述功能组件向系统申请增加内存后,若申请成功,则所述功能组件获取到内存,更新b值,继续执行同步过程;
若申请不成功,则暂停所述功能组件的二级线程,等待下游组件从所述功能组件的消息队列中取出数据后再继续执行同步过程。
8.根据权利要求1所述的数据同步系统自适应动态调整方法,其特征在于,所述确定本次执行同步时,功能组件可向系统申请的最大可用内存a,具体为:在本次执行同步任务前,根据系统最大可使用缓存e、一级线程的数量以及所述功能组件所在同步流程中总的功能组件数量,计算得到所述功能组件可向系统申请的最大可用内存a。
9.根据权利要求1所述的数据同步系统自适应动态调整方法,其特征在于,所述根据历史执行同步时的日志记录确定所述功能组件本次执行所需的最大缓存量b,具体为:
将最近一次执行同步时日志记录的d值作为本次执行的b值;或者,
将最近几次执行同步时日志记录的各d值取平均值或最大值,作为本次执行的b值;
其中,若本次执行同步流程为首次执行,则将所述最大可用内存a作为本次执行的b值。
10.一种数据同步系统自适应动态调整装置,其特征在于,包括至少一个处理器和存储器,所述至少一个处理器和存储器之间通过数据总线连接,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令在被所述处理器执行后,用于完成权利要求1-9任一所述的数据同步系统自适应动态调整方法。
CN201811060441.5A 2018-09-12 2018-09-12 一种数据同步系统自适应动态调整方法和装置 Active CN109492018B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811060441.5A CN109492018B (zh) 2018-09-12 2018-09-12 一种数据同步系统自适应动态调整方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811060441.5A CN109492018B (zh) 2018-09-12 2018-09-12 一种数据同步系统自适应动态调整方法和装置

Publications (2)

Publication Number Publication Date
CN109492018A true CN109492018A (zh) 2019-03-19
CN109492018B CN109492018B (zh) 2020-12-22

Family

ID=65689891

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811060441.5A Active CN109492018B (zh) 2018-09-12 2018-09-12 一种数据同步系统自适应动态调整方法和装置

Country Status (1)

Country Link
CN (1) CN109492018B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110096548A (zh) * 2019-03-21 2019-08-06 深圳壹账通智能科技有限公司 数据同步的方法、装置、计算机设备及计算机存储介质
CN110633321A (zh) * 2019-08-30 2019-12-31 中国人民财产保险股份有限公司 一种数据的同步方法、装置及设备
CN111459410A (zh) * 2020-03-25 2020-07-28 北京三快在线科技有限公司 内存空间分配方法、装置、电子设备及存储介质
CN111736985A (zh) * 2020-05-29 2020-10-02 苏州浪潮智能科技有限公司 一种加快日志落入磁盘的方法、系统、设备及介质
CN111858508A (zh) * 2020-06-17 2020-10-30 远光软件股份有限公司 一种日志系统的调控方法、装置、存储介质及电子设备
CN115905155A (zh) * 2023-01-05 2023-04-04 天津南大通用数据技术股份有限公司 一种逻辑日志同步的并行传输的方法
WO2023193630A1 (zh) * 2022-04-08 2023-10-12 北京字节跳动网络技术有限公司 一种峰值检测方法、装置、计算机设备和存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1996258A (zh) * 2006-12-28 2007-07-11 武汉虹旭信息技术有限责任公司 一种动态内存池的实现方法
CN101105793A (zh) * 2006-07-11 2008-01-16 阿里巴巴公司 数据仓库中的数据处理方法及系统
CN103810048A (zh) * 2014-03-11 2014-05-21 国家电网公司 一种面向资源利用最优的线程数量自动调整方法及装置
CN104090848A (zh) * 2014-07-16 2014-10-08 云南大学 一种周期性大数据处理的内存管理方法及装置
CN104199729A (zh) * 2014-08-27 2014-12-10 深圳市九洲电器有限公司 一种资源管理方法及系统
US9063992B2 (en) * 2011-09-21 2015-06-23 International Business Machines Corporation Column based data transfer in extract, transform and load (ETL) systems
CN104933160A (zh) * 2015-06-26 2015-09-23 河海大学 一种面向安全监测业务分析的etl框架设计方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101105793A (zh) * 2006-07-11 2008-01-16 阿里巴巴公司 数据仓库中的数据处理方法及系统
CN1996258A (zh) * 2006-12-28 2007-07-11 武汉虹旭信息技术有限责任公司 一种动态内存池的实现方法
US9063992B2 (en) * 2011-09-21 2015-06-23 International Business Machines Corporation Column based data transfer in extract, transform and load (ETL) systems
CN103810048A (zh) * 2014-03-11 2014-05-21 国家电网公司 一种面向资源利用最优的线程数量自动调整方法及装置
CN104090848A (zh) * 2014-07-16 2014-10-08 云南大学 一种周期性大数据处理的内存管理方法及装置
CN104199729A (zh) * 2014-08-27 2014-12-10 深圳市九洲电器有限公司 一种资源管理方法及系统
CN104933160A (zh) * 2015-06-26 2015-09-23 河海大学 一种面向安全监测业务分析的etl框架设计方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
付威: "面向实时数据仓库的达梦数据交换平台改进", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *
张智敏: "数据仓库之ETL并行调度研发", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110096548A (zh) * 2019-03-21 2019-08-06 深圳壹账通智能科技有限公司 数据同步的方法、装置、计算机设备及计算机存储介质
CN110633321A (zh) * 2019-08-30 2019-12-31 中国人民财产保险股份有限公司 一种数据的同步方法、装置及设备
CN110633321B (zh) * 2019-08-30 2022-06-03 中国人民财产保险股份有限公司 一种数据的同步方法、装置及设备
CN111459410A (zh) * 2020-03-25 2020-07-28 北京三快在线科技有限公司 内存空间分配方法、装置、电子设备及存储介质
CN111459410B (zh) * 2020-03-25 2023-08-29 北京三快在线科技有限公司 内存空间分配方法、装置、电子设备及存储介质
CN111736985A (zh) * 2020-05-29 2020-10-02 苏州浪潮智能科技有限公司 一种加快日志落入磁盘的方法、系统、设备及介质
CN111736985B (zh) * 2020-05-29 2023-01-06 苏州浪潮智能科技有限公司 一种加快日志落入磁盘的方法、系统、设备及介质
CN111858508A (zh) * 2020-06-17 2020-10-30 远光软件股份有限公司 一种日志系统的调控方法、装置、存储介质及电子设备
WO2023193630A1 (zh) * 2022-04-08 2023-10-12 北京字节跳动网络技术有限公司 一种峰值检测方法、装置、计算机设备和存储介质
CN115905155A (zh) * 2023-01-05 2023-04-04 天津南大通用数据技术股份有限公司 一种逻辑日志同步的并行传输的方法

Also Published As

Publication number Publication date
CN109492018B (zh) 2020-12-22

Similar Documents

Publication Publication Date Title
CN109492018A (zh) 一种数据同步系统自适应动态调整方法和装置
WO2017133623A1 (zh) 一种数据流处理方法、装置和系统
CN104750543B (zh) 线程创建方法、业务请求处理方法及相关设备
CN103412786B (zh) 一种高性能服务器架构系统及数据处理方法
KR102466984B1 (ko) 중앙 프로세싱 유닛(cpu)과 보조 프로세서 사이의 개선된 함수 콜백 메커니즘
WO2015106687A1 (en) Method and apparatus for processing computational task
US20110066830A1 (en) Cache prefill on thread migration
US8635626B2 (en) Memory-aware scheduling for NUMA architectures
CN110489217A (zh) 一种任务调度方法及系统
CN110677305A (zh) 一种云计算环境下的自动伸缩方法和系统
CN110888719A (zh) 一种基于web服务的分布式任务调度系统及方法
CN106534287B (zh) 一种会话表项的管理方法和装置
JP2009245047A (ja) メモリバッファ割当装置およびプログラム
CN108900626B (zh) 一种云环境下数据存储方法、装置及系统
CN110990154B (zh) 一种大数据应用优化方法、装置及存储介质
JP2013534681A (ja) 共有スタックの部分を割り当てるためのシステムおよび方法
CN110597606B (zh) 一种高速缓存友好的用户级线程调度方法
US20070226747A1 (en) Method of task execution environment switch in multitask system
WO2021143590A1 (zh) 一种分布式容器镜像构建调度系统及方法
US20130097382A1 (en) Multi-core processor system, computer product, and control method
CN105094751A (zh) 一种用于流式数据并行处理的内存管理方法
CN109491788A (zh) 一种虚拟化平台负载均衡实现方法及装置
KR100400165B1 (ko) 처리 시스템 스케쥴링
JP2000137692A (ja) 分散ノード間負荷分散方式
CN104216684A (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
CB02 Change of applicant information

Address after: 430000 High-tech Avenue 999, Donghu New Technology Development Zone, Wuhan City, Hubei Province

Applicant after: Wuhan dream database Co.,Ltd.

Address before: 430000 High-tech Avenue 999, Donghu New Technology Development Zone, Wuhan City, Hubei Province

Applicant before: WUHAN DAMENG DATABASE Co.,Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20220908

Address after: 430073 16-19 / F, building C3, future science and technology building, 999 Gaoxin Avenue, Donghu New Technology Development Zone, Wuhan City, Hubei Province

Patentee after: Wuhan dream database Co.,Ltd.

Patentee after: HUAZHONG University OF SCIENCE AND TECHNOLOGY

Address before: 430000 16-19 / F, building C3, future technology building, 999 Gaoxin Avenue, Donghu New Technology Development Zone, Wuhan, Hubei Province

Patentee before: Wuhan dream database Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20230814

Address after: 16-19/F, Building C3, Future Science and Technology Building, No. 999 Gaoxin Avenue, Donghu New Technology Development Zone, Wuhan City, Hubei Province, 430206

Patentee after: Wuhan dream database Co.,Ltd.

Address before: 430073 16-19 / F, building C3, future science and technology building, 999 Gaoxin Avenue, Donghu New Technology Development Zone, Wuhan City, Hubei Province

Patentee before: Wuhan dream database Co.,Ltd.

Patentee before: HUAZHONG University OF SCIENCE AND TECHNOLOGY

TR01 Transfer of patent right