一种分布式事务最终一致的方法技术

技术编号:32873588 阅读:5 留言:0更新日期:2022-04-02 12:04
本发明专利技术涉及金融、电商、物流和网约车技术领域,具体公开了一种分布式事务最终一致的方法,包括以下步骤:S1、程序引入装置;S2、配置数据源,配置装置时间机制;S3、标记协作函数内每个涉及外部应用调用的函数;S4、启动程序;S5、协作函数F执行;S6、开始重试,反序列化;S7、重试成功,删除失败函数记录;S8、重试失败,达到最大次数停止重试。本发明专利技术提供一种分布式事务最终一致的方法,只需一次性配置工作,后面就可按需给函数标记,没有代码侵入,使用快速简单便捷,异步进行,不涉及性能阻碍,占用系统资源较少,与之同时,该方法极大的提高了微服务架构治理下应用协作处理的一致性。架构治理下应用协作处理的一致性。架构治理下应用协作处理的一致性。

【技术实现步骤摘要】
一种分布式事务最终一致的方法


[0001]本专利技术涉及金融、电商、物流和网约车
,具体为一种分布式事务最终一致的方法。

技术介绍

[0002]随着互联网的云服务器迅速发展,因云服务器成本低,响应速度快,扩张便捷,越来越多的企业开始采用微服务架构部署应用,原先的单一应用也随之被拆分为多个子应用,以达到高可用,局部可迭代目的,但随之而来的是多应用之间的协调工作问题,当多个应用之间需要共同完成一个特定业务时,如何保证每个子应用对各自负责的业务能够一致处理成功是微服务架构治理下不可回避的问题。
[0003]目前业界对于微服务架构治理下多应用之间协助处理业务一致主要是通过分布式事务开源框架,通过两阶段提交,或三阶段提交模式实现对业务处理的强一致,但这样会存在一定的性能问题,并增加了研发实现的复杂度,难以快速的,便捷的,轻量的接入使用。

技术实现思路

[0004]本专利技术的目的在于提供一种分布式事务最终一致的方法,以解决上述
技术介绍
中提出的问题。
[0005]为实现上述目的,本专利技术提供如下技术方案:一种分布式事务最终一致的方法,包括以下步骤:
[0006]S1、程序引入装置:装置具体为程序的插件,且插件包含五个组件,分别是配置组件、监听组件、读写组件、一致性组件和重试组件,其中配置组件主要提供插件的数据源,重试机制,以及一些函数注解的配置,监听组件主要用于监听函数的执行过程,读写组件主要用于记录和读取函数执行结果状态非0的异常数据,一致性组件主要是对多个函数执行结果如何保证一致的逻辑处理块,重试组件主要是对函数执行结果状态非0的异常数据进行重试调用;
[0007]S2、配置数据源,配置装置时间机制:选择函数执行结果状态非0的数据储存数据源,引入装置的触发时间机制,当数据源中有异常数据储存,并且达到触发间隔时,触发机制将被执行;
[0008]S3、标记协作函数内每个涉及外部应用调用的函数:假设程序内有一个协作函数F,协作函数F内将依次调用M1到Mn函数,M1到Mn函数都涉及对分布在该程序外的应用发起调用,业务上需要M1到Mn函数都被执行成功才认为本次分布式事务处理一致,在协作函数F,M1到Mn函数上方通过注解编码的形式加上S1步骤引入装置内提供的注解用于标识,并在第一个与最后一个函数上额外加上特定首尾注解;
[0009]S4、启动程序:装置被激活,开始监听每个被标记函数的执行情况;
[0010]S5、协作函数F执行:当程序在处理包含协作函数F的业务流程时,协作函数F将被执行,同时装置会通过步骤S3中在函数上方加上的注解标识监控协作函数F以及其内协作
调用的M1到Mn函数的触发,当M1触发时,装置会异步开始记录本次线程内所有被标记的函数执行,当最后一个函数Mn被执行结束后,装置会通过记录检查每个函数的执行结果,有任意函数执行结果状态非0则认为异常,装置则会根据步骤S2中配置的数据源进行结果序列化记录,无异常则装置不会作任何处理,执行结束;
[0011]S6、开始重试,反序列化:根据步骤S3中设置的时间机制,步骤S3中无配置则使用步骤S2中的时间机制对处理失败的函数进行反序列化,再模拟失败的函数进行反射代理重试执行,直至函数重试成功为止进入步骤S7,或达到最大重试次数为止进入步骤S8;
[0012]S7、重试成功,删除失败函数记录:至此整个业务事务达到最终一致处理成功,执行结束;
[0013]S8、重试失败,达到最大次数停止重试:标记失败,等待人工检验程序异常原因。
[0014]与现有技术相比,本专利技术的有益效果是:本专利技术提供一种分布式事务最终一致的方法,只需一次性配置工作,后面就可按需给函数标记,没有代码侵入,使用快速简单便捷,异步进行,不涉及性能阻碍,占用系统资源较少,与之同时,该方法极大的提高了微服务架构治理下应用协作处理的一致性,适合用于网约车等弱一致性等特定业务场景下分布式事务处理,可为企业微服务应用群提供健壮的自我修复机制,从而减少业务异常中断的次数,降低人工维护成本。
附图说明
[0015]图1为本专利技术的整体结构框图。
具体实施方式
[0016]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0017]请参阅图1,本专利技术提供一种技术方案:一种分布式事务最终一致的方法,包括以下步骤:
[0018]S1、程序引入装置:装置具体为程序的插件,且插件包含五个组件,分别是配置组件、监听组件、读写组件、一致性组件和重试组件,其中配置组件主要提供插件的数据源,重试机制,以及一些函数注解的配置,监听组件主要用于监听函数的执行过程,读写组件主要用于记录和读取函数执行结果状态非0的异常数据,一致性组件主要是对多个函数执行结果如何保证一致的逻辑处理块,重试组件主要是对函数执行结果状态非0的异常数据进行重试调用;
[0019]S2、配置数据源,配置装置时间机制:选择函数执行结果状态非0的数据储存数据源,引入装置的触发时间机制,当数据源中有异常数据储存,并且达到触发间隔时,触发机制将被执行;
[0020]S3、标记协作函数内每个涉及外部应用调用的函数:假设程序内有一个协作函数F,协作函数F内将依次调用M1到Mn函数,M1到Mn函数都涉及对分布在该程序外的应用发起调用,业务上需要M1到Mn函数都被执行成功才认为本次分布式事务处理一致,在协作函数
F,M1到Mn函数上方通过注解编码的形式加上S1步骤引入装置内提供的注解用于标识,并在第一个与最后一个函数上额外加上特定首尾注解;
[0021]S4、启动程序:装置被激活,开始监听每个被标记函数的执行情况;
[0022]S5、协作函数F执行:当程序在处理包含协作函数F的业务流程时,协作函数F将被执行,同时装置会通过步骤S3中在函数上方加上的注解标识监控协作函数F以及其内协作调用的M1到Mn函数的触发,当M1触发时,装置会异步开始记录本次线程内所有被标记的函数执行,当最后一个函数Mn被执行结束后,装置会通过记录检查每个函数的执行结果,有任意函数执行结果状态非0则认为异常,装置则会根据步骤S2中配置的数据源进行结果序列化记录,无异常则装置不会作任何处理,执行结束;
[0023]S6、开始重试,反序列化:根据步骤S3中设置的时间机制,步骤S3中无配置则使用步骤S2中的时间机制对处理失败的函数进行反序列化,再模拟失败的函数进行反射代理重试执行,直至函数重试成功为止进入步骤S7,或达到最大重试次数为止进入步骤S8;
[0024]S7、重试成功,删除失败函数记录:至此整个业务事务达到最终一致处理成功,执行结束;
[0025]S8、重试失败,达到最大次数停止重试:标记失败,等待人工检验程序异常原因。
[0026]本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种分布式事务最终一致的方法,其特征在于,包括以下步骤:S1、程序引入装置:装置具体为程序的插件,且插件包含五个组件,分别是配置组件、监听组件、读写组件、一致性组件和重试组件,其中配置组件主要提供插件的数据源,重试机制,以及一些函数注解的配置,监听组件主要用于监听函数的执行过程,读写组件主要用于记录和读取函数执行结果状态非0的异常数据,一致性组件主要是对多个函数执行结果如何保证一致的逻辑处理块,重试组件主要是对函数执行结果状态非0的异常数据进行重试调用;S2、配置数据源,配置装置时间机制:选择函数执行结果状态非0的数据储存数据源,引入装置的触发时间机制,当数据源中有异常数据储存,并且达到触发间隔时,触发机制将被执行;S3、标记协作函数内每个涉及外部应用调用的函数:假设程序内有一个协作函数F,协作函数F内将依次调用M1到Mn函数,M1到Mn函数都涉及对分布在该程序外的应用发起调用,业务上需要M1到Mn函数都被执行成功才认为本次分布式事务处理一致,在协作函数F,M1到Mn函数上方通过注解编码的形式加上S1步骤引入装置内提供的注解用于标识,并在第...

【专利技术属性】
技术研发人员:章威赵刚
申请(专利权)人:上海赛可出行科技服务有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1