基于分库分表的任务传输方法、装置及系统制造方法及图纸

技术编号:15639335 阅读:70 留言:0更新日期:2017-06-15 22:53
本发明专利技术公开了一种基于分库分表的任务传输方法、装置及系统。其中,该方法包括:从分库分表中抽取待传输的任务集合,其中,任务集合包括:多个分库,以及每个分库所包含的分表;按照预先配置的总并发粒度从多个分库中调取n个分表,n等于总并发粒度;将调取到的n个分表采用散列分配方式散列至不同的调度单元,其中,预先配置每个调度单元的单元并发粒度相同;将每个调度单元中包含的分表按照单元并发粒度并发传输至目标位置。本发明专利技术解决了现有技术中在基于分库分表的任务进行并发传输时,抽取端从分库分表DB中并发读取数据压力过大,导致并发传输分库分表的任务效率低的技术问题。

【技术实现步骤摘要】
基于分库分表的任务传输方法、装置及系统
本专利技术涉及数据库
,具体而言,涉及一种基于分库分表的任务传输方法、装置及系统。
技术介绍
随着互联网应用的广泛普及,对于一个大型的互联网应用,每天有几十亿的页面访问量,大量数据存储在数据库中。在大数据平台处理数据之前,需要把数据导入大数据平台的存储系统,一般采用ETL(数据提取、转换和加载,Extract-Transform-Load的缩写)技术。在ETL技术中,数据同步作为数据仓库的出口和入口,扮演着非常重要的角色,特别是离线数据同步,往往一个任务就需要同步上百GB甚至TB量级的数据,这对数据同步工具的稳定性要求非常高,同时因为抽取端数据库(DB,Database)支持并发读取,对抽取端和写入端数据库DB的压力也很大。正是由于大量数据的同步,使得人们可以更方便的关注到原本忽略的数据,使得数据同步过程中产生了更多的长尾任务,导致抽取端DB的压力和长尾渐渐成为数据同步的瓶颈。现有技术中的解决方案都是针对单库的(即一个任务只抽取一个库),即在底层同步工具上层做一层服务,在服务中进行调度控制,避免同时对一个库抽取的并发任务数过多。随着数据量的增加,单库已经无法满足大数据量的需求,需要将单个数据库进行拆分成多库多表存储数据。针对分库分表的单个任务而言,由于分库分表任务会对多个分库进行抽取,分库的抽取策略直接决定着任务抽取速度,使得上述针对单库的解决方案不再适用。针对现有技术中在基于分库分表的任务进行并发传输时,抽取端从分库分表DB中并发读取数据压力过大,导致并发传输分库分表的任务效率低的技术问题,目前尚未提出有效的解决方案。
技术实现思路
本专利技术实施例提供了一种基于分库分表的任务传输方法、装置及系统,以至少解决现有技术中在基于分库分表的任务进行并发传输时,抽取端从分库分表DB中并发读取数据压力过大,导致并发传输分库分表的任务效率低的技术问题。根据本专利技术实施例的一个方面,提供了一种基于分库分表的任务传输方法,包括:从分库分表中抽取待传输的任务集合,其中,任务集合包括:多个分库,以及每个分库所包含的分表;按照预先配置的总并发粒度从多个分库中调取n个分表,n等于总并发粒度;将调取到的n个分表采用散列分配方式散列至不同的调度单元,其中,预先配置每个调度单元的单元并发粒度相同;将每个调度单元中包含的分表按照单元并发粒度并发传输至目标位置。根据本专利技术实施例的另一方面,还提供了一种基于分库分表的任务传输装置,包括:抽取模块,用于从分库分表中抽取待传输的任务集合,其中,任务集合包括:多个分库,以及每个分库所包含的分表;调取模块,用于按照预先配置的总并发粒度从多个分库中共调取n个分表,n等于总并发粒度;处理模块,用于将调取到的n个分表采用散列分配方式散列至不同的调度单元,其中,预先配置每个调度单元的单元并发粒度相同;并发模块,用于将每个调度单元中包含的分表按照单元并发粒度并发传输至目标位置。根据本专利技术实施例的另一方面,还提供了一种基于分库分表的任务传输系统包括:源数据终端,用于存储分库分表;调度终端,与源数据终端通信,用于从分库分表中抽取待传输的任务集合,其中,任务集合包括:多个分库,以及每个分库所包含的分表,并按照预先配置的总并发粒度从多个分库中共调取n个分表,n等于总并发粒度,在将调取到的n个分表采用散列分配方式散列至不同的调度单元之后,将每个调度单元中包含的分表按照单元并发粒度并发传输,其中,预先配置每个调度单元的单元并发粒度相同;目标终端,与调度终端通信,用于接收调度终端并发传输来的任务集合。在本专利技术实施例中,如果希望减小分库分表任务的并行传输,可以在抽取待传输的任务集合之后,按照预先配置的总并发粒度从多个分库中调取n个分表,通过将调取到的n个分表采用散列分配方式散列至不同的调度单元,将每个调度单元中包含的分表按照单元并发粒度并发传输至目标位置,本方案可以根据总并发粒度和单元并发粒度对待传输的任务集合进行拆分,以均衡并行传输分库分表的任务。容易注意到,由于在抽取待传输的任务集合之后,需要在按照预先配置的总并发粒度从多个分库中调取n个分表,并通过将调取到的n个分表采用散列分配方式散列至不同的调度单元,就可以根据散列后的分表并行发送任务集合,达到均衡并发传输分库分表的任务,因此,通过本申请实施例所提供的方案,可以实现基于分库分表的任务传输,这样不仅实现了分库分表的任务传输,而且,在传输分库分表的任务时,在满足预先配置的总并发粒度的情况下,均衡传输分库分表的任务,因此,可以均衡分库分表中的多个任务,降低并发读取数据的压力,提高并发传输效率。由此,本申请提供的上述实施例的方案解决了现有技术中在基于分库分表的任务进行并发传输时,抽取端从分库分表DB中并发读取数据压力过大,导致并发传输分库分表的任务效率低的技术问题。附图说明此处所说明的附图用来提供对本专利技术的进一步理解,构成本申请的一部分,本专利技术的示意性实施例及其说明用于解释本专利技术,并不构成对本专利技术的不当限定。在附图中:图1是根据本申请实施例的一种基于分库分表的任务传输方法的计算机终端的硬件结构框图;图2是根据本申请实施例的一种基于分库分表的任务传输方法的流程图;图3是根据本申请实施例的分库分表对应调度管理单元的示意图;图4是根据本申请实施例的分库分表散列至调度管理单元的示意图;图5是根据本申请实施例的调度管理单元获取最优解的示意图;图6是根据本申请实施例的一种可选的基于分库分表的任务传输方法的交互流程图;图7是根据本申请实施例的一种基于分库分表的任务传输装置的示意图;图8是根据本申请实施例的一种可选的基于分库分表的任务传输装置的示意图;图9是根据本申请实施例的一种可选的基于分库分表的任务传输装置的示意图;图10是根据本申请实施例的一种可选的基于分库分表的任务传输装置的示意图;图11是根据本申请实施例的一种可选的基于分库分表的任务传输装置的示意图;图12是根据本申请实施例的一种可选的基于分库分表的任务传输装置的示意图;图13是根据本申请实施例的一种基于分库分表的任务传输系统的示意图;以及图14是根据本申请实施例的一种计算机终端的结构框图。具体实施方式为了使本
的人员更好地理解本专利技术方案,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分的实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本专利技术保护的范围。需要说明的是,本专利技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本专利技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。首先,在对本申请实施例进行描述的过程中出现的部分名词或术语适用于如下解释本文档来自技高网
...
基于分库分表的任务传输方法、装置及系统

【技术保护点】
一种基于分库分表的任务传输方法,其特征在于,包括:从分库分表中抽取待传输的任务集合,其中,所述任务集合包括:多个分库,以及每个分库所包含的分表;按照预先配置的总并发粒度从所述多个分库中调取n个分表,n等于所述总并发粒度;将调取到的所述n个分表采用散列分配方式散列至不同的调度单元,其中,预先配置每个调度单元的单元并发粒度相同;将所述每个调度单元中包含的分表按照所述单元并发粒度并发传输至目标位置。

【技术特征摘要】
1.一种基于分库分表的任务传输方法,其特征在于,包括:从分库分表中抽取待传输的任务集合,其中,所述任务集合包括:多个分库,以及每个分库所包含的分表;按照预先配置的总并发粒度从所述多个分库中调取n个分表,n等于所述总并发粒度;将调取到的所述n个分表采用散列分配方式散列至不同的调度单元,其中,预先配置每个调度单元的单元并发粒度相同;将所述每个调度单元中包含的分表按照所述单元并发粒度并发传输至目标位置。2.根据权利要求1所述的方法,其特征在于,在将调取到的所述n个分表采用散列分配方式散列至不同的调度单元之前,所述方法还包括:根据所述总并发粒度和所述单元并发粒度,确定所述调度单元的数量,并对所述每个调度单元分配对应的编号;通过如下公式计算得到任意一个分库中的每个分表Ti的散列分配值,其中,所述散列分配值用于表征所述分表Ti所散列至对应的调度单元的编号Tpos:Tpos=(TCount+offset)%tgCount,tgCount=totalChannel/tgChannel,其中,TCount为所述任意一个分库中每个分表Ti的编号,offset为每个分库向对应的调度单元分配的偏移量,初始值为0,totalChannel为所述总并发粒度,tgChannel为所述单元并发粒度;其中,所述n个分表分别按照计算得到的散列分配值散列至对应的调度单元。3.根据权利要求2所述的方法,其特征在于,在将所述每个调度单元中包含的分表按照所述单元并发粒度并发传输至目标位置的过程中,实时获取所述多个分库中除所述n个分表之外的m个分表,并按照所述总并发粒度将所述m个分表采用所述散列分配方式散列至所述不同的调度单元,其中,如果所述调度单元的线程被占满的情况下,将分配至对应的调度单元的分表放置在所述对应的调度单元的等待队列中,在所述调度单元的至少一个线程被释放之后,将所述等待队列中的分表调度至所述对应的调度单元中。4.根据权利要求1至3中任意一项所述的方法,其特征在于,在将所述每个调度单元中包含的分表按照所述单元并发粒度并发传输至目标位置之后,所述方法还包括:在任意一个调度单元中存在空闲的线程的情况下,获取每个分库的当前并发数,其中,所述当前并发数用于表征分库中已经被调度至对应的调度单元中的分表数量;根据所述每个分库的当前并发数,从所述任意一个调度单元的等待队列中调度对应数量的分表;将从对应的等待队列中调度对应数量的分表并发传输至所述目标位置。5.根据权利要求4所述的方法,其特征在于,根据所述每个分库的当前并发数,从所述任意一个调度单元的等待队列中调度对应数量的分表,包括:按照所述每个分库的当前并发数进行排序,确定属于不同分库的分表的调度优先级,其中,分库的当前并发数越低,所述当前并发数越低的分库中的分表的调度优先级越高;根据所述任意一个调度单元中存在的空闲线程数量,确定调度数量;在确定第一分库中的分表为所述调度优先级最高的分表之后,按照所述调度数量从所述等待队列中调度属于所述第一分库的分表。6.根据权利要求5所述的方法,其特征在于,在按照所述调度数量从所述等待队列中调度对应数量的分表之前,所述方法还包括:读取所述等待队列中属于所述第一分库的分表的数量;判断所述属于所述第一分库的分表的数量是否大于等于所述调度数量;其中,如果大于等于所述调度数量,则进入按照所述调度数量从所述等待队列中调度对应数量的分表的步骤;如果小于所述调度数量,则按照所述调度数量从所述等待队列中调度属于所述第一分库和属于其他分库的分表,其中,所述其他分库为当前并发数大于所述第一分库的分库。7.根据权利要求1所述的方法,其特征在于,对散列至不同的所述调度单元的分表标记分库标识,所述分库标识用于表征所述分表原始对应的分库。8.一种基于分库分表的任务传输装置,其特征在于,包括:抽取模块,用于从分库分表中抽取待传输的任务集合,其中,所述任务集合包括:多个分库,以及每个分库所包含的分表;调取模块,用于按照预先配置...

【专利技术属性】
技术研发人员:洪鲛
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛,KY

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1