一种数据同步的方法、装置、设备和介质
技术领域
本申请涉及数据处理技术领域,尤其涉及一种数据同步的方法、装置、设备和介质。
背景技术
在业务处理的过程中,业务***通常需要通过同步设备对不同数据库中的数据进行同步。例如,某些业务***中的配置库和运行库是隔离的,因此,需要通过同步设备将配置库中的数据同步至运行库中。同步设备为用于数据同步的软件***,如,同步中间件。
现有技术下,通常采用全量数据同步的方式进行数据同步,或者,针对业务***的特定需求开发相应的同步模块,但是,全量数据同步的方式通常会同步冗余数据,进而影响其他业务配置,而同步模块按需同步的方式,需要针对不同的业务***开发不同的同步模块,同步模块的扩展性较差,业务***难以接入和管理。
由此,在数据同步时,如何自定义同步数据以及降低业务***接入和管理的复杂度,是一个亟待解决的问题。
发明内容
本申请实施例提供一种数据同步的方法、装置、设备和介质,用以在进行数据同步时,可以自定义同步数据以及降低业务***接入和管理的复杂度。
一方面,提供一种数据同步的方法,包括:
接收业务***发送的同步请求消息,同步请求消息中包含业务流程标识信息和字段参数信息,字段参数信息用于筛选同步数据;
获取同步请求消息中包含的业务流程标识信息和字段参数信息;
获取业务流程标识信息对应设置的业务同步流程;
根据字段参数信息,执行业务同步流程,实现数据同步。
一方面,提供一种数据同步的装置,包括:
接收单元,用于接收业务***发送的同步请求消息,同步请求消息中包含业务流程标识信息和字段参数信息,字段参数信息用于筛选同步数据;
第一获取单元,用于获取同步请求消息中包含的业务流程标识信息和字段参数信息;
第二获取单元,用于获取业务流程标识信息对应设置的业务同步流程;
执行单元,用于根据字段参数信息,执行业务同步流程,实现数据同步。
较佳的,执行单元用于:
根据元服务中的数据筛选模型、字段参数变量和相应的字段参数值以及数据源接口,获取源数据库中的同步数据;
确定元服务中的字段参数变量对应的索引参数变量,并将字段参数变量对应的字段参数值,作为相应索引参数变量的索引参数值;
根据元服务中的索引参数变量和相应的索引参数值、数据更新模型以及目标数据接口,将同步数据同步至相应的目标数据库;
其中,同步数据模型包括数据筛选模型和数据更新模型。
一方面,提供一种同步设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时执行上述任一种数据同步的方法的步骤。
一方面,提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述任一种数据同步的方法的步骤。
本申请实施例提供的一种数据同步的方法、装置、设备和介质中,预先配置不同的业务同步流程,在接收到业务***发送的同步请求消息后,获取同步请求消息中包含的业务流程标识信息和字段参数信息,并获取业务流程标识信息对应设置的业务同步流程,以及根据字段参数信息执行业务同步流程,实现数据同步,这样,可以针对不同业务***的不同业务需求,预先配置不同的业务同步流程,可以复用于不同业务需求的业务***,从而可以对不同的业务***进行接入以及统一管理,降低了业务***接入以及管理的复杂度和运维成本,以及通过字段参数信息,可以自定义同步数据,避免了全量数据同步带来的数据冗余问题,再者,通过业务同步流程的方式,减少了频繁的业务同步版本的发布,降低了业务同步版本。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1a为本申请实施方式中一种数据同步的应用场景;
图1b为本申请实施方式中一种同步数据获取的架构示意图;
图1c为本申请实施方式中一种区块链示意图;
图1d为本申请实施方式中一种区块生成示意图;
图2为本申请实施方式中一种业务同步流程配置的方法的实施流程图;
图3为本申请实施方式中一种数据同步的方法的实施流程图;
图4a为本申请实施方式中一种数据筛选模型示意图;
图4b为本申请实施方式中一种数据筛选条件示意图;
图5a为本申请实施方式中一种同步配置应用界面示意图;
图5b为本申请实施方式中一种数据同步的详细流程图;
图6为本申请实施方式中数据同步的装置的结构示意图;
图7为本申请实施方式中一种同步设备的结构示意图。
具体实施方式
为了使本申请的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
首先,对本申请实施例中涉及的部分用语进行说明,以便于本领域技术人员理解。
同步设备:可以安装各类应用,并且能够将已安装的应用中提供的对象进行显示的设备,该电子设备可以是移动的,也可以是固定的。例如,手机、平板电脑、各类可穿戴设备、车载设备、个人数字助理(personal digital assistant,PDA)、销售终端(point ofsales,POS)或其它能够实现上述功能的电子设备等。
数据接口(包括源数据接口和目标数据接口),用于对数据库(包括源数据库和目标数据库)进行调度,可以为一条传输控制协议((Transmission Control Protocol,TCP)的数据库链接,也可以为一条远程过程调用(Remote Procedure Call,RPC)。
其中,当数据库可达时,则可以采用TCP的方式访问数据库,当数据库不可达时,则可以采用RPC的方式访问数据库。
数据同步模型:包括数据筛选模型和数据更新模型,用于实现源数据库与目标数据库之间的数据同步。其中,数据筛选模型用于筛选出源数据库中的同步数据。数据更新模型用于根据同步数据对目标数据库中的数据进行更新。
元服务:为组成业务同步流程的基本单位,用于根据包含的数据源接口、目标数据接口以及数据同步模型实现源数据库和目标数据库之间的数据同步。
业务同步流程:由一个或多个元服务组成,用于通过元服务以及字段参数信息实现数据同步。
区块链(Blockchain):是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。
区块链底层平台可以包括用户管理、基础服务、智能合约以及运营监控等处理模块。其中,用户管理模块负责所有区块链参与者的身份信息管理,包括维护公私钥生成(账户管理)、密钥管理以及用户真实身份和区块链地址对应关系维护(权限管理)等,并且在授权的情况下,监管和审计某些真实身份的交易情况,提供风险控制的规则配置(风控审计);基础服务模块部署在所有区块链节点设备上,用来验证业务请求的有效性,并对有效请求完成共识后记录到存储上,对于一个新的业务请求,基础服务先对接口适配解析和鉴权处理(接口适配),然后通过共识算法将业务信息加密(共识管理),在加密之后完整一致的传输至共享账本上(网络通信),并进行记录存储;智能合约模块负责合约的注册发行以及合约触发和合约执行,开发人员可以通过某种编程语言定义合约逻辑,发布到区块链上(合约注册),根据合约条款的逻辑,调用密钥或者其它的事件触发执行,完成合约逻辑,同时还提供对合约升级注销的功能;运营监控模块主要负责产品发布过程中的部署、配置的修改、合约设置、云适配以及产品运行中的实时状态的可视化输出,例如:告警、监控网络情况、监控节点设备健康状态等。
平台产品服务层提供典型应用的基本能力和实现框架,开发人员可以基于这些基本能力,叠加业务的特性,完成业务逻辑的区块链实现。应用服务层提供基于区块链方案的应用服务给业务参与方进行使用。
下面介绍本申请实施例的设计思想。
在业务处理的过程中,业务***通常需要通过同步设备对不同数据库中的数据进行同步。例如,某些业务***中的配置库和运行库是隔离的,因此,在处理业务的过程中,业务***通常需要通过同步中间件将配置库中的配置数据同步至运行库。其中,配置库可以包括多个源数据库,运行库可以包括多个目标数据库。
传统方式中,数据同步时,通常采用以下两种方式:
第一种方式为:全量数据同步,即同步设备将源数据库中的全部数据同步到目标数据库中。
但是,采用这种方式会同步冗余数据,进而会影响其它业务的配置以及运行,会带来不可知的风险。
第二种方式为:按照需求进行数据同步,即针对特定的业务需求,开发相应的同步模块,并通过该同步模块进行数据同步。
但是,采用这种方式,仅能适用于指定的业务场景,适用范围小,需要分别针对每一业务***的业务需求,开发相应的同步模块,同步模块的扩展性差并且难以复用,业务***难以接入和管理。
显然,传统技术中并没有提供一种既可以按照业务需求同步数据、适用范围又广的数据同步的技术方案,因此,亟待需要一种数据同步的技术方案,在数据同步时,可以按照业务需求差异化同步数据,扩大适用范围,降低开发以及管理成本。
考虑到可以预先针对不同的业务需求,在同步设备中配置不同的业务同步流程,使得同步设备可以根据各业务***发送的业务流程标识信息选择相应的业务同步流程,进而根据字段参数信息执行业务同步流程,对业务***需求的数据进行同步,即基于业务需求抽象出用于同步的中间***,按照业务需求同步数据,以及对不同的业务***进行统一管理,降低业务***接入以及管理的成本,本申请实施例中提供了一种数据处理的方案,该方案中,预先配置不同的业务同步流程,在接收到业务***发送的同步请求消息后,获取同步请求消息中包含的业务流程标识信息和字段参数信息,并获取业务流程标识信息对应设置的业务同步流程,以及根据字段参数信息执行业务同步流程,实现数据同步。
为进一步说明本申请实施例提供的技术方案,下面结合附图以及具体实施方式对此进行详细的说明。虽然本申请实施例提供了如下述实施例或附图所示的方法操作步骤,但基于常规或者无需创造性的劳动在方法中可以包括更多或者更少的操作步骤。在逻辑上不存在必要因果关系的步骤中,这些步骤的执行顺序不限于本申请实施例提供的执行顺序。方法在实际的处理过程中或者装置执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行。
参阅图1a所示,为一种数据同步的应用场景,包括业务***100和同步设备110。
业务***100,用于向同步设备110发送同步配置消息以及同步请求消息。
其中,业务***100中还包括源数据库101和目标数据库102,源数据库101可以为一个或多个,目标数据库102可以为一个或多个,在此不做限制。每一源数据库101设置有对应的源数据接口。每一目标数据库102设置有对应的目标数据接口。
本申请实施例中,源数据接口用于获取源数据库101的数据,目标数据接口用于将数据同步至目标数据库102。
其中,数据库(Database),包括源数据库和目标数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、查询、更新、删除等操作。所谓“数据库”是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。
一种实施方式中,业务***通过数据库管理***(Database Management System,DBMS)对数据库进行管理。
其中,数据库管理***是为管理数据库而设计的电脑软件***,一般具有存储、截取、安全保障、备份等基础功能。数据库管理***可以依据它所支持的数据库模型来作分类,例如关系式、XML可扩展标记语言(Extensible Markup Language,XML);或依据所支持的计算机类型来作分类,例如服务器群集、移动电话;或依据所用查询语言来作分类,例如结构化查询语言(Structured Query Language,SQL),XQuery;或依据性能冲量重点来作分类,例如最大规模、最高运行速度;亦或其他的分类方式。
可选的,源数据库和目标数据库还可以采用云存储的方式。
其中,云存储(cloud storage)是在云计算概念上延伸和发展出来的一个新的概念,分布式云存储***(以下简称存储***)是指通过集群应用、网格技术以及分布存储文件***等功能,将网络中大量各种不同类型的存储设备(存储设备也称之为存储节点)通过应用软件或应用接口集合起来协同工作,共同对外提供数据存储和业务访问功能的一个存储***。
目前,存储***的存储方法为:创建逻辑卷,在创建逻辑卷时,就为每个逻辑卷分配物理存储空间,该物理存储空间可能是某个存储设备或者某几个存储设备的磁盘组成。客户端在某一逻辑卷上存储数据,也就是将数据存储在文件***上,文件***将数据分成许多部分,每一部分是一个对象,对象不仅包含数据而且还包含数据标识(Identity,ID)等额外的信息,文件***将每个对象分别写入该逻辑卷的物理存储空间,且文件***会记录每个对象的存储位置信息,从而当客户端请求访问数据时,文件***能够根据每个对象的存储位置信息让客户端对数据进行访问。
存储***为逻辑卷分配物理存储空间的过程,具体为:按照对存储于逻辑卷的对象的容量估量(该估量相对于实际要存储的对象的容量有很大余量)和独立冗余磁盘阵列(Redundant Array of Independent Disk,RAID)的组别,预先将物理存储空间划分成分条,一个逻辑卷可以理解为一个分条,从而为逻辑卷分配了物理存储空间。
本申请实施例中,以将源数据库101的数据同步至目标数据库102为例进行说明,实际应用中,也可以为将数据源环境中的数据同步至目标环境中,在此不作限制。
同步设备110:用于根据接收到的业务***100发送的同步配置消息,创建元服务,以及根据各元服务的组合,配置业务同步流程和相应的业务流程标识信息,还用于接收到包含业务流程标识信息和字段参数信息的同步请求消息后,按照通过业务流程标识信息指示的业务同步流程,依次执行业务同步流程中包含的各元服务,以将通过字段参数信息从源数据库中筛选出的指定的业务数据同步至目标数据库中。
其中,元服务是根据上述数据源接口和上述目标数据接口创建的,为组成业务同步流程的基本单位。多个元服务按照执行顺序组成的一个流程即为业务同步流程。
具体的,参阅图1b所示,为一种同步数据获取的架构示意图,包括业务***100和同步设备110,同步设备110中还包括配置模块111、共享内存112、同步模块113以及各元服务114,其中,元服务114的数量可以为一个或多个,在此不做限制。
配置模块111,用于接收业务***100发送的同步配置消息,并根据同步配置消息创建各元服务,以及根据各元服务,配置业务同步流程和相应的业务流程标识信息,并将获得的业务同步流程和相应的业务流程标识信息存储至区块链的区块中。还用于按照预设时长,将区块链的区块中存储的业务同步流程和业务流程标识信息发送至共享内存112。
实际应用中,预设时长可以根据实际应用场景进行设置,在此不做限制。
参阅图1c所示,为一种区块链示意图,区块链由多个区块组成,参见图1c,区块链由多个区块组成,创始块中包括区块头和区块主体,区块头中存储有输入信息特征值、版本号、时间戳和难度值,区块主体中存储有输入信息;创始块的下一区块以创始块为父区块,下一区块中同样包括区块头和区块主体,区块头中存储有当前区块的输入信息特征值、父区块的区块头特征值、版本号、时间戳和难度值,并以此类推,使得区块链中每个区块中存储的区块数据均与父区块中存储的区块数据存在关联,保证了区块中输入信息的安全性。
参阅图1d所示,为一种区块生成示意图,在生成区块链中的各个区块时,参见图1d,区块链所在的节点在接收到输入信息时,对输入信息进行校验,完成校验后,将输入信息存储至内存池中,并更新其用于记录输入信息的哈希树;之后,将更新时间戳更新为接收到输入信息的时间,并尝试不同的随机数,多次进行特征值计算,使得计算得到的特征值可以满足下述公式:
SHA256(SHA256(version+prev_hash+merkle_root+ntime+nbits))<TARGET;
其中,SHA256为计算特征值所用的特征值算法;version(版本号)为区块链中相关区块协议的版本信息;prev_hash为当前区块的父区块的区块头特征值;merkle_root为输入信息的特征值;ntime为更新时间戳的更新时间;nbits为当前难度,在一段时间内为定值,并在超出固定时间段后再次进行确定;x为随机数;TARGET为特征值阈值,该特征值阈值可以根据nbits确定得到。
这样,当计算得到满足上述公式的随机数时,便可将信息对应存储,生成区块头和区块主体,得到当前区块。
共享内存112,用于接收配置模块111发送的业务同步流程和业务流程标识信息,并更新存储的业务同步流程和业务流程标识信息。
同步模块113,用于接收业务***发送的同步请求消息,并根据同步请求消息,选择业务同步流程,以及依次执行业务同步流程中的各元服务114。
进一步地,同步模块中还可以包括事务池,以记录以及监控元服务的同步状态。
这样,就可以按照实际应用需求,自定义需要同步的数据以及业务同步流程,在业务层级同步自定义的数据,避免了全量数据同步,并且可以应用于不同的业务***,使用范围广,拓展性强。
本申请实施例中,在执行数据同步之前,同步设备预先根据业务***的同步配置消息配置业务同步流程,参阅图2所示,为本申请提供的一种业务同步流程配置的方法的实施流程图,该方法的具体流程如下:
步骤201:业务***向同步设备发送同步配置消息。
具体的,执行步骤201时,可以采用以下步骤:
S2011:业务***获取需要同步数据的源数据库的源数据接口,目标数据库的目标数据接口以及数据同步模型,并根据获取的源数据接口、目标数据接口以及数据同步模型,创建元服务组合。
一种实施方式中,若业务配置需求为根据源数据库中符合数据筛选条件的数据,对目标数据库中符合数据更新条件的数据进行更新,则根据数据筛选条件设置数据筛选模型,并根据数据更新条件设置数据更新模型,并将数据筛选模型和数据更新模型作为数据同步模型。
其中,数据同步模型包括字段参数变量,用于根据字段参数变量以及相应的字段参数信息确定数据筛选以及更新的条件。
数据筛选模型为包含字段参数变量的模型,将不同的字段参数值输入数据筛选模型,可以获得不同的数据筛选条件。数据筛选模型为包含的字段参数变量可以为一个或多个。数据更新条件用于查询源数据库中的同步数据。
数据更新模型为包含索引参数变量的模型,将不同的索引参数值输入数据更新模型,可以获得不同的数据更新条件。数据更新模型中包含的索引参数变量可以为一个或多个。数据更新条件用于更新数据。
需要说明的是,业务***预先建立数据筛选模型中的字段参数变量和数据更新模型中的索引参数变量之间的对应关系,以将根据字段参数变量获得的同步数据,更新根据索引参数变量对应的数据。字段参数变量和索引参数变量可以相同,也可以不同,在此不做限制。
索引参数变量用于判断同步数据是否存在于目标数据库中,若是,则根据新的数据更新,否则,***新的数据。本申请实施例中,不以主键为索引,而是自定义索引参数变量。
其中,元服务组合可以为一个,也可以为多个。每一元服务组合包括数据源接口、目标数据接口和数据同步模型。针对一个元服务组合,源数据接口可以为一个或多个,目标数据接口可以为一个,也可以为多个。不同元服务中的字段参数变量可以复用,也就是说,若不同的元服务中包含相同的字段参数变量,则各字段参数变量的字段参数值是相同的,获取一个字段参数变量的字段参数值后,其它元服务中相同的字段参数变量可以直接采用该字段参数值。
由于源数据接口用于访问源数据库中的数据表,目标数据接口用于访问目标数据库中的数据表,因此,在将源数据库中的数据同步至目标数据库的过程中,源数据库与目标数据库可以为一对一、一对多、多对一以及多对多的关系。源数据库中的表与目标数据库中的表可以为一对一、一对多、多对一以及多对多的关系。
例如,同步数据模型可以为将源数据库中表1和表2中符合数据筛选条件的数据,均同步至目标数据库中的表3中。
S2012:业务***确定各元服务组合的权重。
具体的,业务***获取预先设置的各元服务组合的权重。
这是由于业务***的设备环境可能不稳定,例如,源数据库中的数据突然不可读、目标数据库中的数据突然不可写入以及掉电等,因此,本申请实施例中,分别设置每一元服务组合的权重,进而在后续的步骤中,根据元服务组合的权重,配置相应元服务的执行顺序,使得发生短暂异常时,不会造成大面积的影响,提高同步设备的容错性。
实际应用中,元服务组合的权重,可以根据实际应用场景进行设置,在此不做限制。
S2013:业务***将包含各元服务组合以及相应的权重的同步配置消息,发送至同步设备。
进一步地,同步配置消息中还可以包含***标识、密钥以及签名等,以提高数据安全。
步骤202:同步设备接收业务***发送的同步配置消息,并获取同步配置消息中包含的各元服务组合以及相应的权重。
步骤203:同步设备分别针对每一元服务组合,创建相应的元服务。
具体的,同步设备分别根据每一元服务组合中包含的数据源接口、目标数据接口以及数据同步模型,创建元服务。
其中,元服务用于根据包含的数据源接口、目标数据接口以及数据同步模型实现源数据库和目标数据库之间的数据同步。
需要说明的是,由于业务***可能会在多次配置同步设备的过程中,已经创建了多个元服务,因此,若同步设备中已存在元服务组合对应的元服务,则不再重复创建元服务。
这样,就可以创建多个用于同步数据的元服务。
步骤204:同步设备根据同步配置消息中包含的元服务组合的权重,配置元服务的执行顺序,获得各元服务组成的业务同步流程以及相应的业务流程标识信息。
具体的,执行步骤204时,可以采用以下步骤:
S2041:同步设备根据各元服务组合的权重由大到小的顺序,确定相应元服务的执行顺序。
S2042:同步设备按照该执行顺序,将各元服务进行组合,获得组合后的业务同步流程,以及相应的业务流程标识信息。
其中,元服务为组成业务同步流程的基本单位。
进一步地,同步配置消息中还可以包含元服务组合之间的依赖条件。则同步设备获取同步配置消息中还包含的各元服务组合之间的依赖条件,并根据元服务组合之间的依赖条件,设置业务同步流程中相应元服务之间执行时的依赖条件。
其中,依赖条件是根据执行元服务获得的同步数据,确定下一个元服务的字段参数值,也就是说,元服务必须根据前一元服务的同步数据,确定自身的字段参数值,进而执行数据同步。
需要说明的是,在各元服务的执行过程中,若不同元服务需要获取的同步数据是相同的,则后来执行的元服务可以直接获取先执行的元服务的同步数据,以提高数据处理速度。
一种实施方式中,业务流程标识信息包括同步流程标识,同步流程标识用于表示业务同步流程。
进一步地,同步设备还可以按照业务的不同,创建不同的业务模块,获得相应的业务主题标识,并在每一业务模块中创建不同的业务同步流程。则业务流程标识信息还可以包括业务主题(Topic)标识,即通过业务主题标识和同步流程标识确定相应的业务同步流程。
一种实施方式中,同步设备根据同步配置消息创建业务模块,并设置相应的业务主题标识。接着,同步设备在业务模块中创建各元服务,并创建业务同步流程以及设置相应的同步流程标识。同步设备根据各元服务的执行顺序,依次将各元服务添加到业务同步流程中,并设置各元服务之间的依赖条件。
也就是说,业务***针对指定的业务,创建相应的业务同步流程。
步骤205:同步设备按照预设时长,将获得的业务同步流程以及相应的业务流程标识信息,同步至共享内存中。
具体的,同步设备中包括配置模块、共享内存以及同步模块。配置模块根据同步配置消息配置业务同步流程以及相应的业务流程标识信息,并将获得的业务同步流程和相应的业务流程标识信息存储至区块链的区块中。以及,配置模块按照预设时长,将区块链的区块中存储的业务同步流程和相应的业务流程标识信息,对共享内存中包含的业务同步流程和业务流程标识信息进行更新。
这样,就可以在同步设备中配置不同的业务同步流程以及元服务,进而可以在后续的步骤中,按照需求选择相应的业务同步流程,实现数据同步。
参阅图3所示,为本申请提供的一种数据同步的方法的实施流程图。该方法的具体流程如下:
步骤300:同步设备接收业务***发送的同步请求消息。
具体的,业务***可以通过超文本传输协议(HyperText Transfer Protocol,HTTP)将同步请求消息发送至同步设备,同步设备接收业务***发送的同步请求消息。
其中,同步请求消息中包含业务流程标识信息和字段参数信息。字段参数信息用于筛选同步数据。
步骤301:同步设备获取同步请求消息中包含的业务流程标识信息和字段参数信息。
具体的,同步设备中的同步模块获取同步请求消息中包含的业务流程标识信息和字段参数信息。
步骤302:同步设备获取业务流程标识信息对应设置的业务同步流程。
具体的,同步设备中的同步模块从共享内存中获取业务流程标识信息对应的业务同步流程。
也就是说,同步设备通过业务同步流程,获取需要执行的元服务集合。
这样,业务***就可以通过业务流程标识信息自定义执行的元服务。
步骤303:同步设备根据字段参数信息,执行业务同步流程。
具体的,同步设备根据字段参数信息,按照业务同步流程中包含的多个元服务的执行顺序,分别针对每一元服务执行以下步骤:
S3031:同步设备确定元服务中的字段参数变量对应的字段参数值。
具体的,确定字段参数值时,同步设备可以采用以下步骤:
同步设备获取元服务中字段参数变量的参数类型。当字段参数变量的参数类型为外部参数时,则同步设备从字段参数信息中,获取该字段参数变量的字段参数值。
当字段参数变量的参数类型为内联参数时,则同步设备获取该元服务的前一个元服务的同步数据,并从前一个元服务获取的同步数据中,获取该字段参数变量的字段参数值。
可选的,字段参数值可以为数值,也可以为数组。
一种实施方式中,若字段参数值为数组,即(v1,v2,v3……),数组中包含的元素的数量低于预设数量阈值。
其中,v1、v2和v3均为数组中的元素。
实际应用中,预设数量阈值可以根据实际应用场景进行设置,如,5,在此不做限制。
S3032:同步设备根据元服务中的数据同步模型、字段参数变量和相应的字段参数值、数据源接口和目标数据接口,执行元服务。
具体的,执行元服务时,同步设备可以采用以下步骤:
步骤一:同步设备根据元服务中的数据筛选模型、字段参数变量和相应的字段参数值以及数据源接口,获取源数据库中的同步数据。
其中,数据筛选模型和数据更新模型,均可以采用结构化查询语言(StructuredQuery Language,SQL)的where方式。
也就是说,同步设备将字段参数变量和相应的字段参数值输入数据筛选模型,获得数据筛选条件,并通过数据源接口访问源数据库,筛选出源数据库中符合数据筛选条件的同步数据。
例如,参阅图4a所示,为一种数据筛选模型示意图。
元服务1(数据筛选模型A=$a),表示元服务1中的数据筛选模型中包含字段参数变量A,$a表示需要输入的字段参数值。
元服务2(数据筛选模型B=$b),表示元服务2中的数据筛选模型中包含字段参数变量B,$b表示需要输入的字段参数值。
元服务3(数据筛选模型A=$a&B=$b),表示元服务3中的数据筛选模型中包含字段参数变量A和B,$a和$b表示需要输入的字段参数值。
假设a为1,b为(0,1),参阅图4b所示,为一种数据筛选条件示意图。
则元服务1的数据筛选条件为:select*from table where A=“1”;
即从数据表中筛选出符合字段A=1的数据。
元服务2的数据筛选条件为:select*from table where B in(0,1);
即从数据表中筛选出符合字段B位于(0,1)区间内的数据。
元服务3的数据筛选条件为:select*from table where A=“1”and B in(0,1);
即从数据表中筛选出符合字段A=1并且B位于(0,1)区间内的数据。
这样,就可以根据预先设置的数据筛选模型以及字段参数值,确定数据筛选条件,从而根据实际需求自定义需要同步的数据。
步骤二:同步设备确定元服务中的字段参数变量对应的索引参数变量,并将字段参数变量对应的字段参数值,作为相应索引参数变量的索引参数值。
也就是说,确定(字段参数变量,字段参数值)对应的(索引参数变量,索引参数值)。
步骤三:同步设备根据元服务中的索引参数变量和相应的索引参数值、数据更新模型以及目标数据接口,将同步数据同步至相应的目标数据库。
也就是说,同步设备将索引参数变量和相应的索引参数值输入数据更新模型,获得数据更新条件,并通过目标数据接口访问目标数据库,以及判断目标数据库中符合数据更新条件的目标数据是否存在,若是,则将目标数据更新为同步数据,否则,将同步数据***目标数据库。
步骤304:同步设备判断当前执行的元服务是否同步异常,若是,则执行步骤305,否则,执行步骤306。
步骤305:同步设备向业务设备返回同步失败响应消息。
具体的,同步设备根据业务同步流程,依次执行各元服务,确定存在元服务同步异常时,则终止执行后续元服务并回滚,以及向业务***发送同步失败响应消息。
其中,回滚是指是程序或数据处理错误,将程序或数据恢复到上一次正确状态的行为。同步异常可以为同步失败或同步超时。
一种实施方式中,同步设备中还包括事务池,同步设备分别将每一元服务的状态写入事务池,以对元服务的状态进行监控。
进一步地,同步请求消息中还可以包含流水号。业务***确定接收到同步失败响应消息后,根据流水号向同步设备重新发送上述同步请求消息。
一种实施方式中,当元服务同步异常时,同步设备将该元服务对应的状态更新为同步异常,并终止执行后续元服务以及回滚,以及向业务***发送包含流水号的同步失败响应消息。业务***确定接收到同步失败响应消息后,根据流水号,重新向同步设备发送上述同步请求消息。
这样,通过元服务的状态,使得元服务状态异常时,可以回滚以及重新进行数据同步,保证了数据的一致性。
步骤306:同步设备确定数据同步成功。
参与图5a所示,为一种同步配置应用界面示意图。
参阅图5a所示,同步配置应用界面中包括“格式化流程图”、“预览”以及“保存流程”三个选项。例如,同步设备创建了三个元服务,即元服务1、元服务2以及元服务3。5a中的“未定义”模块用于设置元服务1、元服务2以及元服务3之间的连接关系以及依赖条件。
例如,一种业务同步流程为:元服务1,结束。
一种业务同步流程为:元服务1,元服务2,结束。
一种业务同步流程为:元服务1,元服务2,元服务3,结束。
参阅图5b所示,为一种数据同步的详细流程图,数据同步的流程如下:
步骤510:同步设备接收业务***发送的同步请求消息。
步骤511:同步设备获取同步请求消息中包含的业务流程标识信息和字段参数信息。
步骤512:同步设备获取业务流程标识信息对应的业务同步流程。
步骤513:同步设备根据字段参数信息,执行业务同步流程。
步骤514:同步设备判断业务同步流程中的元服务1是否同步正常,若是,则执行步骤515,否则,执行步骤518。
步骤515:同步设备判断业务同步流程中的元服务2是否同步正常,若是,则执行步骤516,否则,执行步骤518。
步骤516:同步设备判断业务同步流程中的元服务3是否同步正常,若是,则执行步骤517,否则,执行步骤518。
步骤517:同步设备确定数据同步成功。
步骤518:同步设备终止执行后续元服务并回滚,以及向业务***返回同步失败响应消息。
本申请实施例中,预先配置包含字段参数变量的业务同步流程,从而可以根据同步请求消息中包含的业务流程标识信息和字段参数信息,自定义同步的业务数据,以及选择相应的业务同步流程,在业务层级同步自定义数据,避免了全量数据同步带来的不可预见的风险,再者,通过执行包含多个元服务的业务同步流程,减少了同步版本发布次数,降低了发布成本,再者,可以适用于不同的业务***,降低了业务***接入的门槛,可以统一对各业务***的同步流程进行管理,降低了运维管理的复杂度和运维成本,还具有一定的容错性。
基于同一发明构思,本申请实施例中还提供了一种数据同步的装置,由于上述装置及设备解决问题的原理与一种数据同步的方法相似,因此,上述装置的实施可以参见方法的实施,重复之处不再赘述。
如图6示,其为本申请实施例提供的一种数据同步的装置的结构示意图。
一种数据同步的装置包括:
接收单元611,用于接收业务***发送的同步请求消息,同步请求消息中包含业务流程标识信息和字段参数信息,字段参数信息用于筛选同步数据;
第一获取单元612,用于获取同步请求消息中包含的业务流程标识信息和字段参数信息;
第二获取单元613,用于获取业务流程标识信息对应设置的业务同步流程;
执行单元614,用于根据字段参数信息,执行业务同步流程,实现数据同步。
较佳的,接收单元611还用于:
接收业务***发送的同步配置消息;
获取同步配置消息中包含的各元服务组合以及相应的权重,元服务组合包括数据源接口、目标数据接口和数据同步模型,数据同步模型包括字段参数变量,用于根据字段参数变量以及相应的字段参数信息确定数据筛选以及更新的条件;
分别针对每一元服务组合,创建相应的元服务,元服务用于根据包含的数据源接口、目标数据接口以及数据同步模型实现源数据库和目标数据库之间的数据同步;
根据各元服务组合相应的权重,配置各元服务的执行顺序,获得各元服务组成的业务同步流程以及相应的业务流程标识信息;
将获得的业务同步流程和相应的业务流程标识信息存储至区块链的区块中。
较佳的,接收单元611还用于:
获取同步配置消息中还包含的各元服务组合之间的依赖条件;
根据各元服务组合之间的依赖条件,配置相应的元服务之间执行时的依赖条件。
较佳的,第二获取单元613还用于:
按照预设时长,将区块链的区块中存储的业务同步流程和相应业务流程标识信息,同步至共享内存中;
第二获取单元613用于:
从共享内存中,获取业务流程标识信息对应设置的业务同步流程。
较佳的,执行单元614用于:
根据字段参数信息,按照业务同步流程中包含的多个元服务的执行顺序,分别针对每一元服务执行以下步骤:确定元服务中的数据同步模型对应的字段参数值,并根据元服务中的数据同步模型、字段参数变量和相应的字段参数值、数据源接口和目标数据接口,执行元服务,字段参数变量为数据同步模型中包含的变量。
较佳的,执行单元614用于:
获取字段参数变量的参数类型;
当字段参数变量的参数类型为外部参数时,则从字段参数信息中,获取字段参数变量对应的字段参数值;
当字段参数变量的参数类型为内联参数时,则获取元服务的前一个元服务的同步数据,并从前一个元服务的同步数据中,获取字段参数变量对应的字段参数值。
较佳的,执行单元614用于:
根据元服务中的数据筛选模型、字段参数变量和相应的字段参数值以及数据源接口,获取源数据库中的同步数据;
确定元服务中的字段参数变量对应的索引参数变量,并将字段参数变量对应的字段参数值,作为相应索引参数变量的索引参数值;
根据元服务中的索引参数变量和相应的索引参数值、数据更新模型以及目标数据接口,将同步数据同步至相应的目标数据库;
其中,同步数据模型包括数据筛选模型和数据更新模型。
本申请实施例提供的一种数据同步的方法、装置、设备和介质中,预先配置不同的业务同步流程,在接收到业务***发送的同步请求消息后,获取同步请求消息中包含的业务流程标识信息和字段参数信息,并获取业务流程标识信息对应设置的业务同步流程,以及根据字段参数信息执行业务同步流程,实现数据同步,这样,可以针对不同业务***的不同业务需求,预先配置不同的业务同步流程,可以复用于不同业务需求的业务***,从而可以对不同的业务***进行接入以及统一管理,降低了业务***接入以及管理的复杂度和运维成本,以及通过字段参数信息,可以自定义同步数据,避免了全量数据同步带来的数据冗余问题,再者,通过业务同步流程的方式,减少了频繁的业务同步版本的发布,降低了业务同步版本。
图7示出了一种同步设备7000的结构示意图。参阅图7所示,同步设备7000包括:处理器7010、存储器7020、电源7030、显示单元7040、输入单元7050。
处理器7010是同步设备7000的控制中心,利用各种接口和线路连接各个部件,通过运行或执行存储在存储器7020内的软件程序和/或数据,执行同步设备7000的各种功能,从而对同步设备7000进行整体监控。
本申请实施例中,处理器7010调用存储器7020中存储的计算机程序时执行如图2和图3中所示的实施例提供的数据同步的方法。
可选的,处理器7010可包括一个或多个处理单元;优选的,处理器7010可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作***、用户界面和应用等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器7010中。在一些实施例中,处理器、存储器、可以在单一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。
存储器7020可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、各种应用等;存储数据区可存储根据同步设备7000的使用所创建的数据等。此外,存储器7020可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件等。
同步设备7000还包括给各个部件供电的电源7030(比如电池),电源可以通过电源管理***与处理器7010逻辑相连,从而通过电源管理***实现管理充电、放电、以及功耗等功能。
显示单元7040可用于显示由用户输入的信息或提供给用户的信息以及同步设备7000的各种菜单等,本发明实施例中主要用于显示同步设备7000中各应用的显示界面以及显示界面中显示的文本、图片等对象。显示单元7040可以包括显示面板7041。显示面板7041可以采用液晶显示屏(Liquid Crystal Display,LCD)、有机发光二极管(Organic Light-Emitting Diode,OLED)等形式来配置。
输入单元7050可用于接收用户输入的数字或字符等信息。输入单元7050可包括触控面板7051以及其他输入设备7052。其中,触控面板7051,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触摸笔等任何适合的物体或附件在触控面板7051上或在触控面板7051附近的操作)。
具体的,触控面板7051可以检测用户的触摸操作,并检测触摸操作带来的信号,将这些信号转换成触点坐标,发送给处理器7010,并接收处理器7010发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板7051。其他输入设备7052可以包括但不限于物理键盘、功能键(比如音量控制按键、开关机按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
当然,触控面板7051可覆盖显示面板7041,当触控面板7051检测到在其上或附近的触摸操作后,传送给处理器7010以确定触摸事件的类型,随后处理器7010根据触摸事件的类型在显示面板7041上提供相应的视觉输出。虽然在图7中,触控面板7051与显示面板7041是作为两个独立的部件来实现同步设备7000的输入和输出功能,但是在某些实施例中,可以将触控面板7051与显示面板7041集成而实现同步设备7000的输入和输出功能。
同步设备7000还可包括一个或多个传感器,例如压力传感器、重力加速度传感器、接近光传感器等。当然,根据具体应用中的需要,上述同步设备7000还可以包括摄像头等其它部件,由于这些部件不是本申请实施例中重点使用的部件,因此,在图7中没有示出,且不再详述。
本领域技术人员可以理解,图7仅仅是同步设备的举例,并不构成对同步设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件。
本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述任意方法实施例中的数据同步的方法。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对相关技术做出贡献的部分可以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台同步设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分的方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。