【技术实现步骤摘要】
基于分库分表的任务传输方法、装置及系统
本专利技术涉及数据库
,具体而言,涉及一种基于分库分表的任务传输方法、装置及系统。
技术介绍
随着互联网应用的广泛普及,对于一个大型的互联网应用,每天有几十亿的页面访问量,大量数据存储在数据库中。在大数据平台处理数据之前,需要把数据导入大数据平台的存储系统,一般采用ETL(数据提取、转换和加载,Extract-Transform-Load的缩写)技术。在ETL技术中,数据同步作为数据仓库的出口和入口,扮演着非常重要的角色,特别是离线数据同步,往往一个任务就需要同步上百GB甚至TB量级的数据,这对数据同步工具的稳定性要求非常高,同时因为抽取端数据库(DB,Database)支持并发读取,对抽取端和写入端数据库DB的压力也很大。正是由于大量数据的同步,使得人们可以更方便的关注到原本忽略的数据,使得数据同步过程中产生了更多的长尾任务,导致抽取端DB的压力和长尾渐渐成为数据同步的瓶颈。现有技术中的解决方案都是针对单库的(即一个任务只抽取一个库),即在底层同步工具上层做一层服务,在服务中进行调度控制,避免同时对一个库抽取的并发任务数过多。随着数据量的增加,单库已经无法满足大数据量的需求,需要将单个数据库进行拆分成多库多表存储数据。针对分库分表的单个任务而言,由于分库分表任务会对多个分库进行抽取,分库的抽取策略直接决定着任务抽取速度,使得上述针对单库的解决方案不再适用。针对现有技术中在基于分库分表的任务进行并发传输时,抽取端从分库分表DB中并发读取数据压力过大,导致并发传输分库分表的任务效率低的技术问题,目前尚未提出有效的 ...
【技术保护点】
一种基于分库分表的任务传输方法,其特征在于,包括:从分库分表中抽取待传输的任务集合,其中,所述任务集合包括:多个分库,以及每个分库所包含的分表;按照预先配置的总并发粒度从所述多个分库中调取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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。