本发明属于计算机,具体地说,是涉及一种基于分布式缓存系统的防止表单重复提交方法、装置及计算机可读存储介质。
背景技术:
1、目前,市面上大部分的中小型web系统都是采用单体架构,在针对用户的重复提交行为处理时,往往是在系统内存中实现,通常是利用token机制,即通过为每个表单请求生成一个唯一的token,并将token存储在服务器端的内存中,当客户端再次提交表单时,服务器端会验证此token是否有效,若有效则处理表单请求,否则拒绝表单请求。也有些使用reids等缓存中间件,存储唯一标识,并返回给前端,利用锁机制实现表单的防重复提交。
2、上述两种方法存在以下不足:
3、第一种利用token机制,当业务量上升想要拆分为微服务,做集群部署时就会出现问题;因为在分布式环境下,多个服务器可能会同时接收到同一个表单请求,而每台服务器上的内存中都可能有该表单请求对应的token或者唯一标识,因此需要解决多台服务器之间token同步的问题。也有可能同一时间内的多次请求,在配置了负载均衡的情况下,分发到了不同的服务器上,导致在不同的服务器均判断为用户为首次提交。而且,在服务器重启或出现内存溢出等情况下,原本存储在内存中的token也会丢失,导致无法进行表单重复提交的防护;
4、第二种使用reids等缓存中间件,存储在缓存中间件的方法虽然可以避免集群部署情况下的数据不一致问题,但是,因为唯一标识是存储在前端,如果前后端交互发生问题,后端执行完请求后通知前端更新标识时,前端未能及时更新,就会导致用户本来正常的请求也被拒绝;而且,使用锁机制会进一步引入加锁和释放锁的问题,如果加锁或释放锁失败同样会导致服务不可用。
技术实现思路
1、本发明的目的在于提供一种基于分布式缓存系统的防止表单重复提交方法,以解决现有技术所存在的技术问题。
2、为了实现上述目的,本发明采取的技术方案如下:
3、一种基于分布式缓存系统的防止表单重复提交方法,包括以下步骤:
4、步骤s1:后端通过网关接收用户的表单提交请求,并随机分发至集群中的任意服务器上;
5、步骤s2:后端使用分布式缓存系统,根据用户唯一信息,使用加密算法生成有过期时间的防重key,并以该防重key作为关键字,全局统一默认值have作为标记值,存储在分布式缓存系统中,所述过期时间为n分钟,n≥1;
6、步骤s3:每次提交表单时,检查分布式缓存系统中是否存在防重key,若存在,执行步骤s4,若不存在,则返回错误信息;
7、步骤s4:后端执行表单提交请求。
8、在一种实施方案的,所述用户唯一信息为用户id。
9、在一种实施方案的,所述步骤s3中检查分布式缓存系统中是否存在防重key的具体方法如下:
10、首先,根据执行表单提交操作的用户唯一信息,使用加密算法生成表单对应的用于验证的防重key;然后,在分布式系统中使用用于验证的防重key去查询是否有标记值have返回,如果有标记值返回则表示存在,无标记值返回,则表示不存在。
11、在一种实施方案的,所述加密算法为md5加密算法。
12、为实现上述目的,本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行,以实现所述的基于分布式缓存系统的防止表单重复提交方法。
13、为实现上述目的,本发明还提供了一种基于分布式缓存系统的防止表单重复提交装置,包括处理器和存储器;所述存储器用于存储计算机程序;所述处理器与所述存储器相连,用于执行所述存储器存储的计算机程序,以使得所述基于分布式缓存系统的防止表单重复提交装置执行上述的基于分布式缓存系统的防止表单重复提交方法。
14、与现有技术相比,本发明具备以下有益效果:
15、(1)本发明使用分布式缓存系统,天然支持单机和集群部署,其结合防重key的设计,可以有效地避免token机制所存在的问题,且对整个应用服务的可扩展性和高可用性也将有显著提升。
16、(2)本发明后端服务自己生成防重key,并进行重复提交的判断,不与前端进行交互,增加了系统的可靠性。
17、(3)本发明使用加密算法生成有过期时间的防重key,可根据需求,自定义禁止表单重复提交的时长,灵活性更强。
1.一种基于分布式缓存系统的防止表单重复提交方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的基于分布式缓存系统的防止表单重复提交方法,其特征在于,所述用户唯一信息为用户id。
3.根据权利要求2所述的基于分布式缓存系统的防止表单重复提交方法,其特征在于,所述步骤s3中检查分布式缓存系统中是否存在防重key的具体方法如下:
4.根据权利要求3所述的基于分布式缓存系统的防止表单重复提交方法,其特征在于,所述加密算法为md5加密算法。
5.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行,以实现如权利要求1~4中任一项所述的基于分布式缓存系统的防止表单重复提交方法。
6.一种基于分布式缓存系统的防止表单重复提交装置,其特征在于,包括:处理器和存储器;所述存储器用于存储计算机程序;所述处理器与所述存储器相连,用于执行所述存储器存储的计算机程序,以使得所述基于分布式缓存系统的防止表单重复提交装置执行如权利要求1~4中任一项所述的基于分布式缓存系统的防止表单重复提交方法。