一种实现接口幂等性的设计方法技术

技术编号:36785733 阅读:14 留言:0更新日期:2023-03-08 22:27
本发明专利技术公开了一种实现接口幂等性的设计方法,涉及计算机数据处理技术领域。本发明专利技术包括如下步骤:调用方在调用系统接口的时候先向后台服务端请求一个Token;服务端在生成Token后,把该Token作为key,参数作为value存入Redis中,返回Token给调用方;当调用方请求业务接口时,服务端根据Token查询Redis中value是否等于参数;正常执行业务逻辑,执行结束后返回调用方编码;调用方收到接口返回编码后判断是否成功,若成功则方法结束;若失败调用方重新获取Token后,再次调用业务接口进行重试。本发明专利技术通过利用Token防重令牌机制实现接口幂等性,不需要业务场景具有唯一属性,适用范围更大,同时有效减轻数据库压力,在高并发情况下依然能够支撑系统的正常运行,提高了系统的性能和稳定。性能和稳定。性能和稳定。

【技术实现步骤摘要】
一种实现接口幂等性的设计方法


[0001]本专利技术属于计算机数据处理
,特别是涉及一种实现接口幂等性的设计方法。

技术介绍

[0002]随着微服务的流行,越来越多的系统不再是一个单独的整体服务,而是由多个微服务组成,而服务之间接口API的相互调用也越来越频繁,为保证系统的可靠性,接口的幂等性也显得越来越重要。
[0003]在计算机中编程中,一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同,以避免输入参数相同,多次提交被多次执行的情况。在HTTP/1.1规范中幂等性的定义是:指一次和多次请求某一个资源应该具有同样的副作用,这里的副作用是指不会对结果产生破坏或者产生不可预料的结果。换句话说,其任意多次执行对资源本身所产生的影响均与一次执行的影响相同。在HTTP常用几种方法中,GET方法用于获取资源,不会影响到资源的变化,所以是幂等的。DELETE方法用于删除资源,会引起资源变化,但对同一个数据的多次操作也是满足幂等性。PUT方法表示更新资源,会引起资源变化,如果是相同数据的更新,多次操作也满足幂等性,但如果是进行累加数据,比如增加商品销量,多次操作不满足幂等性。POST方法表示创建资源,多次操作不满足幂等性。针对如何保证POST方法创建资源接口的幂等性。
[0004]如说明书附图2所示,现有技术中是利用数据库唯一键的机制,即根据具体业务场景的某个唯一属性比如手机号,然后在数据库表建立唯一键,当重复提交时,数据库会返回数据重复的异常,从而保证接口幂等性。
[0005]但是当业务场景不具有唯一属性,不能在数据库建立唯一键时就没有办法保证接口的幂等性。或者当接口并发较高时,因为每次都要依赖数据库返回,会对数据库造成极大压力,系统性能瓶颈受制于此,甚至并发太高时,超过数据库承受压力,造成数据库崩溃,系统宕机等严重问题。

技术实现思路

[0006]本专利技术的目的在于提供一种实现接口幂等性的设计方法,通过利用Token防重令牌机制实现接口幂等性,不需要业务场景具有唯一属性,适用范围更大,同时有效减轻数据库压力,在高并发情况下依然能够支撑系统的正常运行,解决了现有的数据庞大导致数据库崩溃和系统宕机的问题。
[0007]为解决上述技术问题,本专利技术是通过以下技术方案实现的:
[0008]本专利技术为一种实现接口幂等性的设计方法,包括如下步骤:
[0009]步骤S1:调用方在调用系统接口的时候先向后台服务端请求一个Token;
[0010]步骤S2:服务端在生成Token后,把该Token作为key,参数作为value存入Redis中,然后返回Token给调用方;
[0011]步骤S3:当调用方请求业务接口时,服务端根据Token查询Redis中value是否等于参数;
[0012]步骤S4:正常执行业务逻辑,执行结束后返回调用方编码;如果不相等,则表示接口已被调用或者key超时,这时直接返回调用方异常编码;
[0013]步骤S5:调用方收到接口返回编码后判断是否成功,若成功则方法结束;若失败调用方可以重新获取Token后,再次调用业务接口进行重试。
[0014]作为一种优选的技术方案,所述步骤S1中,调用方在调用系统接口的时候先向后台服务端请求一个Token,然后在请求业务接口时携带这个Token一起请求,确保Token由服务端唯一。
[0015]作为一种优选的技术方案,所述步骤S2中,服务端生成Token后,保存固定前缀加Token字符串到Redis缓存作为key,value为参数并设置有效期。
[0016]作为一种优选的技术方案,所述步骤S3中,调用方携带第一步获取的Token再请求服务端新增场景接口,服务端根据Token查询Redis中value是否等于参数;若Redis中的value等于参数,则说明是第一次调用接口,允许执行新增场景方法;若Redis中的value不等于参数,则表明是重复调用接口或者数据已过期,返回调用方错误编码。
[0017]本专利技术具有以下有益效果:
[0018](1)本专利技术通过利用Token防重令牌机制实现接口幂等性,不需要业务场景具有唯一属性,适用范围更大,同时有效减轻数据库压力,在高并发情况下依然能够支撑系统的正常运行,从而提高了系统的性能和稳定;
[0019](2)本专利技术不需要业务场景具有唯一属性,扩大了接口幂等性的适用范围,同时系统在高并发场景下依然能够正常运行,提高了系统的性能和可靠性。
[0020]当然,实施本专利技术的任一产品并不一定需要同时达到以上所述的所有优点。
附图说明
[0021]为了更清楚地说明本专利技术实施例的技术方案,下面将对实施例描述所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0022]图1为Token防重令牌机制流程图;
[0023]图2为现有技术的方案流程图;
[0024]图3为并发请求执行时序图;
[0025]图4为Token防重令牌机制实施步骤图。
具体实施方式
[0026]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本专利技术保护的范围。
[0027]图2为现有技术的方案流程图,服务端首先根据具体业务的唯一属性,在数据库建
立唯一键。当调用方前端页面请求业务接口时,服务端进行参数校验,然后调用业务方法逻辑处理,最后执行SQL保存数据到数据库,根据数据库唯一键机制,当数据不存在时,插入数据库,然后返回成功,当数据已存在时,数据库会返回唯一键冲突异常,然后返回失败。
[0028]请参阅图1所示,本专利技术为一种实现接口幂等性的设计方法,包括如下步骤:
[0029]步骤S1:调用方在调用系统接口的时候先向后台服务端请求一个Token;
[0030]步骤S2:服务端在生成Token后,把该Token作为key,参数作为value存入Redis中,然后返回Token给调用方;
[0031]步骤S3:当调用方请求业务接口时,服务端根据Token查询Redis中value是否等于参数;
[0032]步骤S4:正常执行业务逻辑,执行结束后返回调用方编码;如果不相等,则表示接口已被调用或者key超时,这时直接返回调用方异常编码;
[0033]步骤S5:调用方收到接口返回编码后判断是否成功,若成功则方法结束;若失败调用方可以重新获取Token后,再次调用业务接口进行重试。
[0034]步骤S1中,调用方在调用系统接口的时候先向后台服务端请求一个Token,然后在请求业务接口时携带这个Token一起请求,确保Tok本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种实现接口幂等性的设计方法,其特征在于,包括如下步骤:步骤S1:调用方在调用系统接口的时候先向后台服务端请求一个Token;步骤S2:服务端在生成Token后,把该Token作为key,参数作为value存入Redis中,然后返回Token给调用方;步骤S3:当调用方请求业务接口时,服务端根据Token查询Redis中value是否等于参数;步骤S4:正常执行业务逻辑,执行结束后返回调用方编码;如果不相等,则表示接口已被调用或者key超时,这时直接返回调用方异常编码;步骤S5:调用方收到接口返回编码后判断是否成功,若成功则方法结束;若失败调用方可以重新获取Token后,再次调用业务接口进行重试。2.根据权利要求1所述的一种实现接口幂等性的设计方法,其特征在于,所述步骤S1中,...

【专利技术属性】
技术研发人员:张银波陈良
申请(专利权)人:四川虹美智能科技有限公司
类型:发明
国别省市:

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

1