数据提交判重方法技术

技术编号:16779383 阅读:30 留言:0更新日期:2017-12-12 23:46
一种数据提交判重方法,包括:页面标签值生成步骤(S1,S2),从客户端的页面提取页面特征值,并基于所述页面特征值生成该页面全域唯一的页面标签值,且发送给服务端;计数器生成步骤(S3),在所述服务端,提取所述页面标签值,并将所述页面标签值作为Key值而生成Redis计数器;以及计数器判定步骤(S4),在所述服务端,判断Redis计数器的返回值,在该返回值为1时,判断为当前请求是新请求,并将该当前请求转发到后台服务进程中继续处理,在该返回值大于1时,判断为当前请求为重复提交的请求,而直接拒绝。

Data submission method

A data submission method includes: page duplication, the tag value generation step (S1, S2), extracted from the client page page feature value, and based on the characteristic value of the page page generation global only page tag value, and sent to the server; counter generation step (S3), the server in the. Extract the page tag value, and the value generated Redis page label counter as Key value; and determining step counter (S4), the server in the judgment, the return value of the Redis counter, the return value is 1, judge for the current request is a new request, and the current request forwarding to the background service process to continue processing in the return value is greater than 1, judge for the current request to repeat the request, and direct refusal.

【技术实现步骤摘要】
数据提交判重方法
本专利技术涉及一种防止数据重复提交的数据提交判重方法,特别涉及分布式系统中防止数据重复提交的数据提交判重方法。
技术介绍
随着Internet的发展及其广泛应用,利用网络的电商系统已经成为互联网业务的重要角色。在互联网业务中,防止数据重复提交,保证接口功能的幂等性对于业务系统有着非常重要的意义。特别是在电商系统中,如何防止提交重复订单,如何防止重复提交退款请求,如何防止恶意下单,防止恶意调用服务接口等工作的意义尤为重要。我们将这些行为统称为数据的重复提交。为了应对数据的重复提交,现有的解决方案有如下3种。方案1:在提交数据之后,使用前端页面脚本进行限制,禁止用户再提交的方法。但是,该方案1不能禁止页面刷新或者回退之后,再提交,更不能防止直接调用接口的恶意行为,因而此方案应对现在电商业务需求时基本无效。方案2:在提交的数据中暗含token,在服务端通过同时使用session和token来判断用户是否已提交数据。但是,现在大型商业应用服务都采用分布式部署,即同时部署在多台服务器(物理机或虚拟机)上,用户访问请求会随机落到其中一台服务器上,所以,此方案2需要将所有用户的session同步到每一台服务器上。每一台服务器都保存着所有用户的session信息,这不仅需要开销大量的内存资源,同时同步session信息本身也需要占用大量的网络带宽。所以,此方案2无法适应服务器分布式部署的大型商业应用。方案3:在提交数据之后,在数据库中插入特定记录,对于每次访问,通过读取数据库记录来判断是否重复。但是,在现实系统中,读写数据库往往是整个系统的性能瓶颈,在高并发访问的电商应用系统中更是尽量避免数据库的读写。因而,此方案3实际效率极其低下,并且在实际电商系统中应用性不大。由此可见,现阶段方案(以上1,2,3种方案)均不能满足现有大型分布式应用系统中检测数据重复提交的需求。
技术实现思路
本专利技术是鉴于现有技术的上述这样的问题而做出的,其目的在于提供一种基于特征提取值和缓存巧妙结合来进行数据提交判重,并能很好地将内存开销和时间复杂性开销控制在0(N)的水平的数据提交判重方法。本专利技术的一个方面的数据提交判重方法,包括:页面标签值生成步骤,从客户端的页面提取页面特征值,并基于所述页面特征值生成该页面全域唯一的页面标签值,且发送给服务端;计数器生成步骤,在所述服务端,提取所述页面标签值,并将所述页面标签值作为Key值而生成Redis计数器;以及计数器判定步骤,在所述服务端,判断Redis计数器的返回值,在该返回值为1时,判断为当前请求是新请求,并将该当前请求转发到后台服务进程中继续处理,在该返回值大于1时,判断为当前请求为重复提交的请求,而直接拒绝。根据本专利技术的一个方面的数据提交判重方法,在所述页面标签值生成步骤中,所述页面特征值的提取是通过java-script来实现的。根据本专利技术的一个方面的数据提交判重方法,所述页面特征值是所述页面中关键且不重复的数据。根据本专利技术的一个方面的数据提交判重方法,当所述页面为提交订单页面时,所述页面特征值是每个单品的标识Id和数量。根据本专利技术的一个方面的数据提交判重方法,所述所述页面标签值生成步骤包括:从所述页面的模板中,将作为特征值的域进行标记的步骤;收集所述页面中所有标记出来的所述域的值,并将这些值按照所述页面先后顺序组装成一个整体字符串的步骤;以及根据组装成的所述整体字符串来生成所述页面标签值的步骤。根据本专利技术的一个方面的数据提交判重方法,所述模板包括:velocity、jsp。根据本专利技术的一个方面的数据提交判重方法,在所述页面标签值生成步骤中,在组装所述整体字符时,还将用户登录PIN值作为前缀组装到所述整体字符中。根据本专利技术的一个方面的数据提交判重方法,在所述页面标签值生成步骤中,在生成所述页面标签值时,使用固定位长算法将所述整体字符串进行压缩,得到所述页面标签值。根据本专利技术的一个方面的数据提交判重方法,在判断为当前请求是新请求并继续后台进程处理的情况下,在后台服务进程处理完该当前请求后,删除所述Redis计数器。综上所述,根据本专利技术的数据提交判重方法的上述技术方案,实现了一种有效检测并防止分布式应用系统中数据重复提交问题、且降低分布式应用系统中检测数据重复提交时需要的时间复杂度和空间复杂度的数据提交判重方法。附图说明图1是本专利技术的数据提交判重方法的概要示意图。图2是本专利技术的数据提交判重方法的流程图。图3是本专利技术的数据提交判重方法的步骤S1的流程图。具体实施方式为使本专利技术的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本专利技术进行详细说明。应当注意,这里描述的实施例只用于举例说明,并不用于限制本公开。在以下描述中,为了提供对本公开的透彻理解,阐述了大量特定细节。然而,对于本领域普通技术人员显而易见的是:不必采用这些特定细节来实行本公开。在整个说明书中,对“一个实施例”、“实施例”、“一个示例”或“示例”的提及意味着:结合该实施例或示例描述的特定特征、结构或特性被包含在本公开至少一个实施例中。因此,在整个说明书的各个地方出现的短语“在一个实施例中”、“在实施例中”、“一个示例”或“示例”不一定都指同一实施例或示例。此外,可以以任何适当的组合和/或子组合将特定的特征、结构或特性组合在一个或多个实施例或示例中。此外,本领域普通技术人员应当理解,在此提供的附图都是为了说明的目的,并且附图不一定是按比例绘制的。相同的附图标记指示相同的要素。这里使用的术语“和/或”包括一个或多个相关列出的项目的任何和所有组合。首先,对上述时间复杂度及上述空间复杂度进行简要说明。时间复杂度是指执行算法所需要的计算工作量。常见的时间复杂度有:常数阶0(1)、对数阶0(log2n)、线性阶0(n)、线性对数阶0(nlog2n)、平方阶0(n^2)、立方阶0(n^3)等,n表示事件执行的次数或者规模。其中常数阶和线性阶算法完成相同任务情况下,时间花费的时间最少。空间复杂度是指执行这个算法所需要的内存空间。常见的空间复杂度有:常数阶0(1)、对数阶0(log2n)、线性阶0(n)、线性对数阶0(nlog2n)、平方阶0(n^2)、立方阶0(n^3)等,n表示事件执行的次数或者规模。其中常数阶和线性阶算法完成相同任务情况下,所需要的空间最小。下面,结合附图来具体说明本专利技术的数据提交判重方法。图1是本专利技术的数据提交判重方法的概要示意图。如图1所示,本专利技术的数据提交判重方法,首先,从客户端的页面通过js(java-script)提取页面特征值,并基于页面特征值生成该页面的全域唯一的页面标签值。接着,在客户端将生成的页面标签值通过隐藏域发送给服务端。例如,发送给服务端的后端服务器(例如,Nginx后台服务器等)。然后,在服务端的后端服务器提取页面标签值,并将页面标签值作为Key值而在服务端的缓存中生成Redis计数器。接着,在服务端的缓存中,判断Redis计数器的返回值,在计数器返回值为1时,表明当前请求是第一个到达的新请求,则将该请求转发到后台服务进程中继续处理;在计数器返回值大于1时,表明当前请求属于重复提交的请求,而直接拒绝掉,处理结束。此外,当后台服务进程处理完相应的请求后,在Redi本文档来自技高网
...
数据提交判重方法

【技术保护点】
一种数据提交判重方法,包括:页面标签值生成步骤,从客户端的页面提取页面特征值,并基于所述页面特征值生成该页面全域唯一的页面标签值,且发送给服务端;计数器生成步骤,在所述服务端,提取所述页面标签值,并将所述页面标签值作为Key值而生成Redis计数器;以及计数器判定步骤,在所述服务端,判断Redis计数器的返回值,在该返回值为1时,判断为当前请求是新请求,并将该当前请求转发到后台服务进程中继续处理,在该返回值大于1时,判断为当前请求为重复提交的请求,而直接拒绝。

【技术特征摘要】
2016.06.03 CN 20161039014371.一种数据提交判重方法,包括:页面标签值生成步骤,从客户端的页面提取页面特征值,并基于所述页面特征值生成该页面全域唯一的页面标签值,且发送给服务端;计数器生成步骤,在所述服务端,提取所述页面标签值,并将所述页面标签值作为Key值而生成Redis计数器;以及计数器判定步骤,在所述服务端,判断Redis计数器的返回值,在该返回值为1时,判断为当前请求是新请求,并将该当前请求转发到后台服务进程中继续处理,在该返回值大于1时,判断为当前请求为重复提交的请求,而直接拒绝。2.根据权利要求1所述的数据提交判重方法,其特征在于,在所述页面标签值生成步骤中,所述页面特征值的提取是通过java-script来实现的。3.根据权利要求1所述的网页消重方法,其特征在于,所述页面特征值是所述页面中关键且不重复的数据。4.根据权利要求1所述的网页消重方法,其特征在于,当所述页面为提交订单页面时,所...

【专利技术属性】
技术研发人员:梁仕强韩军涛
申请(专利权)人:北京京东尚科信息技术有限公司北京京东世纪贸易有限公司
类型:发明
国别省市:北京,11

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

1