CN109271447A - 数据同步方法、装置、计算机设备和存储介质 - Google Patents
数据同步方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN109271447A CN109271447A CN201811026647.6A CN201811026647A CN109271447A CN 109271447 A CN109271447 A CN 109271447A CN 201811026647 A CN201811026647 A CN 201811026647A CN 109271447 A CN109271447 A CN 109271447A
- Authority
- CN
- China
- Prior art keywords
- data
- script
- synchronous script
- synchronous
- spark task
- 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
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- 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/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种基于大数据处理的数据同步方法、装置、计算机设备和存储介质。所述方法包括:接收第一终端发送的数据同步请求,所述数据同步请求包含用户标识和系统标识;调用第一同步脚本;所述第一同步脚本包括多个标签;获取所述系统标识对应的配置文件;根据所述配置文件,对第一同步脚本中的标签进行替换,并在消息队列中读取与所述用户标识对应的数据记录,根据所述数据记录生成第二同步脚本;基于所述第一同步脚本及所述第二同步脚本,得到数据同步脚本;执行所述数据同步脚本,将读取到的数据记录同步到所述系统标识对应的目标数据库。采用本方法能够提高数据同步效率。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种数据同步方法、装置、计算机设备和存储介质。
背景技术
数据同步是指将源数据库中的数据同步至目标数据库。然而,目前主要通过人工编写同步脚本在源数据库和目标数据库之间进行数据同步。且当需要对不同业务系统进行数据同步时,需要人工针对每个业务系统分别编写对应的数据同步脚本,操作繁琐,使得数据同步效率降低。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高数据同步效率的数据同步方法、装置、计算机设备和存储介质。
一种数据同步方法,所述方法包括:接收第一终端发送的数据同步请求,所述数据同步请求包含用户标识和系统标识;调用第一同步脚本;所述第一同步脚本包括多个标签;获取所述系统标识对应的配置文件;根据所述配置文件,对第一同步脚本中的标签进行替换,并在消息队列中读取与所述用户标识对应的数据记录,根据所述数据记录生成第二同步脚本;基于所述第一同步脚本及所述第二同步脚本,得到数据同步脚本;执行所述数据同步脚本,将读取到的数据记录同步到所述系统标识对应的目标数据库。
在其中一个实施例中,所述在消息队列中读取与所述用户标识对应的数据记录之前,还包括:获取Spark任务产生的业务数据;所述业务数据包括多条数据记录;生成每条所述数据记录对应的数据摘要;从源数据库中获取多条历史记录分别对应的历史摘要;将每个所述数据摘要与多条所述历史摘要进行对比,得到新增的数据摘要;将所述新增的数据摘要对应的数据记录写入所述消息队列。
在其中一个实施例中,所述获取Spark任务产生的业务数据之前,还包括:接收第二终端提交的Spark任务及对应的参数文件;从所述参数文件读取所述Spark任务的资源分配参数,根据所述资源分配参数进行物理资源分配;基于所述物理资源执行所述Spark任务;在所述Spark任务执行期间,监测所述Spark任务的执行效率;当监测到所述执行效率低于阈值时,对所述配置文件中的资源分配参数进行调整,将所述Spark任务从已分配的物理资源调度至与调整后的资源分配参数相应的物理资源上继续执行。
在其中一个实施例中,所述Spark任务包括Shell脚本;所述Shell脚本预置了对所述参数文件的回调函数;所述从所述参数文件中读取所述Spark任务的资源分配参数,包括:通过执行所述Shell脚本启动所述Spark任务;基于所述回调函数,生成对所述参数文件的回调指令;根据所述回调指令拉取对应的参数文件;从拉取到的参数文件中读取所述资源分配参数。
在其中一个实施例中,所述数据同步脚本还包括第三同步脚本,所述将读取到的数据记录同步到所述系统标识对应的目标数据库,包括:计算所述用户标识对应的数据记录的数据量;判断所述数据量是否超过阈值;若是,调用所述第三同步脚本将所述数据记录拆分为多个数据组;调用多线程将多个所述数据组同步至所述目标数据库。
一种数据同步装置,所述装置包括:配置读取模块,用于接收第一终端发送的数据同步请求,所述数据同步请求包含用户标识和系统标识;调用第一同步脚本;所述第一同步脚本包括多个标签;获取所述系统标识对应的配置文件;脚本更新模块,用于根据所述配置文件,对第一同步脚本中的标签进行替换,并在消息队列中读取与所述用户标识对应的数据记录,根据所述数据记录生成第二同步脚本;基于所述第一同步脚本及所述第二同步脚本,得到数据同步脚本;数据同步模块,用于执行所述数据同步脚本,将读取到的数据记录同步到所述系统标识对应的目标数据库。
在其中一个实施例中,所述装置还包括数据存储模块,用于获取Spark任务产生的业务数据;所述业务数据包括多条数据记录;生成每条所述数据记录对应的数据摘要;从源数据库中获取多条历史记录分别对应的历史摘要;将每个所述数据摘要与多条所述历史摘要进行对比,得到新增的数据摘要;将所述新增的数据摘要对应的数据记录写入所述消息队列。
在其中一个实施例中,所述装置还包括资源分配模块,用于接收第二终端提交的Spark任务及对应的参数文件;从所述参数文件读取所述Spark任务的资源分配参数,根据所述资源分配参数进行物理资源分配;基于所述物理资源执行所述Spark任务;在所述Spark任务执行期间,监测所述Spark任务的执行效率;当监测到所述执行效率低于阈值时,对所述配置文件中的资源分配参数进行调整,将所述Spark任务从已分配的物理资源调度至与调整后的资源分配参数相应的物理资源上继续执行。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现本申请任意一个实施例中提供的数据同步方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现本申请任意一个实施例中提供的数据同步方法的步骤。
上述数据同步方法、装置、计算机设备和存储介质,根据第一终端发送的数据同步请求,可以获取用户标识和系统标识;基于预置的相应系统标识对应的配置文件,可以对第一同步脚本中的标签进行替换;根据在消息队列中读取到的与所述用户标识对应的数据记录,可以生成第二同步脚本;基于所述第一同步脚本及所述第二同步脚本,即可得到数据同步脚本;通过执行所述数据同步脚本,可以将读取到的数据记录同步到目标数据库。由于通过对预置的第一同步脚本进行更新,并根据需要同步的数据记录生成对应的第二脚本,可以自动得到数据同步脚本,基于数据同步脚本直接实现数据记录的同步,减少针对不同业务系统逐个编写数据同比脚本的繁琐,从而既降低数据同步门槛,也可以提高数据同步效率。
附图说明
图1为一个实施例中数据同步方法的应用场景图;
图2为一个实施例中数据同步方法的流程示意图;
图3为一个实施例中数据记录存储步骤的流程示意图;
图4为一个实施例中物理资源分配步骤的流程示意图;
图5为一个实施例中数据同步装置的结构框图;
图6为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的数据同步方法,可以应用于如图1所示的应用环境中。其中,第一终端102与服务器104通过网络进行通信。第二终端106与服务器104通过网络进行通信。其中,第一终端102与第二终端106分别可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器104可以是多个服务器组成的服务器集群来实现。第一终端102上部署了一种或多种业务系统。第一终端102与第二终端106可以同一终端,也可以是不同终端。服务器104接收第二终端106提交的Spark任务,通过执行Spark任务生成业务系统所需的业务数据。业务数据包括多条数据记录。服务器104将新增的数据记录写入消息队列。当用户需要使用业务数据时,可以在第一终端102基于相应业务系统向服务器104发送数据同步请求。业务系统具有对应的系统标识和数据库(以下称“目标数据库”)。数据同步请求携带了系统标识和用户标识。服务器104调用包括多个标签的第一同步脚本。服务器104预存储了多个系统标识对应的配置文件。服务器104根据相应系统标识对应的配置文件,对第一同步脚本中的标签进行替换,并在消息队列中读取与用户标识对应的数据记录,根据读取到的数据记录生成第二同步脚本。服务器104基于第一同步脚本和第二同步脚本,得到数据同步脚本,通过执行数据同步脚本,将读取到的数据记录同步至系统标识对应的数据库。上述数据同步过程,通过对预置的第一同步脚本进行更新,并根据需要同步的数据记录生成对应的第二脚本,可以自动得到数据同步脚本,基于数据同步脚本直接实现数据记录的同步,减少针对不同业务系统逐个编写数据同比脚本的繁琐,从而可以提高数据同步效率。
在一个实施例中,如图2所示,提供了一种数据同步方法,以该方法应用于图1中的服务器为例进行说明,包括以下步骤:
步骤202,接收第一终端发送的数据同步请求,数据同步请求包含用户标识和系统标识。
多个服务器组成的服务器集群,包括主节点Master和多个工作节点Worker。任务调度人员在第二终端通过spark-submit命令将Spark(一种用于大规模数据处理的计算引擎)任务提交至主节点。主节点上部署了任务调度平台,用于对多个第二终端提交的多个Spark任务进行调度执行。任务调度平台为每个Spark任务启动一个对应的Driver进程,基于Driver进程启动Spark任务,并为Spark任务分配内存、CPU等物理资源。换言之,任务调度平台在集群各工作节点上启动一定数量的Executor进程,基于多个Executor进程执行Spark任务。
Spark任务按照预设业务逻辑生成业务数据,如相关产品推送信息、生日祝福语。业务数据具有对应的系统标识,用于标识该业务数据适用于哪些业务系统,或者说哪些业务系统有权限使用该业务数据。业务数据包括多条数据记录。不同数据记录分别具有对应的用户标识,用于标识该条数据记录适用于相应业务系统的哪一用户,或者说哪一用户有权限使用该数据记录。
步骤204,调用第一同步脚本;第一同步脚本包括多个标签。
传统方式中,在通过不同的业务系统进行数据同步之前,用户需要预先针对不同的业务系统编写不同的数据同步脚本。但事实上,不同业务系统对应的数据同步脚本类似,若需要进行数据同步的业务系统较多,则用户需要进行大量的重复动作,浪费人力,也降低了数据同步效率。为了减少用户操作,本实施例预先编写一套通用的数据同步脚本,并将数据同步脚本预存储在服务器。该数据同步脚本包括第一同步脚本和第二同步脚本。
第一同步脚本包括至少一个预设格式的标签。预设格式是指在标签两侧中的至少一侧设有预设标识。预设标识可以是“#”,“@”,“*”等,从而预设格式的标签可以是“#ABC#”,“@DEF”或“GHI*”等。
步骤206,获取系统标识对应的配置文件。
服务器预存储了多个系统标识对应的配置文件。配置文件可以是用户在需要进行数据同步时采用页面配置方式在业务系统中预先配置的。配置文件记录了多个标签及每个标签对应的源数据表的表名。
步骤208,根据配置文件,对第一同步脚本中的标签进行替换,并在消息队列中读取与用户标识对应的数据记录,根据数据记录生成第二同步脚本。
服务器调用数据同步脚本,根据预设标识识别第一同步脚本中的标签,根据配置文件查询每个标签对应的源数据表的表名,利用查询到的源数据表的表名对相应的标签进行替换,以对第一同步脚本进行更新。
第二同步脚本包括建表脚本和同步脚本。配置文件还记录了消息队列的连接字符串,验证标识等。验证标识可以是用户名和密码等。服务器根据消息队列的连接字符串和验证标识,与消息队列建立连接,在消息队列中读取用户标识对应的数据记录。用户标识对应的数据记录可以记录在一张或多张源数据表中。数据记录不同,对应的建表脚本和同步脚本不同。服务器根据每张源数据表的字段信息,生成对应的建表语句和同步语句,将生成的多条建表语句写入对应的建表脚本,将生成的多条同步语句写入对应的同步脚本,以对第二同步脚本进行更新。
步骤210,基于第一同步脚本及第二同步脚本,得到数据同步脚本。
步骤212,执行数据同步脚本,将读取到的数据记录同步到系统标识对应的目标数据库。
服务器在对第一同步脚本以及第二同步脚本分别进行更新后,得到更新后的数据同步脚本,通过执行更新后的数据同步脚本,将消息队列中与用户标识对应的数据记录同步至目标数据库。
本实施例中,根据第一终端发送的数据同步请求,可以获取用户标识和系统标识;基于预置的相应系统标识对应的配置文件,可以对第一同步脚本中的标签进行替换;根据在消息队列中读取到的与用户标识对应的数据记录,可以生成第二同步脚本;基于第一同步脚本及第二同步脚本,即可得到数据同步脚本;通过执行数据同步脚本,可以将读取到的数据记录同步到目标数据库。由于通过对预置的第一同步脚本进行更新,并根据需要同步的数据记录生成对应的第二脚本,可以自动得到数据同步脚本,基于数据同步脚本直接实现数据记录的同步,减少针对不同业务系统逐个编写数据同比脚本的繁琐,从而既降低数据同步门槛,也可以提高数据同步效率。
在一个实施例中,如图3所示,在消息队列中读取与用户标识对应的数据记录之前,还包括数据记录存储的步骤,具体包括:
步骤302,获取Spark任务产生的业务数据;业务数据包括多条数据记录。
步骤304,生成每条数据记录对应的数据摘要。
步骤306,从源数据库中获取多条历史记录分别对应的历史摘要。
步骤308,将每个数据摘要与多条历史摘要进行对比,得到新增的数据摘要。
步骤310,将新增的数据摘要对应的数据记录写入消息队列。
Spark任务产生的业务数据通常是大规模的。为了便于对业务数据进行检索分析,服务器生成每条数据记录的数据摘要。数据摘要为用于标识相应数据记录的简要信息,可以是哈希值或关键词索引等。
在一个实施例中,生成每条数据记录对应的数据摘要的步骤,包括:在数据记录中提取多个关键词;计算提取到的每个关键词的哈希值;对多个关键词的哈希值进行预设逻辑运算,将运算结果作为数据记录的数据摘要。预设逻辑运算可以哈希运算,也可以是四则运算等。
Spark任务具有对应的源数据库,可以是Hive数据库。Spark任务生成的业务数据存储至源数据库。存储至源数据库的数据记录即为历史记录,相应的数据摘要即为历史摘要。历史摘要也可以是按照上述方式生成的。容易理解,源数据库用于存储Spark任务在不同时间产生的全部业务数据。
服务器将业务数据中每个数据摘要与源数据库中的每个历史摘要进行逐个对比,将与历史摘要不相匹配的数据摘要确定为新增的数据摘要。相匹配是指历史摘要与数据摘要的内容相同或相似。可以理解,为了提高数据对比效率,可以预先按照历史对比结果对源数据库中多个历史摘要排序。例如,将过往多次与数据摘要相匹配的历史摘要设置在优先对比的顺序。
Spark任务具有对应的消息队列。消息队列负责业务数据的接收、存储和转发。服务器获取新增的数据摘要对应的数据记录,将数据记录存储至消息队列,并根据新增的数据摘要及其对应的数据记录存储至源数据库,即对源数据库存储的历史记录及对应历史摘要进行全量更新或增量更新。当用户需要使用业务数据时,可以在第一终端基于相应业务系统向服务器发送数据同步请求。服务器基于消息队列响应数据同步请求。
本实施例中,由于仅将大规模的业务数据中相对新增的部分数据同步至目标数据库,而非将产生的全部业务数据同步至目标数据库,减少需要同步的数据量,从而提高大规模数据的同步效率。构建每条数据记录的数据摘要,基于数据摘要进行新增的数据记录的筛选,减少需要对比的数据量,从而提高业务数据对比效率,进而提高数据同步效率。
在一个实施例中,如图4所示,获取Spark任务产生的业务数据之前,还包括物理资源分配的步骤,具体包括:
步骤402,接收第二终端提交的Spark任务及对应的参数文件。
步骤404,从参数文件读取Spark任务的资源分配参数,根据资源分配参数进行物理资源分配。
步骤406,基于物理资源执行Spark任务。
步骤408,在Spark任务执行期间,监测Spark任务的执行效率。
步骤410,当监测到执行效率低于阈值时,对配置文件中的资源分配参数进行调整,将Spark任务从已分配的物理资源调度至与调整后的资源分配参数相应的物理资源上继续执行。
服务器从参数文件中读取Spark任务的资源分配参数。在其中一个实施例中,Spark任务包括Shell脚本;Shell脚本预置了对参数文件的回调函数;从参数文件中读取Spark任务的资源分配参数,包括:通过执行Shell脚本启动Spark任务;基于回调函数,生成对参数文件的回调指令;根据回调指令拉取对应的参数文件;从拉取到的参数文件中读取资源分配参数。
Spark任务对应的业务逻辑脚本包括Shell脚本。任务调度人员将spark任务的资源分配参数记录在参数文件中,并在Shell脚本中预置对参数文件的回调函数。资源分配参数可以是任务调度人员根据Spark任务的任务量预先估算的。任务调度人员在第二终端通过spark-submit命令将Spark任务及对应的配置文件提交至主节点。主节点上部署的任务调度平台将参数文件独立于Spark任务进行单独存储,并为每个Spark任务启动一个对应的Driver进程。根据预设的部署模式(deploy-mode),Driver进程在本地启动该Spark任务或者在集群中某工作节点启动Spark任务。
任务调度平台基于Driver进程启动Spark任务,并为Spark任务分配物理资源。具体的,Driver进程调用Spark任务对应的Shell脚本,产生一个对参数文件的回调指令,根据回调指令读取参数文件中的资源分配参数。Driver进程根据读取到的资源分配参数,向集群管理器申请运行Spark任务需要使用的物理资源。集群管理器可以是Spark Standalone集群或YARN资源管理集群等。物理资源是指内存和CPU等。集群管理器根据资源分配参数在集群各工作节点上启动一定数量的Executor进程。容易理解,Driver进程及每个Executor进程本身也会占用一定物理资源。
在申请到Spark任务执行所需的物理资源之后,任务调度平台基于Driver进程开始调度执行Spark任务。具体的,Driver进程将Spark任务拆分为多个异步执行的任务组stage,每个任务组stage包括多个异步执行和/或并发执行的基础任务task。Driver进程将一个任务组stage的多个基础任务task分配到多个Executor进程中执行。基础任务task是最小的执行单元。每个基础任务task的执行结果存储至Executor进程对应的内存或所在工作节点的磁盘文件中。在当前任务组stage所有基础任务task都执行完毕时,Driver进程在各个工作节点本地的磁盘文件中写入中间结果,并调度运行下一个任务组stage。如此循环往复,直到将Spark任务全部执行完为止。
在Spark任务执行期间,任务调度平台基于Driver进程监测Spark任务的执行效率,即计算基础任务task的执行速度。容易理解,基础任务task的执行速度与相应Executor进程的CPU核数等物理资源直接相关。通常,一个CPU同一时间执行一个线程。物理资源足够的情况下,当Executor进程上分配到的多个基础任务task时,可以调用多线程并发执行多个基础任务task,从而提高Spark任务的执行效率。
任务调度平台基于Driver进程比较执行效率是否低于阈值。阈值可以根据实际需求自由设置,也可以动态变化,对此不做限制。若执行效率低于阈值,表示当前Spark任务存在物理资源不足的风险,任务调度平台生成停止执行指令,将停止执行指令发送至相应工作节点,从而结束相应Driver进程及Executor进程。任务调度平台测算需要新增的物理资源,根据测算结果对Spark任务对应参数文件记录的资源分配参数进行调整。若执行效率大于或等于阈值,表示当前Spark任务不存在物理资源不足的风险,或风险比较低。任务调度平台判断Spark任务已分配的物理资源是否具有空闲资源,测算需要释放的物理资源,根据测算结果对Spark任务对应参数文件记录的资源分配参数进行调整。
任务调度平台基于调整后的资源分配参数,重新为Spark任务启动一个Driver进程,调用该新启动的Driver进程按照上述方式重新为Spark任务分配物理资源,即在集群多个工作节点重新启动一定数量的Executor进程。Driver进程将Spark任务调度至与调整后的资源分配参数相适应的物理资源执行,即Spark任务拆分得到的多个基础任务task发送至重新分配的多个Executor进程执行。任务调度平台基于Driver进程继续监测Spark任务的执行效率,并按照执行效率进行资源分配参数的调整,直至Spark任务执行完毕。
传统的资源分配参数固定配置在Spark任务的Shell脚本中,使得只有在等到Spark任务进行版本更新时才能进行资源分配参数变更,使得资源分配参数修改不便,进而影响Spark任务运行效率和运行结果。
本实施例中,由于将资源分配参数以参数文件的方式进行单独存储,独立于Spark任务本身,从而可以摆脱Spark任务版本更新的限制灵活自由修改资源分配参数;实时监测Spark任务执行效率,并根据执行效率动态调整分配的物理资源,可以适应Spark任务对物理资源的实际需求,进而可以提高Spark任务执行效率。
在一个实施例中,数据同步脚本还包括第三同步脚本,将读取到的数据记录同步到系统标识对应的目标数据库,包括:计算用户标识对应的数据记录的数据量;判断数据量是否超过阈值;若是,调用第三同步脚本将数据记录拆分为多个数据组;调用多线程将多个数据组同步至目标数据库。
数据同步脚本还包括第三同步脚本。服务器计算消息队列中与用户标识对应的数据记录的数据量,比较数据量是否超过阈值。若是,则服务器调用第三脚本将多条数据记录拆分为多个数据组,换言之,对多条数据记录进行分组。具体的,服务器获取预设的目标数据量。目标数据量可以是预先设定的,也可以是根据服务器当前的负载监测结果临时生成的。服务器根据目标数据量确定每个数据组的拆分位置。例如,假设目标数据量为80M,则将第80M大小的位置标记为第一个拆分位置,第160M大小的位置标记为第二个拆分位置,以此类推。
服务器检测每个拆分位置是否位于相邻分隔符之间。当拆分位置位于一个分隔符处时,服务器在拆分位置进行拆分;当拆分位置位于相邻分隔符之间时,在相邻分隔符中任意一个分隔符处进行拆分,即在该相邻分隔符中的前一个分隔符或后一个分隔符处进行拆分,得到多个数据组。服务器调用多线程将多个数据组同步至目标数据库,以提高业务数据的同步效率。
本实施例中,对于数据量较大的业务数据进行拆分,拆分为多个数据组并调用多线程进行同步,可以提高数据同步效率;基于目标数据量及分隔符确定拆分位置,可以避免同一条数据记录拆分至不同数据组,保证数据完整性。
应该理解的是,虽然图2~图4的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2~图4中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图5所示,提供了一种数据同步装置,包括:配置读取模块502、脚本更新模块504和数据同步模块506,其中:
配置读取模块502,用于接收第一终端发送的数据同步请求,数据同步请求包含用户标识和系统标识;调用第一同步脚本;第一同步脚本包括多个标签;获取系统标识对应的配置文件。
脚本更新模块504,用于根据配置文件,对第一同步脚本中的标签进行替换,并在消息队列中读取与用户标识对应的数据记录,根据数据记录生成第二同步脚本;基于第一同步脚本及第二同步脚本,得到数据同步脚本。
数据同步模块506,用于执行数据同步脚本,将读取到的数据记录同步到系统标识对应的目标数据库。
在一个实施例中,该装置还包括数据存储模块508,用于获取Spark任务产生的业务数据;业务数据包括多条数据记录;生成每条数据记录对应的数据摘要;从源数据库中获取多条历史记录分别对应的历史摘要;将每个数据摘要与多条历史摘要进行对比,得到新增的数据摘要;将新增的数据摘要对应的数据记录写入消息队列。
在一个实施例中,该装置还包括资源分配模块510,用于接收第二终端提交的Spark任务及对应的参数文件;从参数文件读取Spark任务的资源分配参数,根据资源分配参数进行物理资源分配;基于物理资源执行Spark任务;在Spark任务执行期间,监测Spark任务的执行效率;当监测到执行效率低于阈值时,对配置文件中的资源分配参数进行调整,将Spark任务从已分配的物理资源调度至与调整后的资源分配参数相应的物理资源上继续执行。
在一个实施例中,Spark任务包括Shell脚本;Shell脚本预置了对参数文件的回调函数;资源分配模块510还用于通过执行Shell脚本启动Spark任务;基于回调函数,生成对参数文件的回调指令;根据回调指令拉取对应的参数文件;从拉取到的参数文件中读取资源分配参数。
在一个实施例中,数据同步脚本还包括第三同步脚本,数据同步模块506还用于计算用户标识对应的数据记录的数据量;判断数据量是否超过阈值;若是,调用第三同步脚本将数据记录拆分为多个数据组;调用多线程将多个数据组同步至目标数据库。
关于数据同步装置的具体限定可以参见上文中对于数据同步方法的限定,在此不再赘述。上述数据同步装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图6所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储配置文件、数据同步脚本和参数文件等。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据同步方法。
本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现本申请任意一个实施例中提供的数据同步方法的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种数据同步方法,所述方法包括:
接收第一终端发送的数据同步请求,所述数据同步请求包含用户标识和系统标识;
调用第一同步脚本;所述第一同步脚本包括多个标签;
获取所述系统标识对应的配置文件;
根据所述配置文件,对第一同步脚本中的标签进行替换,并在消息队列中读取与所述用户标识对应的数据记录,根据所述数据记录生成第二同步脚本;
基于所述第一同步脚本及所述第二同步脚本,得到数据同步脚本;
执行所述数据同步脚本,将读取到的数据记录同步到所述系统标识对应的目标数据库。
2.根据权利要求1所述的方法,其特征在于,所述在消息队列中读取与所述用户标识对应的数据记录之前,还包括:
获取Spark任务产生的业务数据;所述业务数据包括多条数据记录;
生成每条所述数据记录对应的数据摘要;
从源数据库中获取多条历史记录分别对应的历史摘要;
将每个所述数据摘要与多条所述历史摘要进行对比,得到新增的数据摘要;
将所述新增的数据摘要对应的数据记录写入所述消息队列。
3.根据权利要求2所述的方法,其特征在于,所述获取Spark任务产生的业务数据之前,还包括:
接收第二终端提交的Spark任务及对应的参数文件;
从所述参数文件读取所述Spark任务的资源分配参数,根据所述资源分配参数进行物理资源分配;
基于所述物理资源执行所述Spark任务;
在所述Spark任务执行期间,监测所述Spark任务的执行效率;
当监测到所述执行效率低于阈值时,对所述配置文件中的资源分配参数进行调整,将所述Spark任务从已分配的物理资源调度至与调整后的资源分配参数相应的物理资源上继续执行。
4.根据权利要求3所述的方法,其特征在于,所述Spark任务包括Shell脚本;所述Shell脚本预置了对所述参数文件的回调函数;所述从所述参数文件中读取所述Spark任务的资源分配参数,包括:
通过执行所述Shell脚本启动所述Spark任务;
基于所述回调函数,生成对所述参数文件的回调指令;
根据所述回调指令拉取对应的参数文件;
从拉取到的参数文件中读取所述资源分配参数。
5.根据权利要求1所述的方法,其特征在于,所述数据同步脚本还包括第三同步脚本,所述将读取到的数据记录同步到所述系统标识对应的目标数据库,包括:
计算所述用户标识对应的数据记录的数据量;
判断所述数据量是否超过阈值;
若是,调用所述第三同步脚本将所述数据记录拆分为多个数据组;
调用多线程将多个所述数据组同步至所述目标数据库。
6.一种数据同步装置,其特征在于,所述装置包括:
配置读取模块,用于接收第一终端发送的数据同步请求,所述数据同步请求包含用户标识和系统标识;调用第一同步脚本;所述第一同步脚本包括多个标签;获取所述系统标识对应的配置文件;
脚本更新模块,用于根据所述配置文件,对第一同步脚本中的标签进行替换,并在消息队列中读取与所述用户标识对应的数据记录,根据所述数据记录生成第二同步脚本;基于所述第一同步脚本及所述第二同步脚本,得到数据同步脚本;
数据同步模块,用于执行所述数据同步脚本,将读取到的数据记录同步到所述系统标识对应的目标数据库。
7.根据权利要求6所述的装置,其特征在于,还包括数据存储模块,用于获取Spark任务产生的业务数据;所述业务数据包括多条数据记录;生成每条所述数据记录对应的数据摘要;从源数据库中获取多条历史记录分别对应的历史摘要;将每个所述数据摘要与多条所述历史摘要进行对比,得到新增的数据摘要;将所述新增的数据摘要对应的数据记录写入所述消息队列。
8.根据权利要求7所述的装置,其特征在于,还包括资源分配模块,用于接收第二终端提交的Spark任务及对应的参数文件;从所述参数文件读取所述Spark任务的资源分配参数,根据所述资源分配参数进行物理资源分配;基于所述物理资源执行所述Spark任务;在所述Spark任务执行期间,监测所述Spark任务的执行效率;当监测到所述执行效率低于阈值时,对所述配置文件中的资源分配参数进行调整,将所述Spark任务从已分配的物理资源调度至与调整后的资源分配参数相应的物理资源上继续执行。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至5中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至5中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811026647.6A CN109271447A (zh) | 2018-09-04 | 2018-09-04 | 数据同步方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811026647.6A CN109271447A (zh) | 2018-09-04 | 2018-09-04 | 数据同步方法、装置、计算机设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109271447A true CN109271447A (zh) | 2019-01-25 |
Family
ID=65187547
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811026647.6A Pending CN109271447A (zh) | 2018-09-04 | 2018-09-04 | 数据同步方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109271447A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110765479A (zh) * | 2019-11-03 | 2020-02-07 | 长沙豆芽文化科技有限公司 | 一种大数据防丢失方法、装置及设备 |
CN110941623A (zh) * | 2019-11-12 | 2020-03-31 | 北京达佳互联信息技术有限公司 | 数据的同步方法及装置 |
CN111427698A (zh) * | 2020-03-26 | 2020-07-17 | 平安医疗健康管理股份有限公司 | 基于Azakban的数据同步方法、装置和计算机设备 |
CN111584059A (zh) * | 2020-04-21 | 2020-08-25 | 武汉联影医疗科技有限公司 | 系统监测方法、装置和计算机设备 |
CN111581155A (zh) * | 2020-03-30 | 2020-08-25 | 平安科技(深圳)有限公司 | 数据入数据库的方法、装置和计算机设备 |
CN111737012A (zh) * | 2020-07-31 | 2020-10-02 | 腾讯科技(深圳)有限公司 | 数据包的同步方法、装置、设备及存储介质 |
CN112507020A (zh) * | 2020-11-20 | 2021-03-16 | 平安普惠企业管理有限公司 | 数据同步方法、装置、计算机设备及存储介质 |
WO2021169277A1 (zh) * | 2020-02-25 | 2021-09-02 | 平安科技(深圳)有限公司 | 数据同步方法、装置、设备及计算机可读存储介质 |
CN114116672A (zh) * | 2021-11-30 | 2022-03-01 | 智慧足迹数据科技有限公司 | 数据同步方法及相关装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106980699A (zh) * | 2017-04-14 | 2017-07-25 | 中国科学院深圳先进技术研究院 | 一种数据处理平台和系统 |
CN107515786A (zh) * | 2017-08-04 | 2017-12-26 | 北京奇虎科技有限公司 | 资源分配方法、主装置、从装置和分布式计算系统 |
CN107908631A (zh) * | 2017-07-25 | 2018-04-13 | 平安科技(深圳)有限公司 | 数据处理方法、装置、存储介质和计算机设备 |
CN108416665A (zh) * | 2018-02-07 | 2018-08-17 | 平安普惠企业管理有限公司 | 数据交互方法、装置、计算机设备和存储介质 |
-
2018
- 2018-09-04 CN CN201811026647.6A patent/CN109271447A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106980699A (zh) * | 2017-04-14 | 2017-07-25 | 中国科学院深圳先进技术研究院 | 一种数据处理平台和系统 |
CN107908631A (zh) * | 2017-07-25 | 2018-04-13 | 平安科技(深圳)有限公司 | 数据处理方法、装置、存储介质和计算机设备 |
CN107515786A (zh) * | 2017-08-04 | 2017-12-26 | 北京奇虎科技有限公司 | 资源分配方法、主装置、从装置和分布式计算系统 |
CN108416665A (zh) * | 2018-02-07 | 2018-08-17 | 平安普惠企业管理有限公司 | 数据交互方法、装置、计算机设备和存储介质 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110765479B (zh) * | 2019-11-03 | 2020-04-24 | 长沙豆芽文化科技有限公司 | 一种大数据防丢失方法、装置及设备 |
CN110765479A (zh) * | 2019-11-03 | 2020-02-07 | 长沙豆芽文化科技有限公司 | 一种大数据防丢失方法、装置及设备 |
CN110941623A (zh) * | 2019-11-12 | 2020-03-31 | 北京达佳互联信息技术有限公司 | 数据的同步方法及装置 |
WO2021169277A1 (zh) * | 2020-02-25 | 2021-09-02 | 平安科技(深圳)有限公司 | 数据同步方法、装置、设备及计算机可读存储介质 |
CN111427698B (zh) * | 2020-03-26 | 2022-11-15 | 深圳平安医疗健康科技服务有限公司 | 基于Azakban的数据同步方法、装置和计算机设备 |
CN111427698A (zh) * | 2020-03-26 | 2020-07-17 | 平安医疗健康管理股份有限公司 | 基于Azakban的数据同步方法、装置和计算机设备 |
CN111581155A (zh) * | 2020-03-30 | 2020-08-25 | 平安科技(深圳)有限公司 | 数据入数据库的方法、装置和计算机设备 |
CN111581155B (zh) * | 2020-03-30 | 2023-07-25 | 平安科技(深圳)有限公司 | 数据入数据库的方法、装置和计算机设备 |
CN111584059A (zh) * | 2020-04-21 | 2020-08-25 | 武汉联影医疗科技有限公司 | 系统监测方法、装置和计算机设备 |
CN111584059B (zh) * | 2020-04-21 | 2024-01-23 | 武汉联影医疗科技有限公司 | 系统监测方法、装置和计算机设备 |
CN111737012A (zh) * | 2020-07-31 | 2020-10-02 | 腾讯科技(深圳)有限公司 | 数据包的同步方法、装置、设备及存储介质 |
CN112507020A (zh) * | 2020-11-20 | 2021-03-16 | 平安普惠企业管理有限公司 | 数据同步方法、装置、计算机设备及存储介质 |
CN114116672B (zh) * | 2021-11-30 | 2022-11-08 | 智慧足迹数据科技有限公司 | 数据同步方法及相关装置 |
CN114116672A (zh) * | 2021-11-30 | 2022-03-01 | 智慧足迹数据科技有限公司 | 数据同步方法及相关装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109271447A (zh) | 数据同步方法、装置、计算机设备和存储介质 | |
CN108804697A (zh) | 基于Spark的数据同步方法、装置、计算机设备和存储介质 | |
CN108845884B (zh) | 物理资源分配方法、装置、计算机设备和存储介质 | |
CN106802826B (zh) | 一种基于线程池的业务处理方法及装置 | |
US20170269924A1 (en) | Managing a software-patch submission queue | |
CN108304260B (zh) | 一种基于高性能云计算的虚拟化作业调度系统及其实现方法 | |
CN110597858A (zh) | 任务数据处理方法、装置、计算机设备和存储介质 | |
CN111708627B (zh) | 基于分布式调度框架的任务调度方法以及装置 | |
US9697041B2 (en) | Method for dynamic interrupt balanced mapping based on current scheduling states of VCPUs | |
CN111338791A (zh) | 集群队列资源的调度方法、装置、设备及存储介质 | |
CN110321223A (zh) | Coflow协同作业流调度感知的数据流划分方法与装置 | |
CN112527310A (zh) | 多租户数据隔离方法、装置、计算机设备及存储介质 | |
CN106557369A (zh) | 一种多线程的管理方法及系统 | |
JP6686371B2 (ja) | データステージング管理システム | |
CN110765162A (zh) | 数据比对方法、装置、计算机设备和存储介质 | |
CN110442752A (zh) | 组织架构图生成方法、装置、计算机设备和存储介质 | |
CN105592110A (zh) | 一种资源调度方法及装置 | |
WO2023155819A1 (zh) | 一种应用部署方法和系统 | |
CN112579692A (zh) | 一种数据同步方法、装置、系统、设备及存储介质 | |
CN112817748A (zh) | 一种基于安卓虚拟机处理任务的方法、计算机设备 | |
Zhong et al. | Speeding up Paulson’s procedure for large-scale problems using parallel computing | |
Çavdar et al. | Quantifying the brown side of priority schedulers: Lessons from big clusters | |
CN108958808A (zh) | 终端启动方法及装置、终端及存储介质 | |
CN108235133B (zh) | 视频识别方法及装置 | |
CN116414581A (zh) | 基于线程池和Avl树的多线程时间同步事件调度系统 |
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 |