本发明主要涉及系统脏数据技术领域,具体涉及一种系统架构中脏数据处理方法、装置及存储介质。
背景技术:
分布式系统或微服务系统架构下数据一致性解决方案主要靠分布式事务方案:包括二阶段提交、saga模式等。分布式事务相对比较复杂,需要部署第三方应用,而且使用分布式事务会减低服务整体性能,有的分布式如tcc,需要业务侧做较大的改动,对业务并不透明,即分布式事务使用于特定的业务场景,并不适合所有系统使用。
在实际的分布式系统或微服务系统架构中经常由于超时或双方系统超时时间设置不合理导致的调用者先超时,被调用者并不知道调用者已经超时仍然继续执行,存在处理数据不一致性、产生脏数据的问题。
技术实现要素:
本发明所要解决的技术问题是针对现有技术的不足,提供一种系统架构中脏数据处理方法、装置及存储介质。
本发明解决上述技术问题的技术方案如下:一种系统架构中脏数据处理方法,包括如下步骤:
获取第一系统当前时间,根据所述第一系统当前时间设置执行目标任务的第一系统期望响应时间;
当第二系统接收到第一系统发送的所述目标任务时,获取第二系统的第一当前时间t,根据所述第一系统期望响应时间和所述第二系统的第一当前时间t设置第二系统期望响应时间,根据所述第二系统期望响应时间设置调用所述第三系统的超时时间;
当所述第三系统接收到所述第二系统发送的所述目标任务时,获取第三系统当前时间,根据所述超时时间和所述第三系统当前时间确定是否调用所述第三系统处理所述目标任务;
当所述第二系统接收到所述第三系统发送的目标任务处理数据时,获取第二系统的第二当前时间t’,根据所述第二系统期望响应时间和所述第二系统的第二当前时间t’确定是否将所述目标任务处理数据发送所述第一系统。
本发明解决上述技术问题的另一技术方案如下:一种系统架构中脏数据处理装置,包括:
时间获取模块,用于获取第一系统当前时间;
处理模块,用于根据所述第一系统当前时间设置执行目标任务的第一系统期望响应时间;
所述时间获取模块,还用于当第二系统接收到第一系统发送的所述目标任务时,获取第二系统的第一当前时间t;
所述处理模块,还用于根据第一系统期望响应时间和第二系统的第一当前时间t设置第二系统期望响应时间,根据所述第二系统期望响应时间设置调用第三系统的超时时间;
所述时间获取模块,还用于当第三系统接收到第二系统发送的所述目标任务时,获取第三系统当前时间;
所述处理模块,还用于根据所述超时时间和所述第三系统当前时间确定是否调用所述第三系统处理所述目标任务;
所述时间获取模块,还用于当所述第二系统接收到第三系统发送的目标任务处理数据时,获取第二系统的第二当前时间t’,
所述处理模块,还用于根据所述第二系统期望响应时间和所述第二系统的第二当前时间t’确定是否将所述目标任务处理数据发送所述第一系统。
本发明解决上述技术问题的另一技术方案如下:一种系统架构中脏数据处理装置,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,当所述处理器执行所述计算机程序时,实现如上所述的系统架构中脏数据处理方法。
本发明解决上述技术问题的另一技术方案如下:一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,当所述计算机程序被处理器执行时,实现如上所述的系统架构中脏数据处理方法。
本发明的有益效果是:通过第一系统和第二系统的当前时间设置第一系统期望响应时间和第二系统期望响应时间,第二系统作为中间系统,通过第二系统来确定是否将目标任务发送第三系统中处理,能够做到对脏数据的产生进行一级防护,第三系统处理的目标任务处理数据返回第二系统,通过第二系统来确定是否将目标任务处理数据返回第一系统,能够做到对脏数据的产生进行二级防护,有效的降低脏数据产生。
附图说明
图1为本发明实施例提供的系统架构中脏数据处理方法的流程示意图;
图2为本发明实施例提供的系统架构中脏数据处理装置的功能模块示意图;
图3为发明实施例提供的系统架构中脏数据处理方法的时序流程示意图。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
图1为本发明实施例提供的系统架构中脏数据处理方法的流程示意图。
如图1所示,一种系统架构中脏数据处理方法,包括如下步骤:
获取第一系统当前时间,根据所述第一系统当前时间设置执行目标任务的第一系统期望响应时间;
当第二系统接收到第一系统发送的所述目标任务时,获取第二系统的第一当前时间t,根据所述第一系统期望响应时间和所述第二系统的第一当前时间t设置第二系统期望响应时间,根据所述第二系统期望响应时间设置调用所述第三系统的超时时间;
当所述第三系统接收到所述第二系统发送的所述目标任务时,获取第三系统当前时间,根据所述超时时间和所述第三系统当前时间确定是否调用所述第三系统处理所述目标任务;
当所述第二系统接收到所述第三系统发送的目标任务处理数据时,获取第二系统的第二当前时间t’,根据所述第二系统期望响应时间和所述第二系统的第二当前时间t’确定是否将所述目标任务处理数据发送所述第一系统。
应理解地,第二当前时间t’为第二次统计的第二系统当前时间。
上述实施例中,通过第一系统和第二系统的当前时间设置第一系统期望响应时间和第二系统期望响应时间,第二系统作为中间系统,通过第二系统来确定是否将目标任务发送第三系统中处理,能够做到对脏数据的产生进行一级防护,第三系统处理的目标任务处理数据返回第二系统,通过第二系统来确定是否将目标任务处理数据返回第一系统,能够做到对脏数据的产生进行二级防护,有效的降低脏数据产生。
可选地,作为本发明的一个实施例,所述根据所述第一系统当前时间设置执行目标任务的第一系统期望响应时间的过程包括:
统计第一系统调用第二系统的调用超时时间,将所述第一系统当前时间加上所述调用超时时间,求和得到第一系统期望响应时间。
具体地,可通过下式计算第一系统期望响应时间,
t第一系统期望响应时间=t第一系统当前时间+ta调用超时时间。
上述实施例中,通过当前时间和调用超时时间设置第一系统期望响应时间,能够防止脏数据传至第一系统中。
可选地,作为本发明的一个实施例,设置第二系统期望响应时间前,还包括步骤,根据所述第一系统期望响应时间和第二系统的第一当前时间t确定是否通过第二系统将所述目标任务发送所述第三系统:
将所述第二系统第一当前时间t减去所述第一系统期望响应时间,若时间差值小于或等于0,则不发送。
具体地,还包括步骤:b客户端收到第一系统调用请求后,对该请求进行校验。
可通过判断式进行判断:
t第二系统的第一当前时间-t第一系统期望响应时间≤0,若满足,则不发送目标任务,也不执行后续业务逻辑,并返回超时错误提示。
上述实施例中,第二系统作为中间系统,通过第二系统来确定是否将目标任务发送第三系统中处理,有效的降低脏数据产生。
可选地,作为本发明的一个实施例,所述根据所述第一系统期望响应时间和所述第二系统第一当前时间t设置第二系统期望响应时间的过程包括:
将所述第一系统期望响应时间减去第二系统第一当前时间t,得到第二系统期望响应时间;
具体地,t第二系统期望响应时间=t第一系统期望响应时间-t第二系统的第一当前时间。
所述根据所述第二系统期望响应时间设置调用所述第三系统的超时时间的过程包括:
根据第二系统期望响应时间减去第二系统的第一当前时间t,得到调用第三系统的超时时间。
具体地,调用第三系统的超时时间:
t第二系统期望响应时间-t第二系统的第一当前时间。
上述实施例中,第二系统作为中间系统,通过第二系统来确定是否将目标任务发送第三系统中处理,有效的降低脏数据产生。
可选地,作为本发明的一个实施例,所述根据所述第二系统期望响应时间和所述第二系统的第二当前时间t’确定是否将所述目标任务处理数据发送所述第一系统的过程包括:
将所述第二系统的第二当前时间t’减去所述第一系统期望响应时间,若差值小于或等于0,则不发送所述目标任务处理数据。
具体地,t’第二系统的第二当前时间-t第一系统期望响应时间≤0,若满足,则不发送目标任务,也不执行后续业务逻辑,并返回超时错误提示。
上述实施例中,第二系统作为中间系统,通过第二系统来确定是否将目标任务发送第三系统中处理,能够做到对脏数据的产生进行二级防护,有效的降低脏数据产生。
如图3所示,整个实施过程为:
1.获取第一系统当前时间。
2.设置第一系统期望响应时间:
t第一系统期望响应时间=t第一系统当前时间+ta调用超时时间。
3.获取第二系统当前时间t,
判断t第二系统的第一当前时间-t第一系统期望响应时间≤0。
4.若满足,返回超时错误提示。
5.若不满足,执行业务代码,如sql操作;
调用远程服务,设置:
t第二系统期望响应时间=t第一系统期望响应时间-t第二系统的第一当前时间,
设置调用第三系统的超时时间:
t第二系统期望响应时间-t第二系统的第一当前时间。
6.若满足,第三系统内部处理目标任务,得到目标任务处理数据,将目标任务处理数据返回第二系统。
7.第二系统执行其他逻辑,如sql操作。
8.判断t’第二系统的第二当前时间-t第一系统期望响应时间≤0。
9.若满足,返回目标任务处理数据;
若不满足,不执行后续业务逻辑,并返回超时错误提示。
图2为本发明实施例提供的系统架构中脏数据处理装置的功能模块示意图。
可选地,作为本发明的一个实施例,如图2所示,一种系统架构中脏数据处理装置,包括:
时间获取模块,用于获取第一系统当前时间;
处理模块,用于根据所述第一系统当前时间设置执行目标任务的第一系统期望响应时间;
所述时间获取模块,还用于当第二系统接收到第一系统发送的所述目标任务时,获取第二系统的第一当前时间t;
所述处理模块,还用于根据所述第一系统期望响应时间和所述第二系统的第一当前时间t设置第二系统期望响应时间,根据所述第二系统期望响应时间设置调用所述第三系统的超时时间;
所述时间获取模块,还用于当所述第三系统接收到所述第二系统发送的所述目标任务时,获取第三系统当前时间;
所述处理模块,还用于根据所述超时时间和所述第三系统当前时间确定是否调用所述第三系统处理所述目标任务;
所述时间获取模块,还用于当所述第二系统接收到所述第三系统发送的目标任务处理数据时,获取第二系统的第二当前时间t’;
所述处理模块,还用于根据所述第二系统期望响应时间和所述第二系统第二当前时间t’确定是否将所述目标任务处理数据发送所述第一系统。
可选地,作为本发明的一个实施例,所述处理模块具体用于:
统计第一系统调用第二系统的调用超时时间,将所述第一系统当前时间加上所述调用超时时间,求和得到第一系统期望响应时间。
可选地,作为本发明的一个实施例,所述处理模块还用于:
根据所述第一系统期望响应时间和第二系统当前时间确定是否通过第二系统将所述目标任务发送所述第三系统:
将所述第二系统当前时间减去所述第一系统期望响应时间,若时间差值小于或等于0,则不发送。
可选地,作为本发明的一个实施例,一种系统架构中脏数据处理装置,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,当所述处理器执行所述计算机程序时,实现如上所述的系统架构中脏数据处理方法。
可选地,作为本发明的一个实施例,一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,当所述计算机程序被处理器执行时,实现如上所述的系统架构中脏数据处理方法。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。