CN111625301A - 幂等处理方法、装置、设备及存储介质 - Google Patents
幂等处理方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN111625301A CN111625301A CN202010448414.6A CN202010448414A CN111625301A CN 111625301 A CN111625301 A CN 111625301A CN 202010448414 A CN202010448414 A CN 202010448414A CN 111625301 A CN111625301 A CN 111625301A
- Authority
- CN
- China
- Prior art keywords
- idempotent
- service
- service request
- request
- preset
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 25
- 238000012545 processing Methods 0.000 claims abstract description 82
- 238000000034 method Methods 0.000 claims abstract description 44
- 238000004590 computer program Methods 0.000 claims description 11
- 238000004891 communication Methods 0.000 claims description 8
- 230000008569 process Effects 0.000 abstract description 27
- 238000011161 development Methods 0.000 abstract description 9
- 238000013461 design Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例提供一种幂等处理方法、装置、设备及存储介质,通过接收用户发送的任一业务的业务请求,其中包括业务相关参数;根据业务对应的预设幂等判断策略对业务请求进行幂等判断;若不属于重复请求,将业务请求通过业务对应的业务接口发送给业务处理器;若属于重复请求,根据业务对应的预设幂等返回策略向用户返回结果。通过将幂等处理过程与业务解耦,减轻后端业务接口压力,可使得业务处理器资源得到更好的利用;将多个业务的幂等处理过程统一处理,支持多样化幂等判断策略,只需在幂等处理设备配置和调试幂等判断策略,避免幂等开发过程失误对后续业务造成影响,幂等判断策略配置和调试简单快速,减少开发人员代码出错率和重复劳动成本。
Description
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种幂等处理方法、装置、设备及存储介质。
背景技术
幂等的概念来自于抽象代数,比如对于一元函数来说,满足以下条件:f(f(x))=f(x),即可称为满足幂等性。在计算机科学中,一个操作如果多次执行产生的影响与一次执行的影响相同,这样的操作即符合幂等性。在分布式系统中,服务消费方调用服务提供方的接口,多次调用的结果应该与一次调用的结果一样,这正是分布式环境下幂等性的语义。在分布式环境下,服务的调用一般采用http协议或者rpc的方式,即双方需要通过网络进行通信,而因为网络故障或者消息超时的存在,可能服务消费方已经成功调用了服务提供方的服务接口,但是消费方并没有收到来自对方的成功响应,导致消费方以为服务调用失败从而再次进行调用,也就是说网络的不可靠性导致了服务接口被多次调用的可能。分布式系统必须保证在这种情况下,即使接口被多次调用,它对系统产生的影响应该与该接口只被调用一次的结果一样。
现有技术中业务需要进行各自的业务幂等处理方法,例如基于token机制、基于DB悲观锁、乐观锁、状态机、分布式锁等等。现有技术中需要对在每一业务的业务接口分别配置幂等处理机制,业务接口压力较大,占用业务系统资源,且存在需要重复开发,同时不便于调整,一旦开发失误,对后续业务会造成很大影响。
发明内容
本发明实施例提供一种幂等处理方法、装置、设备及存储介质,以将多个业务的幂等处理过程统一处理,减小后端业务接口压力。
本发明实施例的第一方面是提供一种幂等处理方法,包括:
接收用户发送的任一业务的业务请求,所述业务请求包括业务相关参数;
获取所述业务对应的预设幂等判断策略,根据所述预设幂等判断策略对所述业务请求进行幂等判断;
若所述业务请求不属于重复请求,则将业务请求通过所述业务对应的业务接口发送给业务处理器;
若所述业务请求属于重复请求,则根据所述业务对应的预设幂等返回策略向用户返回结果。
在一种可能的设计中,所述根据所述预设幂等判断策略对所述业务请求进行幂等判断,包括:
根据所述业务相关参数以及所述预设幂等判断策略,生成所述业务请求的幂等标识;
将所述业务请求的幂等标识与存储单元中至少一个缓存的幂等标识进行比较,判断是否存在与所述业务请求的幂等标识相匹配的幂等标识;
若存在,则确定所述业务请求属于重复请求;
若不存在,则确定所述业务请求不属于重复请求,并将所述业务请求的幂等标识缓存于所述存储单元中。
在一种可能的设计中,所述根据所述业务相关参数以及所述预设幂等判断策略,生成所述业务请求的幂等标识,包括:
根据所述预设幂等判断策略中包括的预定加密策略,对所述业务相关参数进行加密,生成所述业务请求的幂等标识。
在一种可能的设计中,所述将所述业务请求的幂等标识缓存于所述存储单元中,包括:
根据所述预设幂等判断策略中包括的存储策略,将所述业务请求的幂等标识缓存于所述存储单元中。
在一种可能的设计中,所述存储策略包括幂等时长;
所述根据所述预设幂等判断策略中包括的存储策略,将所述业务请求的幂等标识缓存于所述存储单元中,包括:
将所述业务请求的幂等标识缓存于所述存储单元的预定位置,并记录存储时长;
当存储时长达到所述幂等时长,则从所述存储单元中删除所述业务请求的幂等标识。
在一种可能的设计中,所述根据所述业务对应的预设幂等返回策略向用户返回结果,包括:
根据所述业务对应的预设幂等返回策略向用户返回错误提示、或者返回重复请求中首次业务请求的业务结果、或者返回空值。
在一种可能的设计中,所述将业务请求通过所述业务对应的业务接口发送给业务处理器后,还包括:
从所述业务处理器获取所述业务请求对应的业务结果,并在所述存储单元中与所述业务请求的幂等标识进行关联存储。
本发明实施例的第二方面是提供一种幂等处理装置,包括:
通信模块,用于接收用户发送的任一业务的业务请求,所述业务请求包括业务相关参数;
处理模块,用于获取所述业务对应的预设幂等判断策略,根据所述预设幂等判断策略对所述业务请求进行幂等判断;若所述业务请求不属于重复请求,则将业务请求通过所述业务对应的业务接口发送给业务处理器;若所述业务请求属于重复请求,则根据所述业务对应的预设幂等返回策略向用户返回结果。
在一种可能的设计中,所述处理模块在根据所述预设幂等判断策略对所述业务请求进行幂等判断时,用于:
根据所述业务相关参数以及所述预设幂等判断策略,生成所述业务请求的幂等标识;
将所述业务请求的幂等标识与存储单元中至少一个缓存的幂等标识进行比较,判断是否存在与所述业务请求的幂等标识相匹配的幂等标识;
若存在,则确定所述业务请求属于重复请求;
若不存在,则确定所述业务请求不属于重复请求,并将所述业务请求的幂等标识缓存于所述存储单元中。
在一种可能的设计中,所述处理模块在根据所述业务相关参数以及所述预设幂等判断策略,生成所述业务请求的幂等标识时,用于:
根据所述预设幂等判断策略中包括的预定加密策略,对所述业务相关参数进行加密,生成所述业务请求的幂等标识。
在一种可能的设计中,所述处理模块在将所述业务请求的幂等标识缓存于所述存储单元中时,用于:
根据所述预设幂等判断策略中包括的存储策略,将所述业务请求的幂等标识缓存于所述存储单元中。
在一种可能的设计中,所述存储策略包括幂等时长;
所述处理模块在根据所述预设幂等判断策略中包括的存储策略,将所述业务请求的幂等标识缓存于所述存储单元中时,用于:
将所述业务请求的幂等标识缓存于所述存储单元的预定位置,并记录存储时长;
当存储时长达到所述幂等时长,则从所述存储单元中删除所述业务请求的幂等标识。
在一种可能的设计中,所述处理模块在根据所述业务对应的预设幂等返回策略向用户返回结果时,用于:
根据所述业务对应的预设幂等返回策略向用户返回错误提示、或者返回重复请求中首次业务请求的业务结果、或者返回空值。
在一种可能的设计中,所述处理模块在将业务请求通过所述业务对应的业务接口发送给业务处理器后,还用于:
从所述业务处理器获取所述业务请求对应的业务结果,并在所述存储单元中与所述业务请求的幂等标识进行关联存储。
本发明实施例的第三方面是提供一种幂等处理设备,包括:
存储器;
处理器;以及
计算机程序;
其中,所述计算机程序存储在所述存储器中,并被配置为由所述处理器执行以实现如第一方面所述的方法。
本发明实施例的第四方面是提供一种计算机可读存储介质,其上存储有计算机程序;
所述计算机程序被处理器执行时实现如第一方面所述的方法。
本发明实施例提供的幂等处理方法、装置、设备及存储介质,通过接收用户发送的任一业务的业务请求,所述业务请求包括业务相关参数;获取所述业务对应的预设幂等判断策略,根据所述预设幂等判断策略对所述业务请求进行幂等判断;若所述业务请求不属于重复请求,则将业务请求通过所述业务对应的业务接口发送给业务处理器;若所述业务请求属于重复请求,则根据所述业务对应的预设幂等返回策略向用户返回结果。本发明实施例将幂等处理过程与业务解耦,减轻后端业务接口压力,可使得业务处理器资源得到更好的利用;并且可将多个业务的幂等处理过程统一处理,支持多样化的幂等判断策略,提供可扩展的可能,开发人员只需要在幂等处理设备上配置和调试幂等判断策略即可,也可避免幂等开发过程失误对后续业务造成影响,此外,幂等判断策略的配置和调试过程简单、快速,可减少开发人员代码出错率,也可减少开发人员重复劳动成本。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明实施例的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的幂等处理方法的系统架构图;
图2为本发明实施例提供的幂等处理方法流程图;
图3为本发明实施例另一实施例提供的幂等处理方法流程图;
图4为本发明实施例另一实施例提供的幂等处理方法流程图;
图5为本发明实施例另一实施例提供的幂等处理方法流程图;
图6为本发明实施例提供的幂等处理装置的结构图;
图7为本发明实施例提供的幂等处理设备的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明实施例一部分实施例,而不是全部的实施例。基于本发明实施例中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明实施例保护的范围。
现有技术的中需要对在每一业务的业务接口分别配置幂等处理机制,业务接口压力较大,占用业务系统资源,且存在需要重复开发,同时不便于调整,一旦开发失误,对后续业务会造成很大影响。因此本发明实施例中将幂等处理过程与业务解耦,将多个业务的幂等处理过程统一处理,减轻后端业务接口压力,可使得业务处理器资源得到更好的利用,并且可支持多样化的幂等判断策略,提供可扩展的可能,开发人员只需要在幂等处理设备上配置和调试幂等判断策略即可,也可避免幂等开发过程失误对后续业务造成影响,此外,幂等判断策略的配置和调试过程简单、快速,可减少开发人员代码出错率,也可减少开发人员重复劳动成本。
例如对于抢红包的业务操作,现有技术中用户在终端页面上点击抢红包按钮后,终端将抢红包的业务请求数据包直接传给下游的业务处理器的业务接口,通过业务接口校验是否已经接收过相同的业务请求,如果接收过,则向用户终端返回错误提示,如果未接收过相同的业务请求,则由业务处理器处理抢红包的业务请求,并将处理结果返回给用户终端。而本发明实施例中用户在终端页面上点击抢红包按钮后,终端将抢红包的业务请求数据包传给幂等处理设备,由幂等处理设备校验是否已经接收过相同的业务请求,如果接收过,则向用户终端返回错误提示,如果未接收过相同的业务请求,则通过对应的业务接口发送给业务处理器,由业务处理器处理抢红包的业务请求,并将处理结果返回给用户终端。
本发明实施例提供的幂等处理方法,可应用于微服务架构或者分布式服务架构中,系统架构可如图1所示。如图1所示,通信系统包括业务接入设备11、幂等处理设备12以及后端业务处理设备13,业务接入设备11可接收用户发送的业务请求并发送给幂等处理设备12,其中不同的业务可以配置有不同的业务接入设备,当然也可以为由一个统一的业务接入设备接收不同业务的业务请求。幂等处理设备12可根据业务对应的预设幂等判断策略对业务请求进行幂等判断,若业务请求不属于重复请求则将业务请求通过业务对应的业务接口发送给业务处理器13,若业务请求属于重复请求,则根据所述业务对应的预设幂等返回策略通过业务接入设备11向用户返回结果。
下面结合具体的实施例对幂等处理过程进行详细的描述。
图2为本发明实施例提供的幂等处理方法流程图。本实施例提供了一种幂等处理方法,执行主体为幂等处理设备,该幂等处理方法具体步骤如下:
S201、接收用户发送的任一业务的业务请求,所述业务请求包括业务相关参数。
在本实施例中,业务接入设备可以接收用户发送的任一业务的业务请求,该业务请求中可包括业务相关参数。业务接入设备在接收到用户发送的任一业务的业务请求后,可将业务请求组装成业务请求数据包,业务请求数据包中可包括业务相关参数,例如用户标识(ID)、操作时间,还可包括业务标识等等,并将业务请求数据包发送给幂等处理设备进行后续的幂等判断。需要说明的是,不同的业务可以配置有不同的业务接入设备,当然也可以为由一个统一的业务接入设备接收不同业务的业务请求。
S202、获取所述业务对应的预设幂等判断策略,根据所述预设幂等判断策略对所述业务请求进行幂等判断。
在本实施例中,在接收到业务请求后并不是直接将业务请求直接发送给对应的后端业务处理设备,而是由幂等处理设备拦截业务请求,进行幂等判断,从而确定是否属于重复请求,再决定是否发送给后端业务处理设备进行业务处理。
本实施例中,对于不同的业务可以预先设定不同的预设幂等判断策略,例如,不同的业务可以采用不同的幂等方式,如基于token机制、基于DB悲观锁、乐观锁、状态机、分布式锁等幂等方式,进而在接收到某一业务的业务请求后,可调用与该业务对应的预设幂等判断策略;再如,对于任一业务也可以预先设定对该业务的哪些业务请求进行幂等判断;再如,对于任一业务的业务请求也可设定对应的幂等时长,在第一次接收到某一业务请求之后的特定时间内再次接收到该业务请求时确定为重复请求,而超过了特定时间再接受到该业务请求时则确定该业务请求不属于重复请求。当然,本实施例的幂等判断策略并不限于上述举例,更多的幂等判断策略此处不再一一赘述。
在获取到某一业务的业务请求后,则获取该业务对应的预设幂等判断策略,进而根据预设幂等判断策略对业务请求进行幂等判断,也即判断当前的业务请求是否是重复提交的业务请求。进而在判断业务请求不属于重复请求时执行S203,在判断业务请求属于重复请求时执行S204。
在一种可选实施例中,如图3所示,S202所述的根据所述预设幂等判断策略对所述业务请求进行幂等判断,具体可包括:
S301、根据所述业务相关参数以及所述预设幂等判断策略,生成所述业务请求的幂等标识;
S302、将所述业务请求的幂等标识与存储单元中至少一个缓存的幂等标识进行比较,判断是否存在与所述业务请求的幂等标识相匹配的幂等标识;
S303、若存在,则确定所述业务请求属于重复请求;
S304、若不存在,则确定所述业务请求不属于重复请求,并将所述业务请求的幂等标识缓存于所述存储单元中。
在本实施例中,可根据预设幂等判断策略对业务相关参数进行一定的处理,例如通过加密算法加密等,得到业务请求对应的幂等标识,其中对于相同的业务请求具有唯一的幂等标识,其中幂等判断策略中可限定对业务相关参数中的哪些参数进行怎样的组合方式,采用怎样的加密方式进行加密等,例如对业务相关参数中的用户标识(ID)、操作时间、业务标识组合为一个表达式,对表达式进行加密(如采用MD5、Base64等加密方式)得到幂等标识。也即所述预设幂等判断策略中可包括的预定加密策略,可根据预定加密策略对业务相关参数进行加密,从而生成所述业务请求的幂等标识。此外,可选的,表达式可采用SpEL(Spring Expression Language,Spring表达式语言)表达式。
本实施例中在根据所述业务相关参数以及所述预设幂等判断策略,生成所述业务请求的幂等标识的时候,可先根据幂等判断策略中的参数选择策略从业务相关参数中选择所需的目标参数,根据幂等判断策略中的表达式组合策略将目标参数组合成表达式,最后根据幂等判断策略中的加密策略生成业务请求的幂等标识。
在一种可选实施例中,幂等处理设备可包括决策设备和幂等解析设备,其中决策设备用于维护预设幂等判断策略,并且可以获取所述业务对应的预设幂等判断策略,根据所述业务相关参数以及所述预设幂等判断策略,生成所述业务请求的幂等标识,并将预设幂等判断策略和幂等标识发送给幂等解析设备,幂等解析设备用于将所述业务请求的幂等标识与存储单元中至少一个缓存的幂等标识进行比较,判断是否存在与所述业务请求的幂等标识相匹配的幂等标识,从而根据判断结果确定所述业务请求是否属于重复请求。
进一步的,若某一业务的业务请求是首次请求,可在幂等处理设备的存储单元中缓存该业务请求的幂等标识,后续出现重复请求时,由于缓存中已存储了业务请求的唯一的幂等标识,则无法再次进行存储,从而可以判断发生重复请求,也即在每次接受到业务请求时将业务请求的幂等标识与缓存的幂等标识进行比较,若存储单元中已缓存了相同的幂等标识,则说明本次的业务请求属于重复请求,若存储单元中未缓存相同的幂等标识,则说明本次的业务请求是首次请求,不属于重复请求,进而可在存储单元中缓存本次的业务请求的幂等标识,以便于与后续的重复请求的幂等标识进行比较。
S203、若所述业务请求不属于重复请求,则将业务请求通过所述业务对应的业务接口发送给业务处理器。
在本实施例中,当确定本次的业务请求不属于重复请求,则可调用业务对应的业务接口,将业务请求发送给业务处理器进行后续的业务处理。
S204、若所述业务请求属于重复请求,则根据所述业务对应的预设幂等返回策略向用户返回结果。
在本实施例中,当确定本次的业务请求属于重复请求,根据不进行后续的业务处理,而是根据业务对应的预设幂等返回策略向用户返回结果。
可选的,不同的业务可配置不同的预设幂等返回策略,可根据所述业务对应的预设幂等返回策略向用户返回错误提示、或者返回重复请求中首次业务请求的业务结果、或者返回空值(NULL)。
对于返回重复请求中首次业务请求的业务结果的情况,在首次将业务请求发送给业务处理器进行业务处理(也即在S203)时,可从业务处理器获取所述业务请求对应的业务结果,并在存储单元中与所述业务请求的幂等标识进行关联存储。进而在后续出现重复请求时可直接从缓存中获取到首次业务请求的业务结果,进而返回给用户。
本实施例提供的幂等处理方法,通过接收用户发送的任一业务的业务请求,所述业务请求包括业务相关参数;获取所述业务对应的预设幂等判断策略,根据所述预设幂等判断策略对所述业务请求进行幂等判断;若所述业务请求不属于重复请求,则将业务请求通过所述业务对应的业务接口发送给业务处理器;若所述业务请求属于重复请求,则根据所述业务对应的预设幂等返回策略向用户返回结果。本实施例将幂等处理过程与业务解耦,减轻后端业务接口压力,可使得业务处理器资源得到更好的利用;并且可将多个业务的幂等处理过程统一处理,支持多样化的幂等判断策略,提供可扩展的可能,开发人员只需要在幂等处理设备上配置和调试幂等判断策略即可,也可避免幂等开发过程失误对后续业务造成影响,此外,幂等判断策略的配置和调试过程简单、快速,可减少开发人员代码出错率,也可减少开发人员重复劳动成本。
在上述任一实施例的基础上,S304所述的将所述业务请求的幂等标识缓存于所述存储单元中,具体可包括:
根据所述预设幂等判断策略中包括的存储策略,将所述业务请求的幂等标识缓存于所述存储单元中。
在本实施例中,预设幂等判断策略中还可包括存储策略,以根据存储策略缓存所述业务请求的幂等标识,例如存储时长,存储位置等等存储策略,此处不再赘述。本实施例中可以用于缓存业务请求的幂等标识的存储单元可以采用内存、mysql、oracle、redis、zookeeper等方式,可支持扩展。
可选的,如图4所示,所述根据所述预设幂等判断策略中包括的存储策略,将所述业务请求的幂等标识缓存于所述存储单元中,具体可包括:
S401、将所述业务请求的幂等标识缓存于所述存储单元的预定位置,并记录存储时长;
S402、当存储时长达到所述幂等时长,则从所述存储单元中删除所述业务请求的幂等标识。
进一步的,由于幂等判断过程是存在一定周期的,并不是所有的业务只能请求一次,例如某些业务可能在某一时长内只允许请求一次(如24小时内只能抢一次红包),因此对于该些业务可在预设幂等判断策略中配置幂等时长,进而在将首次业务请求的幂等标识缓存于存储单元的预定位置后,开始记录存储时长,当存储时长达到幂等时长时,则将该业务请求的幂等标识从存储单元中删除,后续再次接收到相同的业务请求时则不会被认为是重复请求,也即可以再次通过对应的业务接口发送给业务处理器进行业务处理。
可选的,对于在存储单元中将首次业务请求的业务结果与所述业务请求的幂等标识进行关联存储的情况,在删除业务请求的幂等标识时,可同时删除关联的首次业务请求的业务结果。
在上述实施例的基础上,如图5所示,本实施例提供一种幂等处理方法,该幂等处理方法具体步骤如下:
S501、接收用户发送的任一业务的业务请求,所述业务请求包括业务相关参数;
S502、获取所述业务对应的预设幂等判断策略;
S503、根据预设幂等判断策略中的参数选择策略从业务相关参数中选择所需的目标参数;根据幂等判断策略中的表达式组合策略将目标参数组合成表达式;根据根据幂等判断策略中的加密策略生成业务请求的幂等标识;
S504、将所述业务请求的幂等标识与存储单元中至少一个缓存的幂等标识进行比较,判断是否存在与所述业务请求的幂等标识相匹配的幂等标识;
若存在,则执行S505;若不存在,则执行S507;
可选的,在判断存储单元中至少一个缓存的幂等标识中是否存在与所述业务请求的幂等标识相匹配的幂等标识时,可通过是否加锁成功来进行判断。具体的,预先对存储单元中至少一个缓存的幂等标识加锁,一个幂等标识仅能被加一个锁,若业务请求的幂等标识与存储单元中缓存的已加锁的幂等标识重复,则无法对重复的幂等标识再次加锁,也即此时对业务请求的幂等标识加锁失败。因此在出现对业务请求的幂等标识加锁失败的情况时,则确定业务请求的幂等标识属于重复请求。
S505、若存在,则确定所述业务请求属于重复请求;
S506、根据所述业务对应的预设幂等返回策略向用户返回结果;
其中,预设幂等返回策略可以为:向用户返回错误提示、或者返回重复请求中首次业务请求的业务结果、或者返回空值(NULL);
S507、若不存在,则确定所述业务请求不属于重复请求,并将所述业务请求的幂等标识缓存于所述存储单元中;
进一步的,还可记录业务请求的幂等标识的存储时长,当存储时长达到所述幂等时长,则从所述存储单元中删除所述业务请求的幂等标识;
S508、将业务请求通过所述业务对应的业务接口发送给业务处理器,获取业务结果,并向用户返回业务结果。
进一步的,还可判断预设幂等返回策略是否为返回重复请求中首次业务请求的业务结果,若否,则直接向用户返回业务结果;若是,则向用户返回业务结果,并且需要将该业务结果与业务请求的幂等标识进行关联、缓存到存储单元中,以便在后续的业务请求被确定为重复请求时通过S506向用户返回结果。
可选的,当业务请求的幂等标识的存储时长达到所述幂等时长时,在删除业务请求的幂等标识的同时,可删除关联的首次业务请求的业务结果。
本实施例中的幂等处理方法的原理和技术效果详见上述实施例,此处不再赘述。
图6为本发明实施例提供的幂等处理装置的结构图。本实施例提供的幂等处理装置可以执行幂等处理方法实施例提供的处理流程,如图6所示,所述幂等处理装置60包括通信模块61以及处理模块62。
通信模块,用于接收用户发送的任一业务的业务请求,所述业务请求包括业务相关参数;
处理模块,用于获取所述业务对应的预设幂等判断策略,根据所述预设幂等判断策略对所述业务请求进行幂等判断;若所述业务请求不属于重复请求,则将业务请求通过所述业务对应的业务接口发送给业务处理器;若所述业务请求属于重复请求,则根据所述业务对应的预设幂等返回策略向用户返回结果。
在上述实施例的基础上,所述处理模块在根据所述预设幂等判断策略对所述业务请求进行幂等判断时,用于:
根据所述业务相关参数以及所述预设幂等判断策略,生成所述业务请求的幂等标识;
将所述业务请求的幂等标识与存储单元中至少一个缓存的幂等标识进行比较,判断是否存在与所述业务请求的幂等标识相匹配的幂等标识;
若存在,则确定所述业务请求属于重复请求;
若不存在,则确定所述业务请求不属于重复请求,并将所述业务请求的幂等标识缓存于所述存储单元中。
在上述任一实施例的基础上,所述处理模块在根据所述业务相关参数以及所述预设幂等判断策略,生成所述业务请求的幂等标识时,用于:
根据所述预设幂等判断策略中包括的预定加密策略,对所述业务相关参数进行加密,生成所述业务请求的幂等标识。
在上述任一实施例的基础上,所述处理模块在将所述业务请求的幂等标识缓存于所述存储单元中时,用于:
根据所述预设幂等判断策略中包括的存储策略,将所述业务请求的幂等标识缓存于所述存储单元中。
在上述任一实施例的基础上,所述存储策略包括幂等时长;
所述处理模块在根据所述预设幂等判断策略中包括的存储策略,将所述业务请求的幂等标识缓存于所述存储单元中时,用于:
将所述业务请求的幂等标识缓存于所述存储单元的预定位置,并记录存储时长;
当存储时长达到所述幂等时长,则从所述存储单元中删除所述业务请求的幂等标识。
在上述任一实施例的基础上,所述处理模块在根据所述业务对应的预设幂等返回策略向用户返回结果时,用于:
根据所述业务对应的预设幂等返回策略向用户返回错误提示、或者返回重复请求中首次业务请求的业务结果、或者返回空值。
在上述任一实施例的基础上,所述处理模块在将业务请求通过所述业务对应的业务接口发送给业务处理器后,还用于:
从所述业务处理器获取所述业务请求对应的业务结果,并在所述存储单元中与所述业务请求的幂等标识进行关联存储。
本发明实施例提供的幂等处理装置可以具体用于执行上述图2-5所提供的方法实施例,具体功能此处不再赘述。
本发明实施例提供的幂等处理装置,通过接收用户发送的任一业务的业务请求,所述业务请求包括业务相关参数;获取所述业务对应的预设幂等判断策略,根据所述预设幂等判断策略对所述业务请求进行幂等判断;若所述业务请求不属于重复请求,则将业务请求通过所述业务对应的业务接口发送给业务处理器;若所述业务请求属于重复请求,则根据所述业务对应的预设幂等返回策略向用户返回结果。本实施例将幂等处理过程与业务解耦,减轻后端业务接口压力,可使得业务处理器资源得到更好的利用;并且可将多个业务的幂等处理过程统一处理,支持多样化的幂等判断策略,提供可扩展的可能,开发人员只需要在幂等处理设备上配置和调试幂等判断策略即可,也可避免幂等开发过程失误对后续业务造成影响,此外,幂等判断策略的配置和调试过程简单、快速,可减少开发人员代码出错率,也可减少开发人员重复劳动成本。
图7为本发明实施例提供的幂等处理设备的结构示意图。本发明实施例提供的幂等处理设备可以执行幂等处理方法实施例提供的处理流程,如图7所示,幂等处理设备70包括存储器71、处理器72、计算机程序和通讯接口73;其中,计算机程序存储在存储器71中,并被配置为由处理器72执行以上实施例所述的幂等处理方法。
图7所示实施例的幂等处理设备可用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
另外,本实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行以实现上述实施例所述的幂等处理方法。
在本发明实施例所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明实施例各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明实施例各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
最后应说明的是:以上各实施例仅用以说明本发明实施例的技术方案,而非对其限制;尽管参照前述各实施例对本发明实施例进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例各实施例技术方案的范围。
Claims (10)
1.一种幂等处理方法,其特征在于,包括:
接收用户发送的任一业务的业务请求,所述业务请求包括业务相关参数;
获取所述业务对应的预设幂等判断策略,根据所述预设幂等判断策略对所述业务请求进行幂等判断;
若所述业务请求不属于重复请求,则将业务请求通过所述业务对应的业务接口发送给业务处理器;
若所述业务请求属于重复请求,则根据所述业务对应的预设幂等返回策略向用户返回结果。
2.根据权利要求1所述的方法,其特征在于,所述根据所述预设幂等判断策略对所述业务请求进行幂等判断,包括:
根据所述业务相关参数以及所述预设幂等判断策略,生成所述业务请求的幂等标识;
将所述业务请求的幂等标识与存储单元中至少一个缓存的幂等标识进行比较,判断是否存在与所述业务请求的幂等标识相匹配的幂等标识;
若存在,则确定所述业务请求属于重复请求;
若不存在,则确定所述业务请求不属于重复请求,并将所述业务请求的幂等标识缓存于所述存储单元中。
3.根据权利要求2所述的方法,其特征在于,所述根据所述业务相关参数以及所述预设幂等判断策略,生成所述业务请求的幂等标识,包括:
根据所述预设幂等判断策略中包括的预定加密策略,对所述业务相关参数进行加密,生成所述业务请求的幂等标识。
4.根据权利要求2所述的方法,其特征在于,所述将所述业务请求的幂等标识缓存于所述存储单元中,包括:
根据所述预设幂等判断策略中包括的存储策略,将所述业务请求的幂等标识缓存于所述存储单元中。
5.根据权利要求4所述的方法,其特征在于,所述存储策略包括幂等时长;
所述根据所述预设幂等判断策略中包括的存储策略,将所述业务请求的幂等标识缓存于所述存储单元中,包括:
将所述业务请求的幂等标识缓存于所述存储单元的预定位置,并记录存储时长;
当存储时长达到所述幂等时长,则从所述存储单元中删除所述业务请求的幂等标识。
6.根据权利要求2-5任一项所述的方法,其特征在于,所述根据所述业务对应的预设幂等返回策略向用户返回结果,包括:
根据所述业务对应的预设幂等返回策略向用户返回错误提示、或者返回重复请求中首次业务请求的业务结果、或者返回空值。
7.根据权利要求6所述的方法,其特征在于,所述将业务请求通过所述业务对应的业务接口发送给业务处理器后,还包括:
从所述业务处理器获取所述业务请求对应的业务结果,并在所述存储单元中与所述业务请求的幂等标识进行关联存储。
8.一种幂等处理装置,其特征在于,包括:
通信模块,用于接收用户发送的任一业务的业务请求,所述业务请求包括业务相关参数;
处理模块,用于获取所述业务对应的预设幂等判断策略,根据所述预设幂等判断策略对所述业务请求进行幂等判断;若所述业务请求不属于重复请求,则将业务请求通过所述业务对应的业务接口发送给业务处理器;若所述业务请求属于重复请求,则根据所述业务对应的预设幂等返回策略向用户返回结果。
9.一种幂等处理设备,其特征在于,包括:
存储器;
处理器;以及
计算机程序;
其中,所述计算机程序存储在所述存储器中,并被配置为由所述处理器执行以实现如权利要求1-7中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,其上存储有计算机程序;
所述计算机程序被处理器执行时实现如权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010448414.6A CN111625301A (zh) | 2020-05-25 | 2020-05-25 | 幂等处理方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010448414.6A CN111625301A (zh) | 2020-05-25 | 2020-05-25 | 幂等处理方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111625301A true CN111625301A (zh) | 2020-09-04 |
Family
ID=72260868
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010448414.6A Pending CN111625301A (zh) | 2020-05-25 | 2020-05-25 | 幂等处理方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111625301A (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112835916A (zh) * | 2021-01-15 | 2021-05-25 | 卓望数码技术(深圳)有限公司 | 基于api接口的业务处理方法、设备及计算机可读存储介质 |
CN113064584A (zh) * | 2021-04-22 | 2021-07-02 | 中国平安财产保险股份有限公司 | 幂等的实现方法、装置、设备及介质 |
CN113469735A (zh) * | 2021-06-17 | 2021-10-01 | 北京达佳互联信息技术有限公司 | 资源处理方法、装置、电子设备及存储介质 |
CN113553214A (zh) * | 2021-07-30 | 2021-10-26 | 国网电子商务有限公司 | 一种幂等性校验方法及装置 |
CN113610537A (zh) * | 2021-08-05 | 2021-11-05 | 北京云从科技有限公司 | 请求执行方法、服务器、计算机设备和存储介质 |
CN113709248A (zh) * | 2021-08-30 | 2021-11-26 | 广州大通和亿科技有限公司 | 业务请求处理方法、系统以及前端、服务端业务处理装置 |
CN113722122A (zh) * | 2021-08-13 | 2021-11-30 | 北京东方国信科技股份有限公司 | 一种rpc幂等性保证方法及系统 |
CN113765974A (zh) * | 2020-11-04 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 业务请求幂等性控制系统、方法、装置及存储介质 |
CN114095575A (zh) * | 2021-09-27 | 2022-02-25 | 上海信宝博通电子商务有限公司 | 数据处理方法及装置 |
CN114398631A (zh) * | 2021-12-20 | 2022-04-26 | 挂号网(杭州)科技有限公司 | 一种业务处理方法及装置、电子设备、存储介质 |
CN115018325A (zh) * | 2022-06-10 | 2022-09-06 | 中国银行股份有限公司 | 业务处理方法及装置 |
CN118469714A (zh) * | 2024-07-11 | 2024-08-09 | 宁波银行股份有限公司 | 一种交易数据处理方法、装置及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107426169A (zh) * | 2017-05-24 | 2017-12-01 | 阿里巴巴集团控股有限公司 | 一种基于权限的业务处理方法及装置 |
CN109063027A (zh) * | 2018-07-16 | 2018-12-21 | 阿里巴巴集团控股有限公司 | 一种业务处理方法和装置 |
CN110633160A (zh) * | 2019-08-22 | 2019-12-31 | 浙江大搜车软件技术有限公司 | 接口调用方法、装置、计算机设备和存储介质 |
CN110958237A (zh) * | 2019-11-26 | 2020-04-03 | 苏州思必驰信息科技有限公司 | 一种权限校验的方法和装置 |
-
2020
- 2020-05-25 CN CN202010448414.6A patent/CN111625301A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107426169A (zh) * | 2017-05-24 | 2017-12-01 | 阿里巴巴集团控股有限公司 | 一种基于权限的业务处理方法及装置 |
CN109063027A (zh) * | 2018-07-16 | 2018-12-21 | 阿里巴巴集团控股有限公司 | 一种业务处理方法和装置 |
CN110633160A (zh) * | 2019-08-22 | 2019-12-31 | 浙江大搜车软件技术有限公司 | 接口调用方法、装置、计算机设备和存储介质 |
CN110958237A (zh) * | 2019-11-26 | 2020-04-03 | 苏州思必驰信息科技有限公司 | 一种权限校验的方法和装置 |
Non-Patent Citations (1)
Title |
---|
NAN先生: "分布式系统中接口的幂等性", 《HTTPS://BLOG.CSDN.NET/WEIXIN_42265148/ARTICLE/DETAILS/104711097》 * |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113765974A (zh) * | 2020-11-04 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 业务请求幂等性控制系统、方法、装置及存储介质 |
CN112835916A (zh) * | 2021-01-15 | 2021-05-25 | 卓望数码技术(深圳)有限公司 | 基于api接口的业务处理方法、设备及计算机可读存储介质 |
CN113064584A (zh) * | 2021-04-22 | 2021-07-02 | 中国平安财产保险股份有限公司 | 幂等的实现方法、装置、设备及介质 |
CN113064584B (zh) * | 2021-04-22 | 2024-05-07 | 中国平安财产保险股份有限公司 | 幂等的实现方法、装置、设备及介质 |
CN113469735A (zh) * | 2021-06-17 | 2021-10-01 | 北京达佳互联信息技术有限公司 | 资源处理方法、装置、电子设备及存储介质 |
CN113469735B (zh) * | 2021-06-17 | 2024-05-28 | 北京达佳互联信息技术有限公司 | 资源处理方法、装置、电子设备及存储介质 |
CN113553214B (zh) * | 2021-07-30 | 2024-04-02 | 国网数字科技控股有限公司 | 一种幂等性校验方法及装置 |
CN113553214A (zh) * | 2021-07-30 | 2021-10-26 | 国网电子商务有限公司 | 一种幂等性校验方法及装置 |
CN113610537A (zh) * | 2021-08-05 | 2021-11-05 | 北京云从科技有限公司 | 请求执行方法、服务器、计算机设备和存储介质 |
CN113722122A (zh) * | 2021-08-13 | 2021-11-30 | 北京东方国信科技股份有限公司 | 一种rpc幂等性保证方法及系统 |
CN113709248B (zh) * | 2021-08-30 | 2023-11-21 | 广州大通和亿科技有限公司 | 业务请求处理方法、系统以及前端、服务端业务处理装置 |
CN113709248A (zh) * | 2021-08-30 | 2021-11-26 | 广州大通和亿科技有限公司 | 业务请求处理方法、系统以及前端、服务端业务处理装置 |
CN114095575A (zh) * | 2021-09-27 | 2022-02-25 | 上海信宝博通电子商务有限公司 | 数据处理方法及装置 |
CN114398631A (zh) * | 2021-12-20 | 2022-04-26 | 挂号网(杭州)科技有限公司 | 一种业务处理方法及装置、电子设备、存储介质 |
CN115018325A (zh) * | 2022-06-10 | 2022-09-06 | 中国银行股份有限公司 | 业务处理方法及装置 |
CN115018325B (zh) * | 2022-06-10 | 2024-05-24 | 中国银行股份有限公司 | 业务处理方法及装置 |
CN118469714A (zh) * | 2024-07-11 | 2024-08-09 | 宁波银行股份有限公司 | 一种交易数据处理方法、装置及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111625301A (zh) | 幂等处理方法、装置、设备及存储介质 | |
JP7389791B2 (ja) | コンフィギュレーション・シナリオ順守のためのモバイル・デバイスによるコンプライアンス設定の実装 | |
CN109413043B (zh) | 实现数据库动态配置的方法及装置、电子设备、存储介质 | |
CN112612985B (zh) | 基于WebSocket的多用户和多类型消息的推送系统及方法 | |
US12113823B2 (en) | Remote attestation method and device for composite device | |
CN111444500A (zh) | 鉴权方法、装置、设备及可读存储介质 | |
CN112699034B (zh) | 虚拟登录用户构建方法、装置、设备及存储介质 | |
CN111918274B (zh) | 码号配置、管理方法、装置、电子设备及可读存储介质 | |
WO2020173126A1 (zh) | 基于区块链的会话数据处理方法、装置、设备及介质 | |
KR102362262B1 (ko) | 코드의 검증을 위한 전자 장치 및 그 방법 | |
CN115694699A (zh) | 时延参数采集方法、装置、电子设备及存储介质 | |
JP2022054382A (ja) | 認証方法及び装置、コンピューティング機器、並びに媒体 | |
CN111327680B (zh) | 认证数据同步方法、装置、系统、计算机设备和存储介质 | |
KR102718167B1 (ko) | 구성 시나리오 준수를 위한 모바일 디바이스에 의한 준수 설정 구현 | |
CN112887410B (zh) | 一种web服务程序的运行方法、装置、设备及存储介质 | |
CN117938840B (zh) | 内容分发网络中的数据传输的方法、装置、设备和介质 | |
CN114257606B (zh) | 数据处理方法、文件管理系统、存储介质及程序产品 | |
US20230291558A1 (en) | Trusted computing-based local key escrow method, apparatus, device and medium | |
CN114024688B (zh) | 网络请求方法、网络认证方法、终端设备和服务端 | |
CN117411729B (zh) | oracle数据库登录方法、装置、计算机设备、介质 | |
CN110248166B (zh) | 视频信息的处理方法、客户端、电子设备及存储介质 | |
CN116707988A (zh) | 基于统一网关系统的鉴权方法、装置、计算机设备及介质 | |
CN114297697A (zh) | 模拟方法、调试方法、装置、电子设备和存储介质 | |
CN117194193A (zh) | 通用操作日志记录方法、装置、计算机设备及存储介质 | |
CN118626066A (zh) | 一种Axios请求库封装方法、系统、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200904 |