一种基于时间戳和映射策略的多系统用户增量同步方法与流程

文档序号:11919022阅读:217来源:国知局

本发明涉及软件应用集成和用户数据同步技术领域,具体涉及一种基于时间戳和映射策略的多系统用户增量同步方法。



背景技术:

企业内部会在不同时期建立大量的业务系统,每个系统都会有自己的登录用户数据,为保证所有系统用户数据的一致性,本发明提供了一种任意系统用户数据变更,其他所有系统自动同步变更的技术手段。企业内的业务系统在建设时没有考虑后期的数据标准和兼容性,每个系统内都会建立独立的用户信息,随着系统的增多,用户变更将会给系统运维人员带来巨大的工作量,每个系统都需要进行重复操作。例如新入职一个员工,可能需要用系统运维人员以管理员身份登录到不同的业务系统中建立用户并授权。随着独立系统的增多,工作量亦随之增加,急需有一种高效、稳定的用户同步方法,当用户数据变更时,自动完成所有系统的同步。

目前业界存在的用户同步方法主要有以下策略,基于LDAP提供一套统一用户数据的方式,这种策略所有的系统使用一套用户库,虽然不需要向各系统进行数据推送,但是该模式要求所有的系统都支持LDAP协议,而企业内部历史建立的系统可能不支持该协议;另外一种策略是基于消息通知,每当有用户数据变更时,会将变更信息推送到各业务系统,各业务系统在接收到通知后自行处理用户数据的更新。这两种模式都存在不足之处:

(1)对业务系统提出了假设和要求,但是企业之前建立的系统通常没有考虑数据接口和协议,导致无法进行同步;

(2)需要业务系统进行升级改造,由于一些采购的系统并没有源代码,或者之前的开发商已无法提供技术支持服务而难于进行系统升级改造,导致无法进行数据同步。

综上,企业需要一种更加低侵入性、系统改造尽可能小、基于配置的和低成本的解决方案,完成企业内用户数据的同步任务。



技术实现要素:

有鉴于此,本发明提供了一种基于时间戳和映射策略的多系统用户增量同步方法,只需要提供各业务系统的映射策略,利用源头系统数据变更的时间戳,通过配置的方式即可自动完成源头变更数据在多个业务系统间的同步,对业务系统的假设和要求较少,对业务系统的改造少,具有普适性。

本发明的基于时间戳和映射策略的多系统用户增量同步方法,首先,设置一个用户同步中间件;当源头系统有用户数据变更时,记录数据更新的精确时间作为数据更新的时间戳;用户同步中间件向源头系统获取本次同步时间与上一次成功同步时间之间的增量数据;用户同步中间件依据源头系统的映射策略从增量数据中提取元数据以及操作方法,并根据目的业务系统的映射策略将元数据以及操作方法转换成目的对应业务系统的数据流;然后将转换后的数据流同步推送到对应的各业务系统,并在同步日志中记录执行时间、执行结果、源头系统、目标系统以及成功同步的数据量。

进一步地,所述源头系统唯一且固定。

进一步地,所述源头系统唯一但不固定,所有业务系统是等价的;用户同步中间件为各业务系统设置一个唯一的编号;源头系统通过选举产生。

进一步地,所述选举的方法如下:

用户同步中间件为源头系统设置一个租约;

当业务系统M有数据要进行变更时,首先向用户同步中间件提交修改申请,由用户同步中间件进行仲裁,以确定当前时刻是否可以进行变更操作:

用户同步中间件首先判断当前时刻是否存在拥有有效租约的源头系统,如果不存在,则选中业务系统M为源头系统,允许其进行变更操作;如果存在,判断业务系统M是否为当前源头系统,如果是,则允许进行变更操作,否则,驳回申请,不允许其进行变更操作。

进一步地,如果当前时刻不存在拥有有效租约的源头系统,有多个业务系统同时提交数据修改申请,选取优先级最高的业务系统为源头系统。

进一步地,当源头系统租约到期时,用户同步中间件向源头系统获取增量数据。

进一步地,采用CRON表达式设置用户同步中间件向源头系统获取增量数据的时间。

进一步地,为各数据配置全系统内唯一且一致的标识,用户同步中间件向源头系统获取增量数据后,仅对数据的最后一次更新结果进行同步。

进一步地,同步推送时,用户同步中间件通过内部锁机制,设置同步开始,每次只有一个同步操作在处理,同时将每一条数据操作的逆操作作为补偿操作按时间顺序依次存储在临时表中;当所有操作成功完成,记录同步日志,用户同步中间件释放内部锁,清除临时表数据,本次同步成功完成;如果发生数据异常,则将用户同步中间件临时表中记录的补偿操作按先进后出的模式进行执行,进行事务补偿作为回滚机制,记录同步日志,结束本次同步,清空临时表的数据,准备下一次同步。

有益效果:

(1)本发明通过设置一个用户同步中间件,由用户同步中间件基于源头系统数据变更的时间戳提取增量数据,然后根据源头系统和其他业务系统的映射策略,将增量数据转换为目的业务系统的数据流,实现用户增量同步,对业务系统假设和要求较少,对业务系统的改造少,适用于新建系统和遗留系统的集成,具有普适性。

(2)本发明支持单源模式和多源模式两种运行模式设置,适用于更多不同的应用场景。

(3)多源模式下,本发明还给出了一种源头选举方法,为源头设置租约,避免每次都进行选举操作,提升系统的运行效率。

(4)为各数据配置全系统内唯一且一致的标识,当数据在本次同步时有连续多次操作,则仅对数据的最后一次更新结果进行同步,提升系统效率。

(5)设置回滚机制,用户同步中间件在同步推送时,通过内部锁机制,每次只有一个同步操作在处理,同时记录各数据操作的逆操作;如果同步操作发生异常,则执行逆操作,实现同步操作的回滚,确保失败操作不会对后续操作产生影响,确保数据的完整性。

(6)本发明映射策略可配、数据同步策略可配,灵活性高。

附图说明

图1为用户同步流程图。

具体实施方式

下面结合附图并举实施例,对本发明进行详细描述。

本发明提供了一种基于时间戳和映射策略的多系统用户增量同步方法,通过设置一个用户同步中间件,由用户同步中间件基于源头系统数据变更的时间戳提取增量数据,并根据源头系统和其他业务系统的映射策略,将增量数据转换为目的业务系统的数据流,实现用户增量同步。

具体包括如下步骤:

步骤一、设置一个用户同步中间件,在用户同步中间件启动后,业务系统首先需要在用户同步中间件中进行注册,注册信息包括系统标识、系统数据连接信息、系统映射策略,在用户同步中间件进行验证通过后,业务系统注册成功,用户同步中间件为业务系统生成系统内唯一的编号,编号从1开始,编号可以手动调整但是要保证全系统唯一,作为设置系统优先级的主要依据,该编号会在后续的系统源头选举中应用。

步骤二、同步策略设置,在业务系统注册完成后,需要进行同步策略的设置。同步策略主要包括系统运行模式设置和同步时间策略设置。

运行模式设置,运行模式包括两种模式,即单源模式和多源模式,单源模式时,系统为层次结构,设置一个固定的源头系统作为Master,其他业务系统都是Slave,用户数据变更只能由Master发起,由用户同步中间件将变更数据同步到所有的Slave中。多源模式时,系统架构为星形结构,所有业务系统是等价的,所有业务系统都可以发起数据变更。

同步时间策略设置,数据同步基于中间件的同步日志和定时表达式进行控制。同步日志详细记录用户同步中间件每次执行同步的执行时间、执行结果、源头系统、目标业务系统以及成功同步的数据量。定时表达式用于向用户同步中间件设置任务执行时间,可以通过CRON表达式进行精确设置,用于设置用户同步中间件何时进行源头变更数据的获取。

步骤三、源头系统选举,如果系统运行模式为单源系统,则跳过该步骤;只有在多源模式时才需要执行源头系统选举操作。

多源模式下,源头的选举方法可多种,本发明并不限定,只要当前的源头系统是唯一的即可。本实施例提供了一种基于租约的选举方法,具体如下:

用户同步中间件为每个业务系统设置唯一的数字编号(从1开始),当业务系统M进行数据变更时,会首先向用户同步中间件提交修改申请,由用户同步中间件进行仲裁,以确定当前时刻是否可以进行变更操作。

仲裁的过程结合租约进行控制,租约指一定时限的锁机制,可以避免每次都进行选举操作,提升系统的运行效率。如果用户同步中间件中存在拥有有效租约的业务系统N,则N之外的业务系统不允许进行数据变更,直到N的租约到期后其他业务系统才可以进行变更。如果用户同步中间件不存在已经选中的业务系统,如果有多个业务系统同时提交数据修改申请,编号最小(即优先级最高)的业务系统将会被选中为源头系统而获取当前租约,并设置30分钟的有效期,期间其他业务系统的修改将会被驳回。

步骤四、源头数据变更,只有在步骤三中获取租约的业务系统才可以进行数据变更操作。变更过程为,管理员在业务系统M中进行数据变更,M会向用户同步中间件进行询问自己是否可以变更,当且仅当不存在源头系统或M为有效的源头系统时才进行数据变更。数据变更时记录数据更新的精确时间作为数据更新的时间戳,作为后续增量操作的依据。

步骤五、获取增量数据,增量数据获取主要通过第四步中数据更新的时间戳。用户同步中间件获取增量数据的触发机制为定时器设置的时间表达式触发或者源头系统租约到期。获取过程为,用户同步中间件根据同步日志中记录的最后一次成功同步的时间t0,并以此向源头系统查询增量的数据,增量数据的范围为更新时间大于t0并且小于等于本次同步时间t1。用户同步中间件通过配置的映射策略,将获取到的源头系统的增量数据暂存于用户同步中间件的数据库中。增加数据获取的范围为:

p(id,o,t)={(id,o,max(t))|t∈(t0,t1]}

其中,

p(id,o,t)表示本次需要同步的数据;

id表示业务系统的该数据的标识,全系统内唯一且一致;

t表示变更时间,t0为上次成功更新的时间,t1为本次同步时间;

o为变更操作,可以为新增、更新和删除的任意一种。

增量数据的结果集具有唯一性,即具有相同唯一标识的数据在结果集中只有一条,根据数据的更新时间,结果集只保存该记录最后一次更新的数据,以提升系统效率。

步骤六、用户数据映射,主要解决源头系统用户数据元数据、用户同步中间件数据元数据和目标业务系统数据元数据之间不匹配的问题。映射的内容包括字段名称不一致、字段类型不一致、编码规则不一致等。用户映射过程为,用户同步中间件提供数据抽取转换执行引擎,引擎转换步骤五读取所有的增量数据,将数据形成数据流,并通过用户提供的映射策略将数据流进行处理形成新的数据流。策略以XML文件进行描述,主要包括输入流字段的名称、类型、转换规则、输出流字段的名称、类型。转换规则包括字段对照、类型转换、自定义java转换等策略,实现数据在系统内的各子系统间进行无缝流转。映射策略定义完成后,注册到用户同步中间件中,在用户同步中间件进行数据同步时,会自动根据已注册的系统间的映射策略进行数据适配,实现数据到目标系统的转换。

步骤七、数据推送,通过步骤六,用户同步中间件获取需要推送到业务系统的目标数据流,通过数据处理引擎将转换后的数据流推送到各业务系统,期间会锁定源头系统,不允许其他业务选为源头系统;用户同步中间件通过日志查询业务系统N上次成功同步的时间,获取N需要更新的数据集,通过配置好的映射策略将数据推送到N中。根据时间表达式重复执行该过程。

步骤八、事务处理,用户同步中间件通过补偿机制实现整个同步过程中的事务控制。当一次同步开始后,用户同步中间件通过内部锁机制,设置同步开始,保证一次只有一个同步操作在处理。同步过程中,每一条数据操作的逆操作会进行暂时存储在临时表中,用于用户同步执行异常时的回滚机制。当所有操作没有异常成功完成,记录成功的同步日志,用户同步中间件释放内部锁,本次同步成功,清除临时表数据,本次同步成功完成;如果发生数据异常,为避免数据不一致,则将用户同步中间件临时表中记录的补偿操作按先进后出的模式进行执行,进行事务补偿作为回滚机制,并记录执行失败的同步日志,结束本次操作。执行完成后,清空临时表的数据,初始化用户同步中间件事务上下文,准备下一次事务操作,保证上次失败操作不会产生影响。

综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1