分布式mysql保持数据一致性_一种分布式跨数据库保持事务一致性的方法及系统与流程...

8b91be233d1bf5982591a03e1f3cf393.gif

本发明涉及计算机网络技术领域,尤其涉及一种分布式跨数据库保持事务一致性的方法及系统。

背景技术:

目前,分布式服务架构十分的流行,特别是对于电商领域来说。他的优点就不多说了,但是随着集群机器的增加,集群的规模也越来越大,随着集群搭载的服务规模也越来越大,导致事务的处理也就越来越复杂,有可能一个事务涉及到n多个服务,可想而知就算再优良的方案也很难处理这么复杂的事务,很容易存在事务不一致的问题。

技术实现要素:

为了解决上述技术问题,本发明的目的是提供一种分布式跨数据库保持事务一致性的方法及系统。

本发明所采用的技术方案是:一种分布式跨数据库保持事务一致性的方法,其包括:在主业务系统中建立主业务活动表和分支业务活动表,登记主业务活动和所有分支业务活动,并开始业务活动;分支业务系统执行分支业务活动,建立当前业务活动状态记录表,持久化保存当前活动状态,并向主业务系统发送活动状态;主业务系统持久化保存主业务活动和分支业活动的执行数据,对失败的业务活动操作定时进行重操作。

进一步,所述分支业务系统执行分支业务活动,建立当前业务活动状态记录表,持久化保存当前活动状态,并向主业务系统发送活动状态步骤包括:分支业务系统执行分支业务活动,建立当前业务活动状态记录表,记录业务活动状态,若成功则将操作数据永久保存至分支业务数据库;若失败则返回信息至主业务系统。

进一步,所述主业务系统持久化保存主业务活动和从业活动的执行数据,对失败的业务活动操作定时进行重操作步骤包括:所述主业务系统持久化保存主业务活动和从业活动的执行数据,对失败的业务活动操作进行永久化保存,重新发送指令至分支业务系统,分支业系统重新执行分支业务活动,直到分支业务活动执行成功,并永久化保存。

一种分布式跨数据库保持事务一致性的系统,其用于实施上述分布式跨数据库保持事务一致性的,其特征在于:其包括主业务系统和分支业务系统,所述主业务系统包括:主数据库:用于存储主业务活动表和分支业务活动表,登记主业务活动、所有分支业务活动;业务活动管理器:用于管理所有业务活动的执行,并对执行过程中成功和失败操作的数据进行持久化保存;定时器:用于对失败的业务活动操作定时进行重操作,直到失败业务活动操作执行重操作成功为止;所述分支业务系统包括:业务活动执行器:用于执行分支业务活动;分支数据库:用于持久化保存当前业务活动状态;反馈单元:用于向主业务系统反馈当前业务活动状态。

进一步,所述分支系统还包括判断单元:其用于若成功则将操作数据永久保存至分支业务数据库;若失败则返回信息至主业务系统。

进一步,主业务系统还包括重发单元,其用于重新发送业务活动至分支业务系统。

本发明的有益效果是:通过记录每个业务活动的执行情况,对每个活动执行失败做反向操作登记,并对业务活动执行过程中成功和失败操作的数据进行持久化保持到数据库中,失败的业务活动操作定时进行重操作,确保分布式架构系统跨数据库进行事务操作时始终能保持数据的一致性要求,能更有效的解决跨数据库分布式事务一致性的问题。

附图说明

下面结合附图对本发明的具体实施方式作进一步说明:

图1是本发明中分布式跨数据库保持事务一致性的方法的流程图;

图2是本发明中分布式跨数据库保持事务一致性的系统的示意图。

具体实施方式

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

如图1所示,一种分布式跨数据库保持事务一致性的方法,其包括:

在主业务系统中建立主业务活动表和分支业务活动表,登记主业务活动和所有分支业务活动,并开始业务活动;

主业务活动列表登记有业务活动的唯一标识、开始状态、结束状态(业务活动处理失败,未结束时的处理机制)、分支服务个数、主业务活动创建时间、状态变更时间、已完成的分支服务执行返回操作、重复提交,未完成的分支服务执行提交操作。

分支业务活动表登记有分支活动标识、所述主业务活动ID、分支服务名、执行提交或返回动作的方法名、提交或回滚方法对应参数的序列化值,通过该值进行反序列化后可获得实体对象、分支业务活动创建时间。

分支业务系统执行分支业务活动,建立当前业务活动状态记录表,持久化保存当前活动状态,并向主业务系统发送活动状态;

当前业务活动状态记录表中记录有所属主业务活动ID、所属主业务活动ID、提交方法名、当前活动状态、活动创建时间、活动状态变更时间。

主业务系统持久化保存主业务活动和分支业活动的执行数据,对失败的业务活动操作定时进行重操作。定义触发时间,每5分钟触发定时任务,定时任务实现查询前15分钟至前2小时间所有未完成主业务活动,对这些操作执行重操作直至所有主业务活动执行成功。

进一步作为优选的实施方式,所述分支业务系统执行分支业务活动,建立当前业务活动状态记录表,持久化保存当前活动状态,并向主业务系统发送活动状态步骤包括:分支业务系统执行分支业务活动,建立当前业务活动状态记录表,记录业务活动状态,若成功则将操作数据永久保存至分支业务数据库;若失败则返回信息至主业务系统。

具体的,登记主业务活动、所有分支业务活动,并开始业务活动。执行分支业务活动A,将数据X持久化保存(A业务的本地事务)执行分支业务活动B,将数据Y持久化保存(B业务的本地事务)持久化保存Y失败,业务活动管理器将X数据执行反操作(回滚),并使回滚数据持久化。

进一步作为优选的实施方式,所述主业务系统持久化保存主业务活动和从业活动的执行数据,对失败的业务活动操作定时进行重操作步骤包括:所述主业务系统持久化保存主业务活动和从业活动的执行数据,对失败的业务活动操作进行永久化保存,重新发送指令至分支业务系统,分支业系统重新执行分支业务活动,直到分支业务活动执行成功,并永久化保存。

具体的,登记主业务活动、所有分支业务活动,并开始业务活动。执行分支业务活动A,将数据X持久化保存(A业务的本地事务),执行分支业务活动B,将数据Y持久化保存(B业务的本地事务),持久化保存Y失败,业务活动管理器对Y进行补偿操作,直到Y数据成功持久化为止。

一种分布式跨数据库保持事务一致性的系统,其用于实施上述分布式跨数据库保持事务一致性的,其特征在于:其包括主业务系统和分支业务系统,所述主业务系统包括:主数据库:用于存储主业务活动表和分支业务活动表,登记主业务活动、所有分支业务活动;业务活动管理器:用于管理所有业务活动的执行,并对执行过程中成功和失败操作的数据进行持久化保存;定时器:用于对失败的业务活动操作定时进行重操作,直到失败业务活动操作执行重操作成功为止;所述分支业务系统包括:业务活动执行器:用于执行分支业务活动;分支数据库:用于持久化保存当前业务活动状态;反馈单元:用于向主业务系统反馈当前业务活动状态。

进一步作为优选的实施方式,所述分支系统还包括判断单元:其用于若成功则将操作数据永久保存至分支业务数据库;若失败则返回信息至主业务系统。

进一步作为优选的实施方式,主业务系统还包括重发单元,其用于重新发送业务活动至分支业务系统。

以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做作出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部