CN106557492A - 一种数据同步方法和装置 - Google Patents
一种数据同步方法和装置 Download PDFInfo
- Publication number
- CN106557492A CN106557492A CN201510624904.6A CN201510624904A CN106557492A CN 106557492 A CN106557492 A CN 106557492A CN 201510624904 A CN201510624904 A CN 201510624904A CN 106557492 A CN106557492 A CN 106557492A
- Authority
- CN
- China
- Prior art keywords
- task
- machine
- resource
- flow speed
- resource group
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/254—Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
-
- 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
- G06F9/5038—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 considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- 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/5017—Task decomposition
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请实施例提供了一种数据同步方法和装置,其中的方法具体包括:将作业切分为多个任务;其中,所述任务具有对应的处理单元;在所述任务的处理过程中,监控所述任务的流量速度;在所述任务的流量速度符合预置条件时,对所述任务的处理单元进行休眠处理。本申请实施例可以避免运行上述任务的机器出现网卡流量打满等问题,从而能够提高生产系统的稳定性。
Description
技术领域
本申请涉及数据同步技术领域,特别是涉及一种数据同步方法和一种数据同步装置。
背景技术
数据同步是建立生产系统中数据源和数据目的端的数据一致性的过程。根据同步数据源类型,数据同步可被分为数据库同步、文件同步等;根据同步策略,数据同步可被分为离线同步和实时同步,其中,离线同步可以对存储系统数据抽取其快照(snapshot),其常被应用于BI(商务智能,BusinessIntelligence)分析、数据迁移等场景。
现有方案往往通过同步ETL(抽取、转换、装载,Extract Transform Load)工具来实现上述离线同步,相应的数据同步流程具体可以包括:抽取线上数据到离线分析平台,如ODPS(开放数据处理服务,Open Data ProcessingService)、Hadoop等,在上述离线分析平台进行大数据分析和计算,完成计算后将计算结果加载至线上数据库供给前台业务使用。
然而,Sqoop等现有同步ETL工具并未考虑到数据同步过程中的流量控制,这样,当多个作业(Job)在同一台机器上运行时,该台机器将会出现网卡流量打满等问题,因此影响了生产系统的稳定性。
发明内容
鉴于上述问题,提出了本申请实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种数据同步方法和相应的一种数据同步装置,可以避免运行上述任务的机器出现网卡流量打满等问题,从而能够提高生产系统的稳定性。
为了解决上述问题,本申请公开了一种数据同步方法,包括:
将作业切分为多个任务;其中,所述任务具有对应的处理单元;
在所述任务的处理过程中,监控所述任务的流量速度;
在所述任务的流量速度符合预置条件时,对所述任务的处理单元进行休眠处理。
优选的,所述任务的流量速度符合预置条件包括:所述任务的字节流量速度超出第一阈值,和/或,所述任务的记录流量速度超出第二阈值。
优选的,所述对所述任务的处理单元进行休眠处理的步骤,包括:
依据所述任务的流量速度、监控周期和流量速度上限,确定所述任务的处理单元的休眠时长;
控制所述任务的处理单元进入维持时间为所述休眠时长的休眠状态。
优选的,所述方法还包括:
针对用户创建资源组;其中,所述资源组包括至少一台机器;
利用所述资源组中机器的资源对所述用户的作业进行处理,其中,所述利用所述资源组中机器对所述用户的作业进行处理的步骤,包括:
利用所述资源组中机器将作业切分为多个任务;其中,所述任务具有对应的处理单元;
在所述任务的处理过程中,利用所述资源组中机器监控所述任务的流量速度;
在所述任务的流量速度符合预置条件时,利用所述资源组中机器对所述任务的处理单元进行休眠处理。
优选的,所述利用所述资源组中机器对所述用户的作业进行处理的步骤,包括:
在所述用户对应资源组中机器的剩余资源超出所述用户的作业所需的资源时,利用所述资源组中机器对所述用户的作业进行处理。
优选的,所述机器的资源包括:依据所述机器的物理资源抽象得到的槽位资源。
优选的,所述方法还包括:
当数据库存在可用的并发连接时,利用所述并发连接对所述任务进行处理;
在所述任务处理完成后,释放所述任务所占用的并发连接。
优选的,所述处理单元包括:读单元和写单元;
所述利用所述并发连接对所述任务进行处理的步骤,包括:
分别对所述作业对应的多个读单元和多个写单元进行乱序处理;
从乱序处理结果中选择一个读单元和一个写单元,组成相应的任务。
优选的,所述方法还包括:在当前时间处于任务对应数据库的时间窗口内时,进行所述任务的处理。
优选的,所述将作业切分为多个任务的步骤,包括:
根据所述作业对应数据表的列最小值和最大值,将列区间划分多个子区间;或者
根据所述作业对应文件的大小和切分份数,确定所述文件的切分点位,并依据所述切分点位对所述文件进行切分。
另一方面,本申请还公开了一种数据同步装置,包括:
切分模块,用于将作业切分为多个任务;其中,所述任务具有对应的处理单元;
监控模块,用于在所述任务的处理过程中,监控所述任务的流量速度;及
休眠模块,用于在所述任务的流量速度符合预置条件时,对所述任务的处理单元进行休眠处理。
优选的,所述任务的流量速度符合预置条件包括:所述任务的字节流量速度超出第一阈值,和/或,所述任务的记录流量速度超出第二阈值。
优选的,所述休眠模块,包括:
确定子模块,用于依据所述任务的流量速度、监控周期和流量速度上限,确定所述任务的处理单元的休眠时长;
控制子模块,用于控制所述任务的处理单元进入维持时间为所述休眠时长的休眠状态。
优选的,所述装置还包括:
创建模块,用于针对用户创建资源组;其中,所述资源组包括至少一台机器;
作业处理模块,用于利用所述资源组中机器的资源对所述用户的作业进行处理,其中,所述利用所述资源组中机器对所述用户的作业进行处理的过程,包括:
利用所述资源组中机器将作业切分为多个任务;其中,所述任务具有对应的处理单元;
在所述任务的处理过程中,利用所述资源组中机器监控所述任务的流量速度;
在所述任务的流量速度符合预置条件时,利用所述资源组中机器对所述任务的处理单元进行休眠处理。
优选的,所述作业处理模块,包括:
条件处理子模块,用于在所述用户对应资源组中机器的剩余资源超出所述用户的作业所需的资源时,利用所述资源组中机器对所述用户的作业进行处理。
优选的,所述机器的资源包括:依据所述机器的物理资源抽象得到的槽位资源。
优选的,所述装置还包括:
第一任务处理模块,用于当数据库存在可用的并发连接时,利用所述并发连接对所述任务进行处理;
释放模块,用于在所述任务处理完成后,释放所述任务所占用的并发连接。
优选的,所述处理单元包括:读单元和写单元;
所述第一任务处理模块,包括:
乱序处理子模块,用于分别对所述作业对应的多个读单元和多个写单元进行乱序处理;
组合子模块,用于从乱序处理结果中选择一个读单元和一个写单元,组成相应的任务。
优选的,所述装置还包括:
第二任务处理子模块,用于在当前时间处于任务对应数据库的时间窗口内时,进行所述任务的处理。
优选的,所述切分模块,包括:
第一切分子模块,用于根据所述作业对应数据表的列最小值和最大值,将列区间划分多个子区间;或者
第二切分子模块,用于根据所述作业对应文件的大小和切分份数,确定所述文件的切分点位,并依据所述切分点位对所述文件进行切分。
本申请实施例包括以下优点:
本申请实施例将作业切分为多个任务,其中的每个任务都可以具有对应的处理单元,由此在任务的处理过程,可以对任务的流量速度进行监控,并在所述任务的流量速度符合预置条件时,对所述任务的处理单元进行休眠处理;由于对所述任务的处理单元进行休眠处理,可使得任务的处理单元暂停对于任务的数据同步,因此可以降低运行上述任务的机器的网卡流量,避免运行上述任务的机器出现网卡流量打满等问题,从而提高生产系统的稳定性。
并且,本申请实施例可以对每个任务的流量速度进行单独监控,并依据监控结果对不同任务进行有区分的流量控制,使得不同任务的流量控制相互独立,例如,对于同一作业的多个任务,有的任务的流量速度超出了阈值,故可以对其处理单元进行休眠处理,以缓解运行这些任务的机器的网卡流量、内存资源等压力,而有的任务的流量速度未超出阈值,则可以不对其处理单元进行休眠处理,因此本申请实施例可以提高流量控制的合理性。
附图说明
图1是本申请的一种数据同步系统的结构示意图;
图2是本申请的一种数据同步方法实施例一的步骤流程图;
图3是本申请的一种数据同步方法实施例二的步骤流程图;
图4是本申请的一种数据同步方法实施例三的步骤流程图;
图5是本申请的一种数据同步方法实施例四的步骤流程图;
图6是本申请的一种数据同步方法实施例五的步骤流程图;
图7是本申请的一种数据同步系统的结构示意图;
图8是本申请的一种数据同步的状态机的示意图;
图9是本申请的一种数据同步装置实施例一的结构框图;
图10是本申请的一种数据同步装置实施例二的结构框图;
图11是本申请的一种数据同步装置实施例三的结构框图;及
图12是本申请的一种数据同步装置实施例四的结构框图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
本申请实施例可以应用于异构数据源、同构数据源等任意的数据源头和目的端之间的数据同步,用于通过对任务的处理过程中的流量速度进行控制,避免运行上述任务的机器出现网卡流量打满、内存溢出等问题,从而提高生产系统的稳定性。
参照图1,示出了本申请的一种数据同步系统的结构示意图,其具体可以包括:同步中心101和同步引擎102;其中,同步引擎102具体可以包括:调度单元121和处理单元122;
其中,同步中心101用于接收用户提交的作业,并将上述作业提交到调度单元121;
调度模块121用于将作业切分为多个任务(Task),并对多个任务进行调度执行;
处理单元122可用于对上述作业进行处理,上述处理单元122具体可以包括:读单元(Reader)1221、通道(Channel)1222和写单元(Writer)1223,其中,读单元1221可用于从数据源头加载数据,并存入作为缓冲区的通道1222,写单元1223可用于从通道1222读取数据,并将读取的数据写入目的端。
需要说明的是,通道1222作为读写的中转缓冲区,其内存空间的大小可被控制。例如,第一控制参数transport.channel.capacity可用于控制通道1222能够放入数据记录的条数,其值可以为512等数值;又如,第二控制参数transport.channel.byteCapacity可用于控制通道1222能够甭管放入数据记录的字节大小,例如,其可以为8MB大小的堆栈空间。
另外,在本申请的一种可选实施例中,为了保障多线程处理的安全性,需要对通道1222的读写操作进行加锁;并且,在向通道1222中存取数据时,可以对多个数据批量存取,以避免每个数据进行存取所导致的频繁加锁问题,从而能够提高数据同步性能。
方法实施例一
参照图2,示出了本申请的一种数据同步方法实施例一的步骤流程图,具体可以包括如下步骤:
步骤201、将作业切分为多个任务;其中,所述任务具有对应的处理单元;
本申请实施例中,作业可以为对用户提供的视角,在作业的处理过程中,可以根据切分逻辑将作业切分为多个任务,其中的每个任务都可以具有对应的处理单元,这样,在任务的处理过程,可以对每个任务的流量速度进行单独监控,由于可以考虑到不同任务的处理过程的差异性,因此,可以根据每个任务的流量速度对不同任务进行有区分的流量控制。
例如,在本申请的一种应用示例1中,作业被切分为5个任务:任务1、任务2、任务3、任务4和任务5,其中,任务1和任务3的流量速度符合预置条件,而任务2、任务4和任务5的流量速度不符合预置条件,故可以仅对任务1和任务3进行流量控制,而可以不对任务2、任务4和任务5进行流量控制。
在本申请的一种可选实施例中,所述任务的数量可以等于作业速度与通道速度的比值。其中,作业速度、通道速度可以由用户指定,也可依据经验确定,本申请实施例对于作业速度、通道速度和任务的具体数量不加以限制。
需要说明的是,本申请实施例中虽然对任务的流量速度进行了控制,但是由于本申请实施例可以通过多处理单元对应的多处理线程实现多个任务的并发处理,因此本申请实施例不会影响到作业的执行速度,而且还能够提高作业的处理效率和数据同步效率。
本申请实施例可以提供将作业切分为多个任务的如下技术方案:
技术方案1、
技术方案1可以适用于RDBMS(关系数据库管理系统,RelationalDatabase Management System)等类似的应用场景,其可以将列区间划分多个子区间,形成SQL(结构化查询语言,Structured Query Language)Where字句以得到各个任务的读取SQL;具体地,其可以根据所述作业对应数据表的列最小值和最大值,将列区间划分多个子区间。
在本申请的一种应用示例2中,假设关系数据库Mysql的demo表有列id和name两个字段,其中id的取值范围为[1,100],假设需要切分的任务的数量为5,则切分得到的区间可以为:[1<=id<20],[20<=id<40],[40<=id<60],[60<=id<80],[80<=id<100],[id is null];可以理解,上述5只是作为任务的数量的示例,而不理解为本申请实施例对于任务的数量的应用限制。
对于上述应用示例2,在区间切分完成后,可以通过多个处理单元对应的多处理线程并发处理各个区间的数据。可选地,为了便于管理,可以将多个区间对应的任务组成一个任务组进行管理。可选地,为了减少资源消耗,可以采用一个进程对一个任务组的任务进行管理,并在该进程下针对每个任务建立对应的处理线程,上述处理线程可用于执行上述处理单元对应的操作,也即,上述针对每个任务建立对应的处理线程的过程具体可以包括:将1个读单元、1个写单元和一个Channel关联起来,放入一个处理线程执行,通常,每个任务可以具有对应的一个处理线程。
技术方案2、
技术方案2可以适用于ODPS、本地文件、FTP(文件传输协议,File TransferProtocol)等类似的应用场景,其可以根据所述作业对应文件的大小和切分份数,确定所述文件的切分点位,并依据所述切分点位对所述文件进行切分。
在实际应用中,可以将ODPS的一个数据表的数据抽象为一个文件,根据所述作业对应文件的大小和切分份数,确定所述文件的切分点位,并依据所述切分点将文件切分为多个分块,从而可以利用多处理线程进行各个分块的读取、缓冲和写入等处理。
以上对将作业切分为多个任务的技术方案1和技术方案2进行了介绍,可以理解,本领域技术人员可以根据实际应用需求,采用上述技术方案中的任一,或者,还可以采用将作业切分为多个任务的其他技术方案。
在本申请的一种可选实施例中,在OSS(对象存储服务,Object StorageService)的应用场景下,还可以根据文件力度对作业进行切分,假设一个bucket(桶)中有多个object(对象),则可以配置一个object名称前缀表示需要拖取的object范围,如果有10个object需要同步,则可以将一个bucket对应的作业切分为10个Task,以实现10个object的并发处理。
在本申请的另一种可选实施例中,在OTS(开放结构化数据服务,OpenTable Service)的应用场景下,可以根据OTS数据的数据存储分区对作业进行切分等。
可以理解,本领域技术人员可以根据数据源头的特性,采用相匹配的将作业切分为多个任务的技术方案,本申请实施例对于将作业切分为多个任务的具体技术方案不加以限制。
步骤202、在所述任务的处理过程中,监控所述任务的流量速度;
在本申请的一种可选实施例中,可以通过汇报方式监控任务的流量,并根据所监控的流量计算任务的当前流量速度,其中,当前流量速度可以为单位时间内流过通道的流量。
在本申请的另一种可选实施例中,上述通过汇报方式监控任务的流量的过程可以为:采用处理单元对应的处理线程进行任务的处理,以实现任务的数据同步,并且,处理单元对应的处理线程可以向对应的进程汇报任务的流量速度,进程可以向同步引擎汇报作业的多个任务的流量速度,以使同步引擎得到所有作业的所有任务的流量速度。可以理解,上述通过汇报方式监控任务的流量速度只是作为可选实施例,实际上,本领域技术人员可以根据实际应用需求,采用监控任务的流量速度的任意技术方案,本申请实施例对于通过汇报方式监控任务的流量速度的具体技术方案不加以限制。
在实际应用中,任务的流量速度具体可以包括:任务的字节(Byte)流量速度和/或任务的记录流量速度(Record Per Second);其中,任务的字节流量速度可用单位时间内流过通道的字节数来表示,任务的记录流量速度可用于单位时间内读取的数据记录的条数来表示,可以理解,本申请实施例对于任务的流量速度的具体衡量方式不加以限制。
步骤203、在所述任务的流量速度符合预置条件时,对所述任务的处理单元进行休眠处理。
本申请实施例中,对所述任务的处理单元进行休眠处理,可使得任务的处理单元暂停对于任务的数据同步,因此可以降低运行上述任务的机器的网卡流量,节省运行上述任务的机器的内存资源,避免运行上述任务的机器出现网卡流量打满问题,从而提高生产系统的稳定性;并且,对所述任务的处理单元进行休眠处理,还可以将任务的流量速度控制在流量速度上限内,因此可以提高流量速度的稳定性。
在实际应用中,对上述任务的处理单元进行休眠处理的过程具体可以包括:对上述处理单元对应的处理线程进行休眠处理,以使上述处理线程暂停CPU(中央处理器)的调度执行。
在本申请的一种可选实施例中,所述任务的流量速度符合预置条件具体可以包括:所述任务的字节流量速度超出第一阈值,和/或,所述任务的记录流量速度超出第二阈值。其中,上述第一阈值和第二阈值可由用户指定,也可由同步引擎根据经验值确定,本申请实施例对于具体的第一阈值和第二阈值不加以限制。
在本申请的另一种可选实施例中,所述对所述任务的处理单元进行休眠处理的步骤,具体可以包括:
步骤S11、依据所述任务的流量速度、监控周期和流量速度上限,确定所述任务的处理单元的休眠时长;
步骤S12、控制所述任务的处理单元进入维持时间为所述休眠时长的休眠状态。
其中,监控周期可用于表示监控任务的流量速度的周期,其可以通过进程向同步引擎汇报任务的流量速度的周期、或者两次汇报之间的间隔来表示,例如,监控周期可以为20毫秒等,可以理解,本申请实施例对于具体的监控周期不加以限制。
在本申请的一种应用示例中,确定所述任务的处理单元的休眠时长的公式可以为:(流量速度*监控周期)/流量速度上限-监控周期,可以理解,本申请实施例对于休眠时长的具体确定方法不加以限制。
综上,本申请实施例将作业切分为多个任务,其中的每个任务都可以具有对应的处理单元,由此在任务的处理过程,可以对任务的流量速度进行监控,并在所述任务的流量速度符合预置条件时,对所述任务的处理单元进行休眠处理;由于对所述任务的处理单元进行休眠处理,可使得任务的处理单元暂停对于任务的数据同步,因此可以降低运行上述任务的机器的网卡流量,节省运行上述任务的机器的内存资源,避免运行上述任务的机器出现网卡流量打满、内存溢出等问题,从而提高生产系统的稳定性。
并且,本申请实施例可以对每个任务的流量速度进行单独监控,并依据监控结果对不同任务进行有区分的流量控制,使得不同任务的流量控制相互独立,例如,对于同一作业的多个任务,有的任务的流量速度超出了阈值,故可以对其处理单元进行休眠处理,以缓解运行这些任务的机器的网卡流量、内存资源等压力,而有的任务的流量速度未超出阈值,则可以不对其处理单元进行休眠处理,因此本申请实施例可以提高流量控制的合理性。
方法实施例二
参照图3,示出了本申请的一种数据同步方法实施例二的步骤流程图,可以应用于同步引擎的同步进程,具体可以包括如下步骤:
步骤301、将作业切分为多个任务;其中,所述任务具有对应的处理单元;
步骤302、获取本次的汇报内容;其中,所述汇报内容为作业的处理进程向同步进程汇报的、作业的多个任务的当前流量;
步骤303、判断当前时间距离上次汇报时间的间隔是否达到监控周期,若是,则执行步骤304,否则,返回执行步骤302;
步骤304、判断所述当前流量的格式为字节还是记录;
步骤305、在当前流量的格式为字节时,根据本次的汇报内容、上次的汇报内容、及该两次汇报内容之间的时间间隔,计算当前字节流量速度;
步骤306、判断当前字节流量速度是否超出第一阈值,若是,则执行步骤307,否则,返回执行步骤302;
步骤307、依据所述任务的当前字节流量速度、该两次汇报内容之间的时间间隔和第一阈值,确定所述任务的处理单元的休眠时长;
步骤308、在当前流量的格式为记录时,根据本次的汇报内容、上次的汇报内容、及该两次汇报内容之间的时间间隔,计算当前记录流量速度;
步骤309、判断当前记录流量速度是否超出第二阈值,若是,则执行步骤310,否则,返回执行步骤302;
步骤310、依据所述任务的当前记录流量速度、该两次汇报内容之间的时间间隔和第二阈值,确定所述任务的处理单元的休眠时长;
步骤311、控制所述任务的处理单元进入维持时间为所述休眠时长的休眠状态。
方法实施例三
参照图4,示出了本申请的一种数据同步方法实施例三的步骤流程图,具体可以包括如下步骤:
步骤401、针对用户创建资源组;其中,所述资源组具体可以包括至少一台机器;
步骤402、利用所述资源组中机器的资源对所述用户的作业进行处理,其中,所述利用所述资源组中机器对所述用户的作业进行处理的步骤402,具体可以包括:
步骤421、利用所述资源组中机器将作业切分为多个任务;其中,所述任务具有对应的处理单元;
步骤422、在所述任务的处理过程中,利用所述资源组中机器监控所述任务的流量速度;
步骤423、在所述任务的流量速度符合预置条件时,利用所述资源组中机器对所述任务的处理单元进行休眠处理。
相对于方法实施例一和方法实施例二,本实施例还可以针对用户创建资源组,并利用所述资源组中机器的资源对所述用户的作业进行处理,因此可以实现用户之间同步资源的隔离,从而可以避免不同用户的作业之间的相互影响。由于云计算通常要求多个用户(两个无关使用者或租户)之间资源隔离,一个用户对资源的占用不应该影响另外一个用户对资源的使用,因此,本实施例可以适用于云计算的场景。
本申请实施例中,所述机器的资源具体可以包括:依据所述机器的物理资源抽象得到的槽位资源。每台机器都有其对应的物理资源,具体可以包括CPU、磁盘、内存、网卡等,则可以对上述物理资源进行抽象,得到槽位资源(SlotNumber),通常,机器的性能越强则槽位资源越多,机器的性能越差则槽位资源越少。
在本申请实施例的数据同步过程中,可以针对每个用户创建一个资源组并设定该资源组对应机器的槽位资源;由于用户的作业运行在对应的资源组中,资源组之间的作业互不干扰,因此可以避免不同用户的作业之间的相互影响。
需要说明的是,除了步骤421-步骤423外,利用所述资源组中机器的资源对所述用户的作业进行处理还可以包括其它操作,如为任务分配机器的资源的操作,利用机器的资源对任务进行处理的操作等,本申请实施例对于利用所述资源组中机器的资源对所述用户的作业进行处理的具体过程不加以限制。
由于每个作业或任务都将占用的槽位资源,故在本申请的一种可选实施例中,所述利用所述资源组中机器对所述用户的作业进行处理的步骤,具体可以包括:在所述用户对应资源组中机器的剩余资源超出所述用户的作业所需的资源时,利用所述资源组中机器对所述用户的作业进行处理。同时,在所述用户对应资源组中机器的剩余资源未超出所述用户的作业所需的资源时,可以对所述用户的作业进行排队处理,直至所述用户对应资源组中机器的剩余资源超出所述用户的作业所需的资源,上述处理可以避免运行上述任务的机器出现内存溢出问题,从而能够提高生产系统的稳定性。在本申请的一种应用示例中,可以根据用户指定的预期切分数目ChannelNumber,计算预期消耗的槽位资源,并将计算结果作为用户的作业所需的资源,这里,预期切分数目可用于表示同时可能并发执行的任务数目。可以理解,本申请实施例对于用户的作业所需的资源的具体确定方式不加以限制。
在本申请的另一种可选实施例中,上述利用所述资源组中机器对所述用户的作业进行处理的过程可以为,针对每个任务分配对应的槽位资源,利用上述槽位资源进行任务的处理,并在任务完成后,释放对应的槽位资源,以节省运行作业的机器的槽位资源。在本申请的一种应用示例中,对于一台96GB内存、千兆网卡、32Core机器,可以设定其槽位资源为160,针对每个任务分配的槽位资源可以为2,可以理解,上述机器的槽位资源和为每个任务分配的槽位资源均作为示例,实际上,本领域技术人员可以根据实际应用需求确定机器的槽位资源和为每个任务分配的槽位资源的具体数值。可以理解,实际切分得到的任务数目可能超出预期切分数目ChannelNumber,此种情况下,可以对超出的任务进行排队处理。
方法实施例四
参照图5,示出了本申请的一种数据同步方法实施例四的步骤流程图,具体可以包括如下步骤:
步骤501、将作业切分为多个任务;其中,所述任务具有对应的处理单元;
步骤502、在所述任务的处理过程中,监控所述任务的流量速度;
步骤503、在所述任务的流量速度符合预置条件时,对所述任务的处理单元进行休眠处理;
步骤504、当数据库存在可用的并发连接时,利用所述并发连接对所述任务进行处理;
步骤505、在所述任务处理完成后,释放所述作业所占用的并发连接。
在数据同步过程中,每个数据库提高的数据库连接数是有限的。以数据源头数据库(目的端数据库类似,相互参考即可)为例,在数据抽取时,每个数据源头数据库能够提供的并发连接数是有限的,而往往同一个数据库会被多个同步作业抓取快照数据(可能是同一个库的多个表),一味的增加并发连接数可能引发数据库负载过重。
相对于方法实施例一,本实施例描述了任务的处理过程,具体地,当数据库存在可用的并发连接时,可以利用所述并发连接对所述作业进行处理,由于当数据库不存在可用的并发连接时,可以对作业进行等待处理,而不是增加并发连接数,因此能够避免一位增加并发连接数、引发的数据库负载过重的问题,从而能够提高生产系统的稳定性。
在实际应用中,可以针对每个数据库配置一个能够支持的预置并发连接数,通常,一个任务占用一个并发连接,则在利用所述并发连接对所述任务进行处理的过程中,当前并发连接数可以等于预置并发连接数减1,在当前并发连接数大于0时,表示存在可用的并发连接,在当前并发连接数小于等于0时,表示不存在可用的并发连接。在任务处理完成后,可以将占用的并发连接释放,此种情况下当前并发连接数可以加1,从而使释放的并发连接能够支持新的任务。
在本申请的一种可选实施例中,所述处理单元具体可以包括:读单元和写单元,则所述利用所述并发连接对所述任务进行处理的步骤,具体可以包括:
步骤S21、分别对所述作业对应的多个读单元和多个写单元进行乱序处理;
步骤S22、从乱序处理结果中选择一个读单元和一个写单元,组成相应的任务。
本可选实施例对所述作业对应的多个任务的读单元、多个通道和多个写单元等处理单元进行乱序处理,能够避免并发连接落到同一个数据库上,降低数据库的压力。
在本申请的一种应用示例中,假设作业被切分为5个任务:任务1、任务2、任务3、任务4和任务5,假设任务1、任务2、任务3、任务4和任务5对应的并发连接分别为并发连接1、并发连接2、并发连接3、并发连接4和并发连接5,则可以将任务1、任务2、任务3、任务4和任务5对应的多个读单元放入一个数组并乱序,多个写单元放入一个数组并乱序,假设读单元的乱序结果为:任务1的读单元1、任务5的读单元5、任务4的读单元4、任务2的读单元2和任务1的读单元1,写单元的乱序结果为:任务5的写单元5、任务3的写单元3、任务2的写单元2、任务1的写单元1和任务4的写单元4,则根据乱序结果组成的新任务分别为,新任务1:任务1的读单元1和任务5的写单元5,新任务2:任务5的读单元5和任务3的写单元3,新任务3:任务4的读单元4和任务2的写单元2,新任务4:任务2的读单元2和任务1的写单元1,新任务5:任务1的读单元1和任务4的写单元4,由于新任务1占用的是并发连接1和并发连接5,新任务2占用的是并发连接5和并发连接3,因此,能够避免并发连接落到同一个并发连接对应的数据库上,降低数据库的压力。
本可选实施例适用于分库分表的读取等应用场景。例如,在数据业务量非常大导致超出单一数据库的承载能力的情况下,可以对数据库进行分库分表,分库是指将海量数据由一个数据库存储管理拆分为多个数据库存储管理,分表是指将海量数据由一个数据表存储管理拆分为多个数据表存储管理,具体地,可以按照地理区域(如北京和江苏具有不同的分库)、生产时间等因素进行数据库的分库分表;上述分库分表在应用层可以表现为一个逻辑表,一个逻辑表可以代表1024个物理表,该1024个物理表位于不同分库下的多个分表。
通常,用户的作业针对的是一个逻辑表,例如,该作业可用于将1024个物理表的内容同步至目的端,假设该作业被切分为1024个任务,槽位资源允许并发处理的任务数量为30,则为了避免并发处理的30个任务对应的并发连接落在相同的分库上,可以对该1024个任务进行乱序处理,依据乱序处理结果组合得到对应的新任务,并重新并发处理新任务。
方法实施例五
参照图6,示出了本申请的一种数据同步方法实施例五的步骤流程图,具体可以包括如下步骤:
步骤601、将作业切分为多个任务;其中,所述任务具有对应的处理单元;
步骤602、在当前时间处于任务对应数据库的时间窗口内时,进行所述任务的处理;
步骤603、在所述任务的处理过程中,监控所述任务的流量速度;
步骤604、在所述任务的流量速度符合预置条件时,对所述任务的处理单元进行休眠处理。
由于数据同步对数据库的性能消耗较大,故有些数据库有严格的性能要求,只有业务低峰期才能进行数据拖取,以避免数据同步影响线上数据库的性能,保障线上业务的稳定。
相对于方法实施例一,本实施例可以针对数据库配置时间窗口,并在当前时间处于所述作业对应数据库的时间窗口内时,处理上述作业,在当前时间不处于所述作业对应数据库的时间窗口内时,等待时间窗口的到来,因此能够避免数据同步影响线上数据库的性能。
在实际应用中,时间窗口可用于表示数据库对应业务的低峰时期,其可以包括:开始时间begin_time和结束时间end_time,在数据同步前,可以作业调度时,判断当前时间是否在开始时间和结束时间之间,若是则处理上述作业;若否,且未到达开始时间则进行等待,等待进入时间窗口内;若已经超过结束时间,则作业失败。
需要说明的是,生产环境中数据库一般为主备冗余复制,主库将数据定期复制到备库中,数据抽取一般读取备库,同步时需要保障备库有预期读取的数据,具体方案可以为:检查主备复制情况,如果备库数据没有达到指定位点,则不进行数据同步,Oracel、Mysql等数据库都有相关机制检查该状态。可通过轮询方式确定备库数据是否达到指定位点。
为使本领域技术人员更好地理解本申请实施例,参照图7,示出了本申请的一种数据同步系统的结构示意图,其具体可以包括:同步中心701、资源管控模块702和同步引擎703;其中,同步引擎703具体可以包括:调度模块731和处理单元732;
其中,同步中心701用于接收用户提交的作业,并将上述作业提交到资源管控模块702;
资源管控模块702,用于统一协调管理机器的资源,并针对上述作业为处理上述作业的上述同步引擎703分配相应的资源;每个机器可提供相应的槽位资源,多个机器构成一个集群或资源组,对应的同步作业运行在指定的资源组中,互不干扰;
调度模块731,用于将一个作业切分为多个任务,并对多个任务进行调度执行;
处理单元732可用于对上述作业进行处理,上述处理单元732具体可以包括:读单元(Reader)7321、通道7322和写单元7323,其中,读单元7321可用于从数据源头加载数据,并存入作为缓冲区的通道7322,写单元7323可用于从通道7322读取数据,并将读取的数据写入目的端。
参照图8,示出了本申请的一种数据同步的状态机的示意图,该状态机可应用到CDP(云道,Cloud Data Pipeline)或同步中心701,相应的数据同步过程具体可以包括:
步骤S1、用户提交一个新的作业到同步中心701或者云道,作业处于提交(SUBMITTED)状态,如果提交失败进入失败(FAILED)状态;
步骤S2、同步中心701或云道对处于SUBMITTED状态的作业进行初步的流量控制,上述初步的流量控制具体可以包括如下判断方案中的至少一种:
定期轮询每一个提交的作业,判断是否处于同步窗口内(只有在同步窗口内才可以同步,同步抽取不能影响数据库线上服务);
读取主库还是备库(一般线上数据库提供主备冗余,同步抽取读取备库,加载写入主库,读取时需要确定备库数据是否完备,是否包括完整待读取的数据);
当前数据库的并发连接数目(限制数据源连接数量,保护数据源)是否充足;
在上述判断方案输出的判断结果满足任务需求时,同步中心701或云道提交作业到资源管控模块(Alisa)702,则作业进入准备(READY)状态;在上述判断方案输出的判断结果不满足任务需求时,作业进入失败(FAILED)状态;
步骤S3、在READY状态,作业等待机器的资源(磁盘、网卡、CPU、内存),在机器的资源满足需求时,资源管控模块702将作业提交至同步引擎703,如果提交成功,则作业进入运行(RUNNING)状态,如果提交失败则作业进入失败(FAILED)状态;在机器的资源不满足需求时,可以对作业进行等待处理;
其中,每个作业可以占用一定的机器的资源,可以按照作业的优先级为作业分配机器的资源;
步骤S4、在作业处于RUNNING状态时,资源管控模块702在一个资源组中寻找到一台机器运行同步引擎703的同步进程,该同步进程可以占用相应的资源;
其中,该同步进程上可以完成调度模块731和处理单元732的功能,具体地,可以从数据源头加载数据,读取到内存,将数据写入到目的端的过程;
并且,该同步进程还可以对处于RUNNING状态的作业进行流量控制,例如,在将作业切分为5个任务时,假设每个任务的字节流量速度的上限为1MBPS,则该同步进程可以按照此约束进行任务的流量控制;
另外,该同步进程还可以将处于运行状态的作业的瞬时状态汇报给同步中心701或者云道,汇报间隔可以为10秒,汇报的瞬时状态具体可以包括:已读取记录总数、已读取字节总数、任务进度百分比、已读脏纪录数、已读脏数据字节数、任务读取速度情况等,以使用户通过访问同步中心701或者云道查询得到上述瞬时状态;
在该同步进程处理完作业的任务且作业正常退出时,作业进入成功(SUCCESSED)状态,否则作业进入失败状态;
步骤S5、在用户认为作业不需要继续运行时,可以将处于READY、RUNNING状态的作业停止;
其中,在作业处于READY状态时还没有同步进程存在,故相应的停止过程可以为:修改同步中心701或云道的相关作业信息,释放资源管控模块702的作业请求;
在作业处于RUNNING状态时存在同步进程,此时还需要将同步X进程杀死;
需要说明的是,将一个作业停止不是一个瞬时完整的过程,需要定期发送Kill信号并轮询作业状态直到作业状态从KILLING(停止中)状态到达KILLED(杀死)状态。
另外,需要说明的是,本申请实施例的同步进程可以运行在单机环境或者分布式环境下,本申请实施例对于同步进程的具体运行环境不加以限制。
综上,本申请实施例具有如下优点:
第一,本申请实施例将作业切分为多个任务,其中的每个任务都可以具有对应的处理单元,由此在任务的处理过程,可以对任务的流量速度进行监控,并在所述任务的流量速度符合预置条件时,对所述任务的处理单元进行休眠处理;由于对所述任务的处理单元进行休眠处理,可使得任务的处理单元暂停对于任务的数据同步,因此可以降低运行上述任务的机器的网卡流量,避免运行上述任务的机器出现网卡流量打满等问题,从而提高生产系统的稳定性。
第二,本申请实施例可以对每个任务的流量速度进行单独监控,并依据监控结果对不同任务进行有区分的流量控制,使得不同任务的流量控制相互独立,例如,对于同一作业的多个任务,有的任务的流量速度超出了阈值,故可以对其处理单元进行休眠处理,以缓解运行这些任务的机器的网卡流量、内存资源等压力,而有的任务的流量速度未超出阈值,则可以不对其处理单元进行休眠处理,因此本申请实施例可以提高流量控制的合理性;
第三,本申请实施例针对用户创建资源组,并利用所述资源组中机器的资源对所述用户的作业进行处理,因此可以实现用户之间同步资源的隔离,从而可以避免不同用户的作业之间的相互影响。由于云计算通常要求多个用户(两个无关使用者或租户)之间资源隔离,一个用户对资源的占用不应该影响另外一个用户对资源的使用,因此,本实施例可以适用于云计算的场景;
第四,本申请实施例在数据库存在可用的并发连接时,可以利用所述并发连接对所述作业进行处理,由于当数据库不存在可用的并发连接时,可以对作业进行等待处理,而不是增加并发连接数,因此能够避免一位增加并发连接数、引发的数据库负载过重的问题,从而能够提高生产系统的稳定性;
第五,本申请实施例可以针对数据库配置时间窗口,并在当前时间处于所述作业对应数据库的时间窗口内时,处理上述作业,在当前时间不处于所述作业对应数据库的时间窗口内时,等待时间窗口的到来,因此能够避免数据同步影响线上数据库的性能;
第六,本申请实施例可以适用于任意两个数据源之间的数据同步,因此具有较好的通用性。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请实施例所必须的。
装置实施例一
参照图9,示出了本申请的一种数据同步装置实施例一的结构框图,具体可以包括如下模块:
切分模块901,用于将作业切分为多个任务;其中,所述任务具有对应的处理单元;
监控模块902,用于在所述任务的处理过程中,监控所述任务的流量速度;及
休眠模块903,用于在所述任务的流量速度符合预置条件时,对所述任务的处理单元进行休眠处理。
在本申请的一种可选实施例中,所述任务的流量速度符合预置条件具体可以包括:所述任务的字节流量速度超出第一阈值,和/或,所述任务的记录流量速度超出第二阈值。
在本申请的另一种可选实施例中,所述休眠模块903,具体可以包括:
确定子模块,用于依据所述任务的流量速度、监控周期和流量速度上限,确定所述任务的处理单元的休眠时长;
控制子模块,用于控制所述任务的处理单元进入维持时间为所述休眠时长的休眠状态。
在本申请的再一种可选实施例中,所述切分模块901,具体可以包括:
第一切分子模块,用于根据所述作业对应数据表的列最小值和最大值,将列区间划分多个子区间;或者
第二切分子模块,用于根据所述作业对应文件的大小和切分份数,确定所述文件的切分点位,并依据所述切分点位对所述文件进行切分。
装置实施例二
参照图10,示出了本申请的一种数据同步装置实施例二的结构框图,具体可以包括如下模块:
创建模块1001,用于针对用户创建资源组;其中,所述资源组包括至少一台机器;
作业处理模块1002,用于利用所述资源组中机器的资源对所述用户的作业进行处理,其中,所述作业处理模块1002,具体可以包括:
切分子模块1021,用于利用所述资源组中机器将作业切分为多个任务;其中,所述任务具有对应的处理单元;
监控子模块1022,用于在所述任务的处理过程中,利用所述资源组中机器监控所述任务的流量速度;及
休眠子模块1023,用于在所述任务的流量速度符合预置条件时,利用所述资源组中机器对所述任务的处理单元进行休眠处理。
在本申请的一种可选实施例中,所述作业处理模块1002,具体可以包括:
条件处理子模块,用于在所述用户对应资源组中机器的剩余资源超出所述用户的作业所需的资源时,利用所述资源组中机器对所述用户的作业进行处理。
在本申请的另一种可选实施例汇总,所述机器的资源具体可以包括:依据所述机器的物理资源抽象得到的槽位资源。
装置实施例三
参照图11,示出了本申请的一种数据同步装置实施例三的结构框图,具体可以包括如下模块:
切分模块1101,用于将作业切分为多个任务;其中,所述任务具有对应的处理单元;
第一任务处理模块1102,用于当数据库存在可用的并发连接时,利用所述并发连接对所述任务进行处理;
监控模块1103,用于在所述任务的处理过程中,监控所述任务的流量速度;
休眠模块1104,用于在所述任务的流量速度符合预置条件时,对所述任务的处理单元进行休眠处理;及
释放模块1105,用于在所述任务处理完成后,释放所述任务所占用的并发连接。
在本申请的一种可选实施例中,所述处理单元具体可以包括:读单元和写单元;
则所述第一任务处理模块1102,具体可以包括:
乱序处理子模块,用于分别对所述作业对应的多个读单元和多个写单元进行乱序处理;及
组合子模块,用于从乱序处理结果中选择一个读单元和一个写单元,组成相应的任务。
装置实施例四
参照图12,示出了本申请的一种数据同步装置实施例四的结构框图,具体可以包括如下模块:
切分模块1201,用于将作业切分为多个任务;其中,所述任务具有对应的处理单元;
第二任务处理子模块1202,用于在当前时间处于任务对应数据库的时间窗口内时,进行所述任务的处理;
监控模块1203,用于在所述任务的处理过程中,监控所述任务的流量速度;
休眠模块1204,用于在所述任务的流量速度符合预置条件时,对所述任务的处理单元进行休眠处理。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
在一个典型的配置中,所述计算机设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非持续性的电脑可读媒体(transitory media),如调制的数据信号和载波。
本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种数据同步方法和一种数据同步装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (20)
1.一种数据同步方法,其特征在于,包括:
将作业切分为多个任务;其中,所述任务具有对应的处理单元;
在所述任务的处理过程中,监控所述任务的流量速度;
在所述任务的流量速度符合预置条件时,对所述任务的处理单元进行休眠处理。
2.根据权利要求1所述的方法,其特征在于,所述任务的流量速度符合预置条件包括:所述任务的字节流量速度超出第一阈值,和/或,所述任务的记录流量速度超出第二阈值。
3.根据权利要求1所述的方法,其特征在于,所述对所述任务的处理单元进行休眠处理的步骤,包括:
依据所述任务的流量速度、监控周期和流量速度上限,确定所述任务的处理单元的休眠时长;
控制所述任务的处理单元进入维持时间为所述休眠时长的休眠状态。
4.根据权利要求1至3中任一所述的方法,其特征在于,所述方法还包括:
针对用户创建资源组;其中,所述资源组包括至少一台机器;
利用所述资源组中机器的资源对所述用户的作业进行处理,其中,所述利用所述资源组中机器对所述用户的作业进行处理的步骤,包括:
利用所述资源组中机器将作业切分为多个任务;其中,所述任务具有对应的处理单元;
在所述任务的处理过程中,利用所述资源组中机器监控所述任务的流量速度;
在所述任务的流量速度符合预置条件时,利用所述资源组中机器对所述任务的处理单元进行休眠处理。
5.根据权利要求4所述的方法,其特征在于,所述利用所述资源组中机器对所述用户的作业进行处理的步骤,包括:
在所述用户对应资源组中机器的剩余资源超出所述用户的作业所需的资源时,利用所述资源组中机器对所述用户的作业进行处理。
6.根据权利要求4所述的方法,其特征在于,所述机器的资源包括:依据所述机器的物理资源抽象得到的槽位资源。
7.根据权利要求1至3中任一所述的方法,其特征在于,所述方法还包括:
当数据库存在可用的并发连接时,利用所述并发连接对所述任务进行处理;
在所述任务处理完成后,释放所述任务所占用的并发连接。
8.根据权利要求7所述的方法,其特征在于,所述处理单元包括:读单元和写单元;
所述利用所述并发连接对所述任务进行处理的步骤,包括:
分别对所述作业对应的多个读单元和多个写单元进行乱序处理;
从乱序处理结果中选择一个读单元和一个写单元,组成相应的任务。
9.根据权利要求1至3中任一所述的方法,其特征在于,所述方法还包括:在当前时间处于任务对应数据库的时间窗口内时,进行所述任务的处理。
10.根据权利要求1至3中任一所述的方法,其特征在于,所述将作业切分为多个任务的步骤,包括:
根据所述作业对应数据表的列最小值和最大值,将列区间划分多个子区间;或者
根据所述作业对应文件的大小和切分份数,确定所述文件的切分点位,并依据所述切分点位对所述文件进行切分。
11.一种数据同步装置,其特征在于,包括:
切分模块,用于将作业切分为多个任务;其中,所述任务具有对应的处理单元;
监控模块,用于在所述任务的处理过程中,监控所述任务的流量速度;及
休眠模块,用于在所述任务的流量速度符合预置条件时,对所述任务的处理单元进行休眠处理。
12.根据权利要求11所述的装置,其特征在于,所述任务的流量速度符合预置条件包括:所述任务的字节流量速度超出第一阈值,和/或,所述任务的记录流量速度超出第二阈值。
13.根据权利要求11所述的装置,其特征在于,所述休眠模块,包括:
确定子模块,用于依据所述任务的流量速度、监控周期和流量速度上限,确定所述任务的处理单元的休眠时长;
控制子模块,用于控制所述任务的处理单元进入维持时间为所述休眠时长的休眠状态。
14.根据权利要求11至13中任一所述的装置,其特征在于,所述装置还包括:
创建模块,用于针对用户创建资源组;其中,所述资源组包括至少一台机器;
作业处理模块,用于利用所述资源组中机器的资源对所述用户的作业进行处理,其中,所述利用所述资源组中机器对所述用户的作业进行处理的过程,包括:
利用所述资源组中机器将作业切分为多个任务;其中,所述任务具有对应的处理单元;
在所述任务的处理过程中,利用所述资源组中机器监控所述任务的流量速度;
在所述任务的流量速度符合预置条件时,利用所述资源组中机器对所述任务的处理单元进行休眠处理。
15.根据权利要求14所述的装置,其特征在于,所述作业处理模块,包括:
条件处理子模块,用于在所述用户对应资源组中机器的剩余资源超出所述用户的作业所需的资源时,利用所述资源组中机器对所述用户的作业进行处理。
16.根据权利要求14所述的装置,其特征在于,所述机器的资源包括:依据所述机器的物理资源抽象得到的槽位资源。
17.根据权利要求11至13中任一所述的装置,其特征在于,所述装置还包括:
第一任务处理模块,用于当数据库存在可用的并发连接时,利用所述并发连接对所述任务进行处理;
释放模块,用于在所述任务处理完成后,释放所述任务所占用的并发连接。
18.根据权利要求17所述的装置,其特征在于,所述处理单元包括:读单元和写单元;
所述第一任务处理模块,包括:
乱序处理子模块,用于分别对所述作业对应的多个读单元和多个写单元进行乱序处理;
组合子模块,用于从乱序处理结果中选择一个读单元和一个写单元,组成相应的任务。
19.根据权利要求11至13中任一所述的装置,其特征在于,所述装置还包括:
第二任务处理子模块,用于在当前时间处于任务对应数据库的时间窗口内时,进行所述任务的处理。
20.根据权利要求11至13中任一所述的装置,其特征在于,所述切分模块,包括:
第一切分子模块,用于根据所述作业对应数据表的列最小值和最大值,将列区间划分多个子区间;或者
第二切分子模块,用于根据所述作业对应文件的大小和切分份数,确定所述文件的切分点位,并依据所述切分点位对所述文件进行切分。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510624904.6A CN106557492A (zh) | 2015-09-25 | 2015-09-25 | 一种数据同步方法和装置 |
PCT/CN2016/099055 WO2017050177A1 (zh) | 2015-09-25 | 2016-09-14 | 一种数据同步方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510624904.6A CN106557492A (zh) | 2015-09-25 | 2015-09-25 | 一种数据同步方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106557492A true CN106557492A (zh) | 2017-04-05 |
Family
ID=58385567
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510624904.6A Pending CN106557492A (zh) | 2015-09-25 | 2015-09-25 | 一种数据同步方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN106557492A (zh) |
WO (1) | WO2017050177A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109646784A (zh) * | 2018-12-21 | 2019-04-19 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 基于沉浸式vr的失眠障碍心理治疗系统和方法 |
CN111797158A (zh) * | 2019-04-08 | 2020-10-20 | 北京沃东天骏信息技术有限公司 | 数据同步系统、方法和计算机可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102098731A (zh) * | 2011-01-25 | 2011-06-15 | 无锡泛联物联网科技股份有限公司 | 无线传感网中的基于跳数的流量自适应休眠调度方法 |
CN102662633A (zh) * | 2012-03-16 | 2012-09-12 | 深圳第七大道科技有限公司 | 一种Flash任务的多线程处理方法和系统 |
CN102790698A (zh) * | 2012-08-14 | 2012-11-21 | 南京邮电大学 | 一种基于节能树的大规模计算集群任务调度方法 |
CN103257892A (zh) * | 2013-05-27 | 2013-08-21 | 北京世纪瑞尔技术股份有限公司 | 一种基于宏组合的多任务调度方法及系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100591052C (zh) * | 2007-04-25 | 2010-02-17 | 华为技术有限公司 | 流量控制的方法和业务处理系统 |
CN102298580A (zh) * | 2010-06-22 | 2011-12-28 | Sap股份公司 | 使用异步缓冲器的多核查询处理 |
US8739171B2 (en) * | 2010-08-31 | 2014-05-27 | International Business Machines Corporation | High-throughput-computing in a hybrid computing environment |
CN103810041A (zh) * | 2014-02-13 | 2014-05-21 | 北京大学 | 一种支持动态伸缩的并行计算的方法 |
CN103955491B (zh) * | 2014-04-15 | 2017-04-19 | 南威软件股份有限公司 | 一种定时数据增量同步的方法 |
-
2015
- 2015-09-25 CN CN201510624904.6A patent/CN106557492A/zh active Pending
-
2016
- 2016-09-14 WO PCT/CN2016/099055 patent/WO2017050177A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102098731A (zh) * | 2011-01-25 | 2011-06-15 | 无锡泛联物联网科技股份有限公司 | 无线传感网中的基于跳数的流量自适应休眠调度方法 |
CN102662633A (zh) * | 2012-03-16 | 2012-09-12 | 深圳第七大道科技有限公司 | 一种Flash任务的多线程处理方法和系统 |
CN102790698A (zh) * | 2012-08-14 | 2012-11-21 | 南京邮电大学 | 一种基于节能树的大规模计算集群任务调度方法 |
CN103257892A (zh) * | 2013-05-27 | 2013-08-21 | 北京世纪瑞尔技术股份有限公司 | 一种基于宏组合的多任务调度方法及系统 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109646784A (zh) * | 2018-12-21 | 2019-04-19 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 基于沉浸式vr的失眠障碍心理治疗系统和方法 |
CN111797158A (zh) * | 2019-04-08 | 2020-10-20 | 北京沃东天骏信息技术有限公司 | 数据同步系统、方法和计算机可读存储介质 |
CN111797158B (zh) * | 2019-04-08 | 2024-04-05 | 北京沃东天骏信息技术有限公司 | 数据同步系统、方法和计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2017050177A1 (zh) | 2017-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Kamburugamuve et al. | Survey of distributed stream processing for large stream sources | |
US9489443B1 (en) | Scheduling of splits and moves of database partitions | |
CN103092698B (zh) | 云计算应用自动部署系统及方法 | |
CN111327681A (zh) | 一种基于Kubernetes的云计算数据平台构建方法 | |
US20210224279A1 (en) | Distributed real-time partitioned mapreduce for a data fabric | |
CN108287756A (zh) | 一种处理任务的方法及装置 | |
CN109840253A (zh) | 企业级大数据平台架构 | |
CN109933631A (zh) | 基于Infiniband网络的分布式并行数据库系统及数据处理方法 | |
CN104461740A (zh) | 一种跨域集群计算资源聚合和分配的方法 | |
CN103581332B (zh) | HDFS架构及HDFS架构中NameNode节点的压力分解方法 | |
CN103019853A (zh) | 一种作业任务的调度方法和装置 | |
CN106130960B (zh) | 盗号行为的判断系统、负载调度方法和装置 | |
CN109144783B (zh) | 一种分布式海量非结构化数据备份方法及系统 | |
CN105827678B (zh) | 一种基于高可用架构下的通信方法和节点 | |
CN109067903B (zh) | 一种云平台级联系统 | |
US20220300323A1 (en) | Job Scheduling Method and Job Scheduling Apparatus | |
CN109669975A (zh) | 一种工业大数据处理系统及方法 | |
CN102081757A (zh) | 一种报表制作方法及其系统 | |
CN105608138A (zh) | 一种优化阵列数据库并行数据加载性能的系统 | |
CN106557492A (zh) | 一种数据同步方法和装置 | |
CN106254452A (zh) | 云平台下的医疗大数据访问方法 | |
CN107528871A (zh) | 存储系统中的数据分析 | |
US9934268B2 (en) | Providing consistent tenant experiences for multi-tenant databases | |
Gopalakrishna et al. | Untangling cluster management with Helix | |
CN111858656A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170405 |