本申请涉及幂等性通用注解,具体涉及一种接口幂等性处理方法、装置及电子设备。
背景技术:
1、幂等指的是多次同样的操作而不改变结果。在复杂的业务系统中,可能会出现重复的请求,即同一请求因为某些原因被多次提交,比如微服务架构下,接口接收到的http请求可能会超时,很多业务在超时场景下会进行重试,这也是造成重复请求的一个重要原因。此外消息队列mq已经广泛应用在业务实现中,而mq本身是不提供幂等性消费的,因此可能会消费重复的消息。因此我们需要提供幂等的接口来保证对重复请求或者重复消费的处理。
2、但是目前的接口的幂等方案中,都是先根据唯一性id查询,然后根据查询的结果做对应的操作。同时会对相同的资源进行加锁来避免并发问题。在实际操作中某些情况下是没有唯一性id的(如自研网络功能虚拟化nfv平台等),因此目前的幂等方案无法直接进行使用。
技术实现思路
1、有鉴于此,本申请提供了一种接口幂等性处理方法、装置及电子设备,主要目的在于改善目前部分情况下控制台请求没有唯一性id,导致目前的幂等方案无法直接应用的问题。
2、第一方面,本申请提供了一种接口幂等性处理方法,包括:
3、获取用户信息和接口请求,并对所述接口请求的类型进行判断;
4、在所述接口请求为第一类型请求的情况下,为所述接口请求分配标识信息;
5、根据所述标识信息,在多级缓存中查找是否有对应于所述标识信息的存储记录,得到查找结果;
6、基于所述查找结果,对所述第一类型的接口请求进行处理。
7、可选地,所述在所述接口请求为第一类型请求的情况下,为所述接口请求分配标识信息,包括:判断所述接口请求是否已具有请求标识;在不具有所述请求标识的情况下,根据所述用户信息,生成标识信息;在已具有所述请求标识的情况下,则根据已有的所述请求标识作为标识信息。
8、可选地,在不具有所述请求标识的情况下,根据所述用户信息,生成标识信息,包括:在所述用户信息和所述接口请求中提取请求信息;通过加密算法对所述请求信息进行加密处理,生成字符串,作为所述标识信息;其中,所述请求信息包括请求源地址、请求方法和定位符。
9、可选地,所述根据所述标识信息,在多级缓存中查找是否有对应于所述标识信息的存储记录,得到查找结果,包括:基于所述标识信息,在一级缓存中查找是否由对应于所述标识信息的存储记录;在所述一级缓存中的查找结果为否的情况下,在二级缓存中查找是否由对应于所述标识信息的存储记录;在所述二级缓存中的查找结果为否的情况下,在三级缓存中查找是否由对应于所述标识信息的存储记录;其中,所述一级缓存为本地缓存,所述二级缓存为redis缓存,所述三级缓存为mysql数据库中的业务资源表。
10、可选地,所述基于所述查找结果,对所述第一类型的接口请求进行处理,包括:在任一级缓存的所述查找结果为是的情况下,返回重复请求;在所述三级缓存中的查找结果为否的情况下,执行所述接口请求对应的业务。
11、可选地,在获取用户信息和接口请求,并对所述接口请求的类型进行判断后,所述方法还包括:在所述接口请求为第二类型请求的情况下,将所述接口请求的消息id作为标识信息;基于所述标识信息,依次在一级缓存和二级缓存中查找是否有对应于所述标识信息的存储记录,得到查找结果;基于所述查找结果,对所述第二类型的接口请求进行处理。
12、可选地,所述基于所述查找结果,对所述第二类型的接口请求进行处理,包括:在任一级缓存的所述查找结果为是的情况下,返回重复请求;在所述二级缓存中的查找结果为否的情况下,执行所述接口请求对应的业务。
13、第二方面,本申请提供了一种接口幂等性处理装置,包括:
14、获取单元,被配置为获取用户信息和接口请求,并对所述接口请求的类型进行判断;
15、分配单元,被配置为在所述接口请求为第一类型请求的情况下,为所述接口请求分配标识信息;
16、查找单元,被配置为根据所述标识信息,在多级缓存中查找是否有对应于所述标识信息的存储记录,得到查找结果;
17、处理单元,被配置为基于所述查找结果,对所述接口请求进行处理。
18、第三方面,本申请提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现第一方面所述的接口幂等性处理方法。
19、第四方面,本申请提供了一种电子设备,包括存储介质、处理器及存储在存储介质上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现第一方面所述的接口幂等性处理方法。
20、借由上述技术方案,本申请提供的一种接口幂等性处理方法、装置及电子设备,本申请首先获取用户信息和接口请求,并对接口请求的类型进行判断;在接口请求为第一类型请求的情况下,为接口请求分配标识信息;根据标识信息,在多级缓存中查找是否有对应于标识信息的存储记录,得到查找结果;基于查找结果,对第一类型的接口请求进行处理。与相关技术相比,本申请通过对接口接收到的请求的类型进行判断,在接口请求为第一类型请求的情况下,为接口请求分配标识信息,从而改善目前部分情况下控制台请求没有唯一性id,导致目前的幂等方案无法直接应用的问题。
21、上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
1.一种接口幂等性处理方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述在所述接口请求为第一类型请求的情况下,为所述接口请求分配标识信息,包括:
3.根据权利要求2所述的方法,其特征在于,在不具有所述请求标识的情况下,根据所述用户信息,生成标识信息,包括:
4.根据权利要求1所述的方法,其特征在于,所述根据所述标识信息,在多级缓存中查找是否有对应于所述标识信息的存储记录,得到查找结果,包括:
5.根据权利要求4所述的方法,其特征在于,所述基于所述查找结果,对所述第一类型的接口请求进行处理,包括:
6.根据权利要求1至5中任一项所述的方法,其特征在于,在获取用户信息和接口请求,并对所述接口请求的类型进行判断后,所述方法还包括:
7.根据权利要求6所述的方法,其特征在于,所述基于所述查找结果,对所述第二类型的接口请求进行处理,包括:
8.一种接口幂等性处理装置,其特征在于,包括:
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法。
10.一种电子设备,包括存储介质、处理器及存储在存储介质上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的方法。