CN111190709B - 处理请求的方法、装置、电子设备及可读存储介质 - Google Patents
处理请求的方法、装置、电子设备及可读存储介质 Download PDFInfo
- Publication number
- CN111190709B CN111190709B CN201911137641.0A CN201911137641A CN111190709B CN 111190709 B CN111190709 B CN 111190709B CN 201911137641 A CN201911137641 A CN 201911137641A CN 111190709 B CN111190709 B CN 111190709B
- Authority
- CN
- China
- Prior art keywords
- request
- identifier
- response result
- applet
- database
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 71
- 230000004044 response Effects 0.000 claims abstract description 117
- 230000000977 initiatory effect Effects 0.000 claims description 20
- 238000004590 computer program Methods 0.000 claims description 14
- 230000004622 sleep time Effects 0.000 claims description 9
- 238000009825 accumulation Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 8
- 230000005059 dormancy Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 7
- 230000006870 function Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 230000002147 killing effect Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000002411 adverse Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000007664 blowing Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000007958 sleep Effects 0.000 description 1
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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/321—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority
- H04L9/3213—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority using tickets or tokens, e.g. Kerberos
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5013—Request control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/544—Remote
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请实施例提供了一种处理请求的方法、装置、电子设备及可读存储介质,旨在解决服务端因宿主程序的重复请求而产生错误结果的问题,以提高服务端业务的准确性。所述方法包括:接收宿主程序发送的请求,所述请求是由所述宿主程序上的小程序提交的,所述请求携带用户数据和所述小程序提交所述请求时的时间戳;根据所述用户数据和所述时间戳,生成所述请求的请求标识;查询数据库中是否已存储与所述请求标识相同的历史请求标识;在所述数据库中已存储与所述请求标识相同的历史请求标识的情况下,从所述数据库中读取与该历史请求标识对应存储的响应结果,并将读取到的响应结果返回给所述小程序。
Description
技术领域
本申请实施例涉及互联网技术领域,尤其涉及一种处理请求的方法、装置、电子设备及可读存储介质。
背景技术
随着互联网技术的发展和智能终端设备的普及,各种各样的应用程序被推向用户,涉及保险、购物、音视频、外卖、新闻、租赁、办公、票务等各个方面。相关技术中,小程序是一种无需下载安装即可使用的应用程序,用户通过宿主程序查找到目标小程序,用户在进入该目标小程序后通过点击该目标小程序的用户界面,使得该目标小程序向其服务端提交请求,从而获得该服务端返回的响应结果。
目前,当小程序通过宿主程序向其服务端提交请求后,如果该服务端没有在宿主程序的预设时间内返回响应结果,该宿主程序会自动地向该服务端发送重复请求,目的是使得小程序能尽可能获得响应结果。然而通常情况下,服务端在响应第一次请求后,服务端的一些参数发生了变化,如果服务端在参数已经发生变化的情况下再次响应宿主程序自动发送的重复请求,则会得到一个错误的响应结果。
可见相关技术中,服务端会因为对重复请求的响应而产生错误结果,对服务端业务造成不良影响。
发明内容
本申请实施例提供一种处理请求的方法、装置、电子设备及可读存储介质,旨在解决服务端因宿主程序的重复请求而产生错误结果的问题,以提高服务端业务的准确性。
本申请实施例第一方面提供了一种处理请求的方法,所述方法包括:
接收宿主程序发送的请求,所述请求是由所述宿主程序上的小程序提交的,所述请求携带用户数据和所述小程序提交所述请求时的时间戳;
根据所述用户数据和所述时间戳,生成所述请求的请求标识;
查询数据库中是否已存储与所述请求标识相同的历史请求标识;
在所述数据库中已存储与所述请求标识相同的历史请求标识的情况下,从所述数据库中读取与该历史请求标识对应存储的响应结果,并将读取到的响应结果返回给所述小程序。
可选地,所述方法还包括:
在所述数据库中未存储与所述请求标识相同的历史请求标识的情况下,将所述请求标识存储到所述数据库中;
对所述请求进行处理,得到响应结果;
将所述响应结果存储至所述数据库中的与所述请求标识对应的存储区域,并将该响应结果返回给所述小程序。
可选地,从所述数据库中读取与该历史请求标识对应存储的响应结果,包括:
在预设时间段内不断查询所述数据库中是否存储有与该历史请求标识对应存储的响应结果;
如果在所述预设时间段内查询到与该历史请求标识对应存储的响应结果,则读取查询到的响应结果;
所述方法还包括:
如果在所述预设时间段内未查询到与该历史请求标识对应存储的响应结果,则向所述小程序返回空值或提示消息;
其中,所述预设时间段小于所述宿主程序从发送第一次请求到自动发起重复请求之间的间隔时间段,所述第一次请求与所述重复请求携带的用户数据和时间戳均相同。
可选地,在将所述请求标识存储到所述数据库中之后,所述方法还包括:
为所述请求标识设置第一有效期,所述第一有效期的时长大于所述宿主程序从发送第一次请求到自动发起重复请求之间的间隔时间段,所述第一次请求与所述重复请求携带的用户数据和时间戳均相同;
在所述第一有效期到期时,清除所述请求标识。
可选地,所述请求是用于抢占服务端提供的有限资源的请求;所述方法还包括:
判断所述请求是否具有用于抢占有限资源的权限,以确定是否执行步骤:根据所述用户数据和所述时间戳,生成所述请求的请求标识;
其中,在所述请求具有所述权限的情况下,执行步骤:根据所述用户数据和所述时间戳,生成所述请求的请求标识;
在所述请求不具有所述权限的情况下,向所述小程序返回空值或提示消息。
可选地,在所述请求具有所述权限的情况下,所述方法还包括:
为所述权限设置第二有效期,所述第二有效期的时长大于所述宿主程序从发送第一次请求到自动发起重复请求之间的间隔时间段,所述第一次请求与所述重复请求携带的用户数据和时间戳均相同;
在针对所述请求的处理时间超过所述第二有效期时,收回所述请求具有的权限;
如果在所述第二有效期内处理完所述请求,则向其他请求释放用于抢占下一个有限资源的权限。
可选地,所述方法还包括:
判断所述请求是否携带令牌,以确定是否执行步骤:根据所述用户数据和所述时间戳,生成所述请求的请求标识;其中,所述令牌是令牌系统随机或根据预设规则确定是否发放给所述请求的;
其中,在所述请求携带所述令牌的情况下,执行步骤:根据所述用户数据和所述时间戳,生成所述请求的请求标识;在所述请求未携带所述令牌的情况下,向所述小程序返回空值或提示消息;
所述方法还包括:
确定当前时间段内针对多个请求的处理成功率,并确定所述处理成功率是否低于预设阈值;
在所述处理成功率低于所述预设阈值的情况下,确定休眠时间;
在所述休眠时间内,暂停接收新的请求。
本申请实施例第二方面提供一种处理请求的装置,所述装置包括:
请求接收模块,用于接收宿主程序发送的请求,所述请求是由所述宿主程序上的小程序提交的,所述请求携带用户数据和所述小程序提交所述请求时的时间戳;
请求标识生成模块,用于根据所述用户数据和所述时间戳,生成所述请求的请求标识;
历史请求标识查询模块,用于查询数据库中是否已存储与所述请求标识相同的历史请求标识;
响应结果读取和返回模块,用于在所述数据库中已存储与所述请求标识相同的历史请求标识的情况下,从所述数据库中读取与该历史请求标识对应存储的响应结果,并将读取到的响应结果返回给所述小程序。
可选地,所述装置还包括:
请求标识存储模块,用于在所述数据库中未存储与所述请求标识相同的历史请求标识的情况下,将所述请求标识存储到所述数据库中;
请求处理模块,用于对所述请求进行处理,得到响应结果;
响应结果存储和返回模块,用于将所述响应结果存储至所述数据库中的与所述请求标识对应的存储区域,并将该响应结果返回给所述小程序。
可选地,所述响应结果读取和返回模块包括:
响应结果查询子模块,用于在预设时间段内不断查询所述数据库中是否存储有与该历史请求标识对应存储的响应结果;
响应结果查询读取子模块,用于如果在所述预设时间段内查询到与该历史请求标识对应存储的响应结果,则读取查询到的响应结果;
所述装置还包括:
空值或提示消息第一返回模块,用于如果在所述预设时间段内未查询到与该历史请求标识对应存储的响应结果,则向所述小程序返回空值或提示消息;
其中,所述预设时间段小于所述宿主程序从发送第一次请求到自动发起重复请求之间的间隔时间段,所述第一次请求与所述重复请求携带的用户数据和时间戳均相同。
可选地,所述装置还包括:
第一有效期设置模块,用于在将所述请求标识存储到所述数据库中之后,为所述请求标识设置第一有效期,所述第一有效期的时长大于所述宿主程序从发送第一次请求到自动发起重复请求之间的间隔时间段,所述第一次请求与所述重复请求携带的用户数据和时间戳均相同;
请求标识清除模块,用于在所述第一有效期到期时,清除所述请求标识。
可选地,所述请求是用于抢占服务端提供的有限资源的请求;所述装置还包括:
权限判断模块,用于判断所述请求是否具有用于抢占有限资源的权限,以确定是否执行步骤:根据所述用户数据和所述时间戳,生成所述请求的请求标识;
空值或提示消息第二返回模块,用于在所述请求不具有所述权限的情况下,向所述小程序返回空值或提示消息;
其中,所述请求标识生成模块用于在所述请求具有所述权限的情况下,根据所述用户数据和所述时间戳,生成所述请求的请求标识。
可选地,所述装置还包括:
第二有效期设置模块,用于在所述请求具有所述权限的情况下,为所述权限设置第二有效期,所述第二有效期的时长大于所述宿主程序从发送第一次请求到自动发起重复请求之间的间隔时间段,所述第一次请求与所述重复请求携带的用户数据和时间戳均相同;
权限收回模块,用于在针对所述请求的处理时间超过所述第二有效期时,收回所述请求具有的权限;
权限释放模块,用于如果在所述第二有效期内处理完所述请求,则向其他请求释放用于抢占下一个有限资源的权限。
可选地,所述装置还包括:
令牌判断模块,用于判断所述请求是否携带令牌,以确定是否执行步骤:根据所述用户数据和所述时间戳,生成所述请求的请求标识;其中,所述令牌是令牌系统随机或根据预设规则确定是否发放给所述请求的;
空值或提示消息第三返回模块,用于在所述请求未携带所述令牌的情况下,向所述小程序返回空值或提示消息;
其中,所述请求标识生成模块用于在所述请求携带所述令牌的情况下,根据所述用户数据和所述时间戳,生成所述请求的请求标识;
所述装置还包括:
处理成功率确定模块,用于确定当前时间段内针对多个请求的处理成功率,并确定所述处理成功率是否低于预设阈值;
休眠时间确定模块,用于在所述处理成功率低于所述预设阈值的情况下,确定休眠时间;
接收暂停模块,用于在所述休眠时间内,暂停接收新的请求。
本申请实施例第三方面提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时,实现如本申请第一方面所述的方法中的步骤。
本申请实施例第四方面提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器时实现本申请第一方面所述的方法的步骤。
采用本申请实施例提供的处理请求的方法,服务端在获取在宿主程序发送的请求后,根据该请求携带的用户数据和小程序提交该请求时的时间戳,生成该请求的请求标识。然后查询是否存储有与该请求标识相同的历史请求标识。如果存储有相同的历史请求标识,则说明该请求是一个由宿主程序自动发起的重复请求,该历史请求标识是第一次请求的请求标识。得出该结论的原因在于:如果宿主程序在预设时间内没有收到服务端的响应结果,则会以同样的参数发起重复请求,该重复请求携带的用户数据和时间戳与第一次请求携带的用户数据和时间戳相同。因此根据该重复请求携带的用户数据和时间戳生成的请求标识会与第一次请求的请求标识相同。
如此,针对该重复请求,从数据库中读取与该历史请求标识对应存储的响应结果。换言之,从数据库中读取第一次请求对应的响应结果,并将读取到的响应结果返回给小程序,可以确保响应结果的准确性。从而解决了服务端因宿主程序的重复请求而产生错误结果的问题,并提高了服务端业务的准确性。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一实施例提出的处理请求的方法的流程图;
图2是本申请另一实施例提出的处理请求的方法的流程图;
图3是本申请另一实施例提出的处理请求的方法的流程图;
图4是本申请另一实施例提出的处理请求的方法的流程图;
图5是本申请另一实施例提出的处理请求的方法的流程图;
图6是本申请一实施例提供的处理请求的装置的示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,均应属于本申请保护的范围。
相关技术中,小程序是一种无需下载安装即可使用的应用程序,用户通过宿主程序的宿主程序查找到目标小程序,用户在进入该目标小程序后通过点击该目标小程序的用户界面,使得该目标小程序通过该宿主程序向其服务端发送请求,从而获得该服务端返回的响应结果。
目前,当小程序向其服务端发送请求后,如果该服务端没有在宿主程序的预设时间内返回响应结果,该宿主程序会自动地向该服务端发送重复请求,目的是使得小程序能尽可能获得响应结果。然而通常情况下,服务端在响应第一次请求后,服务端的一些参数发生了变化,如果服务端在参数已经发生变化的情况下再次响应宿主程序自动发送的重复请求,则会得到一个错误的响应结果。
以积分累计请求为例,假设小程序在接收用户操作后,主动地提交了一个用于累计5积分的积分累计请求,该积分累计请求通过宿主程序发送至该小程序对应的服务端。服务端响应于该积分累计请求,在该用户原有的80积分的基础上进一步累计5积分,使得该用户的总积分累计至85积分。假设该服务端并没有在该宿主程序的预设时间段内,将表征累计完成的响应结果返回给该宿主程序和小程序,或者该服务端在累计操作完成后意外中断了返回响应结果的操作,则宿主程序将会主动地向该服务端发送重复请求。服务端响应于该重复请求,在该用户当前的85积分的基础上再累计5积分,使得该用户的总积分累计至90积分。可见,服务端因为对重复请求的响应而产生错误结果,为该用户的账户多累计了5积分,因此对服务端业务造成了不良影响。
有鉴于此,本申请提出:服务端在获取在宿主程序发送的请求后,根据该请求携带的用户数据和小程序提交该请求时的时间戳,生成该请求的请求标识。然后查询是否存储有与该请求标识相同的历史请求标识。如果存储有相同的历史请求标识,则说明该请求是一个由宿主程序自动发起的重复请求,该历史请求标识是第一次请求的请求标识。如此,针对该重复请求,从数据库中读取与该历史请求标识对应存储的响应结果,并将读取到的响应结果返回给小程序。从而解决服务端因宿主程序宿主程序的重复请求而产生错误结果的问题,并提高服务端业务的准确性。
参考图1,图1是本申请一实施例提出的处理请求的方法的流程图。如图1所示,该方法包括以下步骤:
步骤S11:接收宿主程序发送的请求,所述请求是由所述宿主程序上的小程序提交的,所述请求携带用户数据和所述小程序提交所述请求时的时间戳。
一方面,宿主程序发送的请求可以是小程序在接收用户操作后主动提交的第一次请求。该第一次请求可以是小程序直接发送至服务端的,该小程序直接向服务端发送请求时,宿主程序会备份该请求。该第一次请求也可以是小程序通过宿主程序转发至服务端的,宿主程序在转发请求时,会备份该请求。宿主程序备份请求的目的是:如果该宿主程序没有在预设时间内收到服务端返回的响应结果,则该宿主程序会以同样的参数自动发出重复请求。
另一方面,宿主程序发送的请求也可以是该宿主程序以同样的参数自动发出的重复请求,该重复请求是小程序在提交第一次请求时被备份在宿主程序中的第一次请求。
本实施例中,考虑到宿主程序发送的重复请求的参数与小程序提交第一次请求的参数相同。如此,为了使服务端有能力判断其接收到的请求是否是宿主程序自动发起的重复请求,如步骤S11所示,小程序在提交请求时,将用户数据和提交请求时的时间戳插入该请求中。其中,用户数据可以包括用户ID、用户姓名、用户性别、用户证件号以及用户证件类型等数据中的一种或多种,用户数据用于区分各个用户。提交请求时的时间戳是指小程序在提交请求时的时刻信息,时间戳用于区分同一用户在不同时间提交的多个请求。
在请求携带用户数据和时间戳的情况下,如果宿主程序发起重复请求,由于该重复请求携带的用户数据与时间戳与第一次请求携带的用户数据与时间戳相同,因此服务端可以依据请求的用户数据和时间戳判断该请求是否为宿主程序自动发送的重复请求。具体的判断方式,请参考下述步骤。
步骤S12:根据所述用户数据和所述时间戳,生成所述请求的请求标识。
本实施例中,根据用户数据和时间戳生成请求标识的方式可以有多种,本申请对具体的生成方式不作限定。
示例地,可以直接将用户数据和时间戳进行字符串拼接,将拼接后的字符串作为请求标识。例如,当前请求中携带的用户数据为“ID937653”,携带的时间戳为“2019/9/4-9:38:13”,根据该用户数据和时间戳生成的请求标识为“ID937653+2019/9/4-9:38:13”。
或者示例地,可以根据预先设定的加密函数,将用户数据和时间戳分别映射成两个加密字符串,然后再将两个加密字符串拼接,将拼接后的加密字符串作为请求标识。
步骤S13:查询数据库中是否已存储与所述请求标识相同的历史请求标识。
本实施例中,历史请求标识是指:服务端针对当前请求之前的历史请求所生成并存储的请求标识。
示例地,历史请求标识可以通过redis数据库存储,每个历史请求标识作为一个关键字key存储在redis数据库中。
步骤S14:在所述数据库中已存储与所述请求标识相同的历史请求标识的情况下,从所述数据库中读取与该历史请求标识对应存储的响应结果,并将读取到的响应结果返回给所述小程序。
本实施例中,如果数据库中已存储与当前请求的请求标识相同的历史请求标识,则说明该当前请求是一个由宿主程序自动发起的重复请求,该重复请求之前的第一次请求已经被服务端响应,服务端将该第一次请求的请求标识作为历史请求标识并存储,服务端还可能得到了该第一次请求对应的响应结果。然而服务端没能在宿主程序发起重复请求之前将响应结果返回至宿主程序和小程序。
服务端还会将针对第一次请求所得到的响应结果存储至数据库,并且该响应结果的存储位置与第一次请求的请求标识的存储位置相对应,使得服务端可以根据第一次请求的请求标识获取到对应的响应结果。
沿用上述示例地,历史请求标识可以通过redis数据库存储,每个历史请求标识作为一个关键字key存储在redis数据库中。每个历史请求标识对应的响应结果也可以通过redis数据库存储,每个历史请求标识对应的响应结果作为该历史请求标识的值value。
如此,服务端通过查询数据库中是否已存储与当前请求的请求标识相同的历史请求标识,如果数据库中已存储与当前请求的请求标识相同的历史请求标识,则确定该当前请求是一个由宿主程序自动发起的重复请求。服务端为了避免针对该重复请求产生错误的响应结果,从数据库中读取与该历史请求标识对应存储的响应结果,并将读取到的响应结果作为该重复请求的响应结果返回给小程序。
换言之,服务端从数据库中读取第一次请求的响应结果,将读取到的第一次请求的响应结果作为重复请求的响应结果返回给小程序,解决了服务端因宿主程序的重复请求而产生错误结果的问题,并提高了服务端业务的准确性。
针对上述步骤S14,一种更具体的实施方式是:在预设时间段内不断查询所述数据库中是否存储有与该历史请求标识对应存储的响应结果;如果在所述预设时间段内查询到与该历史请求标识对应存储的响应结果,则读取查询到的响应结果。其中,所述预设时间段小于所述宿主程序从发送第一次请求到自动发起重复请求之间的间隔时间段。
此外,如果在所述预设时间段内未查询到与该历史请求标识对应存储的响应结果,则向所述小程序返回空值或提示消息。
示例地,假设宿主程序从发送第一次请求到自动发起重复请求之间的间隔时间段为10秒,将所述预设时间段设置为6秒。如果服务端通过步骤S13查询数据库中存储有与当前请求的请求标识相同的历史请求标识A,则服务端在步骤S14中,不断查询数据库中是否存储有与历史请求标识A对应存储的响应结果。如果服务端在6秒内查询到与历史请求标识A对应存储的响应结果,则读取该响应结果,并将其返回给小程序。如果服务端在6秒内没有查询到与历史请求标识A对应存储的响应结果,则向所述小程序返回空值或提示消息。例如,提示消息可用于提醒用户当前网络状况不好,建议用户稍后重试。
其中,服务端在预设时间段内未查询到与该历史请求标识对应存储的响应结果的原因,可以包括但不限于以下几种:
第一种:服务端在接收到重复请求之前,对第一次请求进行处理期间,服务端在生成第一次请求的请求标识并存储后,意外中断了对第一次请求的后续处理流程,导致数据库中仅存储有第一次请求的请求标识。
第二种:服务端在接收到重复请求之后,对第一次请求的处理过程还没有结束,服务端暂时只在数据库中存储了第一次请求的请求标识,并且正在针对第一次请求生成响应结果。在服务端针对该重复请求不断查询响应结果的预设时间结束后,服务端还没有针对第一次请求生成响应结果。
上述实施方式中,通过为查询动作设置预设时间段,使服务端在预设时间段内不断尝试查询响应结果,一方面可以提高查询成功率,进而提高对请求的响应成功率;另一方面,在超过预设时间段后终止查询,可以减轻服务端压力,防止服务端任务堆积。
此外,由于预设时间段小于宿主程序从发送第一次请求到自动发起重复请求之间的间隔时间段,使得宿主程序在准备发出再一个重复请求之前,及时收到响应结果、空值或提示消息,防止宿主再一次发出重复请求,增加服务端并发量,影响服务端运行性能。
参考图2,图2是本申请另一实施例提出的处理请求的方法的流程图。如图2所示,该方法还包括以下步骤:
步骤S15:在所述数据库中未存储与所述请求标识相同的历史请求标识的情况下,将所述请求标识存储到所述数据库中。
本实施例中,如果数据库中未存储与当前请求的请求标识相同的历史请求标识,则说明该当前请求不是由宿主程序自动发出的重复请求。如此,将当前请求的请求标识存储至数据库中后,如果宿主程序在经过其预设时间后自动向服务端发出了重复请求,则服务端在针对该重复请求再次执行步骤S11至步骤S13时,可以通过步骤S13得到其是一个重复请求的判断结果,然后针对其执行步骤S14。
示例地,如上所述,当前请求的请求标识可通过redis数据库存储,具体地,将该请求标识作为一个关键字key存储在redis数据库中。
步骤S16:对所述请求进行处理,得到响应结果。
本实施例中,服务端根据请求所对应的业务类型,对请求进行响应,获得对应的响应结果。
示例地,以积分累计业务为例,假设该请求是一个用于累计5积分的积分累计请求,服务端响应于该积分累计请求,在该用户原有的80积分的基础上进一步累计5积分,使得该用户的总积分增加至85积分。如此,该积分累计请求对应的响应结果可以是一个用于表征“总积分为85积分”的响应结果。
应当理解的,服务端针对不同业务类型的请求,对应不同的处理过程和响应结果。对于服务端如何处理请求以获得响应结果,本申请不做限定。
步骤S17:将所述响应结果存储至所述数据库中的与所述请求标识对应的存储区域,并将该响应结果返回给所述小程序。
本实施例中,将当前请求的响应结果存储至数据库中的目的在于:如果服务端没能在宿主程序的预设时间内将响应结果返回至宿主程序和小程序,则将接收到宿主程序自动发起的重复请求。服务端在针对该重复请求再次执行步骤S11至步骤S13时,可以通过步骤S13得到其是一个重复请求的判断结果,然后针对其执行步骤S14。在针对其执行步骤S14期间,服务端可以从数据库中读取已经存储的响应结果。
此外,考虑到随着服务端运行时间的推移,数据库中存储的请求标识会逐渐累积,为了减小数据库存储压力,或者为了不必定期添加新的数据库,可以为所述请求标识设置第一有效期,在所述第一有效期到期时,清除所述请求标识,从而使数据库保有较大的剩余空间。
其中,为了使得服务端在接收到重复请求,并针对重复请求的请求标识进行历史请求标识查询操作时,该重复请求的第一次请求的历史请求标识还没有被清除,所述第一有效期的时长应大于所述宿主程序从发送第一次请求到自动发起重复请求之间的间隔时间段。示例地,假设宿主程序从发送第一次请求到自动发起重复请求之间的间隔时间段为10秒,则请求标识的第一有效期应大于10秒,例如可以是15秒、18秒或20秒等等。
本申请提供的方法可应用于多种业务类型,不同的业务类型对应不同的请求。如果在某种业务类型中,服务端接收到的请求是用于抢占服务端提供的有限资源的请求,则服务端可能会在短时内收到来自海量用户的大量请求,并发量很高。其中,有限资源可以包括但不限于:电子商品、实物商品的编号、电子凭证、会员身份、保险产品。
以商品秒杀业务为例,在商品秒杀活动开启后的短时间内,服务端会接收到大量的商品秒杀请求,每个商品秒杀请求用于抢占服务端提供的有限商品,此时服务端的处理压力很大。
如图3所示,图3是本申请另一实施例提出的处理请求的方法的流程图。如图3所示,该方法还包括以下步骤:
步骤S11-5:判断所述请求是否具有用于抢占有限资源的权限。
通过执行上述步骤S11-5,以确定是否执行步骤S12:根据所述用户数据和所述时间戳,生成所述请求的请求标识。其中,在所述请求具有所述权限的情况下,执行步骤S12。在所述请求不具有所述权限的情况下,向所述小程序返回空值或提示消息。
本实施例中,服务端提供的有限资源可以是多个,服务端每次仅释放一个有限资源供多个请求抢占。当这个被释放的有限资源被一个请求成功抢占后,服务端再释放下一个有限资源。其中,一个请求为了能抢占到服务端当前释放的一个有限资源,该请求需要获取到用于抢占该有限资源的权限。
示例地,服务端内部署分布式锁系统,每个请求通过SETNX(SET if Not eXists)命令尝试获得锁(即权限)。如果一个请求的SETNX命令返回1,则该请求获得了锁,该请求可以去占有服务端当前释放的一个有限资源。如此,由于该请求获得了锁,即该请求具有用于抢占有限资源的权限,因此服务端将针对该请求执行步骤S12。如果一个请求的SETNX命令返回0,则说明已经有另一个请求提前获得了锁,该请求不能去占有服务端当前释放的一个有限资源。如此,服务端将向该请求对应的小程序返回空值或提示消息,并终止对该请求的处理过程。
通过步骤S11-5判断请求是否具有权限,在请求具有权限的情况下执行步骤S12等后续处理流程,在请求不具有权限的情况下终止对该请求的处理流程,可以使服务端快速处理掉并发的大量请求,一方面提高处理效率,另一方面降低服务端压力。
此外,考虑到服务端在针对具有权限的请求进行处理期间(即执行步骤S12及其后续步骤期间),服务端针对该请求的处理流程可能会因为一些意外的情况而终止。为了防止在处理流程意外终止后,服务端当前释放的有限资源不能被顺利占有,导致业务无限期暂停。可以为权限设置第二有效期,在针对具有权限的请求的处理时间超过所述第二有效期时,收回该请求具有的权限。
沿用上述示例地,服务端内部署分布式锁系统,当服务端释放出一个有限资源后,以该有限资源的编号为关键字key,以释放出有限资源时的时间戳+超时时间为值value,将key和value存储至redis数据库。例如,服务端当前释放的有限资源的编号为1636064,服务端释放该有限资源时的时间戳为16:37:38,超时时间为15秒,则key为1636064,value为16:37:53。其中16:37:53即是第二有效期,第二有效期的时长为15秒。
每个请求通过SETNX(SET if Not eXists)命令尝试获得锁(即权限)。如果一个请求的SETNX命令返回1,则该请求获得了锁,因此服务端将针对该请求将执行步骤S12及其后续步骤。在服务端执行步骤S12及其后续步骤期间,如果服务端的处理流程意外终止,则当时间超过16:37:53后,服务端将收回锁,使得其他请求可以获得这个锁,从而使得其他请求可以来占有当前释放的有限资源。或者,如果服务端没能在16:37:53之前执行完步骤S12及其后续步骤,使得请求没有成功占有到当前释放的有限资源,则服务端将收回锁,使得其他请求可以获得这个锁,从而使得其他请求可以来占有当前释放的有限资源。
具体地,在超过第二有效期后,各请求可通过getset命令尝试获得锁(即权限),如果一个请求通过getset命令获取到锁,则该请求可以去占有服务端当前释放的一个有限资源。如此,服务端将针对该请求执行步骤S12及其后续步骤。
另一方面,如果在所述第二有效期内处理完所述请求,则向其他请求释放用于抢占下一个有限资源的权限。换言之,如果服务端在第二有效期内处理完请求,则该请求成功占有了服务端当前释放的有限资源。如此,服务端释放出下一个有限资源,并向其他请求释放用于抢占下一个有限资源的权限。
本实施例中,所述第二有效期的时长大于所述宿主程序从发送第一次请求到自动发起重复请求之间的间隔时间段。例如,宿主程序从发送第一次请求到自动发起重复请求之间的间隔时间段为10秒,第二有效期的时长可以设置为15秒、18秒或20秒等等。
通过为权限设置一个大于所述间隔时间段的第二有效期,可以有效阻断宿主程序自动发起的重复请求,减小请求的并发量,进而进一步减小服务端压力。例如,所述间隔时间为10秒,第二有效期是15秒,如果小程序主动提交的第一次请求获得了权限,而服务端没有在10秒内将第一次请求的响应结果返回给小程序,则宿主程序将会在第10秒自动发出重复请求。由于服务端当前正在处理第一次请求,第一次请求距离第二有效期的到期时间还有5秒,因此该重复请求不能获得权限,该重复请求将被终止,从而实现了对重复请求的阻断。
参考图4,图4是本申请另一实施例提出的处理请求的方法的流程图。如图4所示,该方法还包括以下步骤:
步骤S11-3:判断所述请求是否携带令牌。
通过执行上述步骤S11-3,以确定是否执行步骤S11-3:根据所述用户数据和所述时间戳,生成所述请求的请求标识。其中,在所述请求携带所述令牌的情况下,执行步骤S12。在所述请求未携带所述令牌的情况下,向所述小程序返回空值或提示消息。其中,所述令牌是令牌系统随机或根据预设规则确定是否发放给所述请求的。
示例地,令牌系统根据的预设规则可以是:针对普通业务的请求每分钟发放100个令牌,针对秒杀内业务的请求每分钟发放1000个令牌。
或者示例地,令牌系统随机发放令牌的方式可以是:针对普通业务的每个请求,以0.9的概率向其发放令牌。针对秒杀业务的每个请求,以0.3的概率向其发放令牌。
通过令牌系统为请求下发或不下发令牌,并通过服务端对请求是否携带令牌进行检查,可以有效过滤掉部分请求,可以进一步减小请求的并发量,进而减小服务端压力。
参考图5,图5是本申请另一实施例提出的处理请求的方法的流程图。如图5所示,该方法还包括以下步骤:
步骤S06:确定当前时间段内针对多个请求的处理成功率,并确定所述处理成功率是否低于预设阈值。
步骤S07:在所述处理成功率低于所述预设阈值的情况下,确定休眠时间。
步骤S08:在所述休眠时间内,暂停接收新的请求。
其中,当前时间段是指在当前时间点之前的预设时间段内。例如当前时间点为17:46:05,预设时间段为60秒,则当前时间段为17:45:05至17:46:05。
其中,步骤S07在确定休眠时间时,可以根据所述处理成功率的高低确定。例如,如果处理成功率较高,则确定一个较短的休眠时间,如果处理成功率较低,则确定一个较长的休眠时间。或者休眠时间是固定的,当服务端的处理成功率低于预设阈值时,服务端均按照固定的休眠时间进行休眠处理。
示例地,假设预设阈值为75%,当前时间段内服务端总共接收到1000个请求,并成功向其中的600个请求返回了响应结果,则当前时间段内的处理成功率为60%,低于预设阈值75%。于是服务端将在休眠时间段内启动熔断机制,暂停接收新的请求。
服务端通过确定当前时间段的处理成功率,并在处理成功率低于预设阈值的情况下,启动熔断机制,暂停接收新的请求,可以及时减轻服务端压力,防止雪崩效应。
基于同一发明构思,本申请一实施例提供一种处理请求的装置。参考图6,图6是本申请一实施例提供的处理请求的装置的示意图。如图6所示,该装置包括:
请求接收模块61,用于接收宿主程序发送的请求,所述请求是由所述宿主程序上的小程序提交的,所述请求携带用户数据和所述小程序提交所述请求时的时间戳;
请求标识生成模块62,用于根据所述用户数据和所述时间戳,生成所述请求的请求标识;
历史请求标识查询模块63,用于查询数据库中是否已存储与所述请求标识相同的历史请求标识;
响应结果读取和返回模块64,用于在所述数据库中已存储与所述请求标识相同的历史请求标识的情况下,从所述数据库中读取与该历史请求标识对应存储的响应结果,并将读取到的响应结果返回给所述小程序。
可选地,所述装置还包括:
请求标识存储模块,用于在所述数据库中未存储与所述请求标识相同的历史请求标识的情况下,将所述请求标识存储到所述数据库中;
请求处理模块,用于对所述请求进行处理,得到响应结果;
响应结果存储和返回模块,用于将所述响应结果存储至所述数据库中的与所述请求标识对应的存储区域,并将该响应结果返回给所述小程序。
可选地,所述响应结果读取和返回模块包括:
响应结果查询子模块,用于在预设时间段内不断查询所述数据库中是否存储有与该历史请求标识对应存储的响应结果;
响应结果查询读取子模块,用于如果在所述预设时间段内查询到与该历史请求标识对应存储的响应结果,则读取查询到的响应结果;
所述装置还包括:
空值或提示消息第一返回模块,用于如果在所述预设时间段内未查询到与该历史请求标识对应存储的响应结果,则向所述小程序返回空值或提示消息;
其中,所述预设时间段小于所述宿主程序从发送第一次请求到自动发起重复请求之间的间隔时间段,所述第一次请求与所述重复请求携带的用户数据和时间戳均相同。
可选地,所述装置还包括:
第一有效期设置模块,用于在将所述请求标识存储到所述数据库中之后,为所述请求标识设置第一有效期,所述第一有效期的时长大于所述宿主程序从发送第一次请求到自动发起重复请求之间的间隔时间段,所述第一次请求与所述重复请求携带的用户数据和时间戳均相同;
请求标识清除模块,用于在所述第一有效期到期时,清除所述请求标识。
可选地,所述请求是用于抢占服务端提供的有限资源的请求;所述装置还包括:
权限判断模块,用于判断所述请求是否具有用于抢占有限资源的权限,以确定是否执行步骤:根据所述用户数据和所述时间戳,生成所述请求的请求标识;
空值或提示消息第二返回模块,用于在所述请求不具有所述权限的情况下,向所述小程序返回空值或提示消息;
其中,所述请求标识生成模块用于在所述请求具有所述权限的情况下,根据所述用户数据和所述时间戳,生成所述请求的请求标识。
可选地,所述装置还包括:
第二有效期设置模块,用于在所述请求具有所述权限的情况下,为所述权限设置第二有效期,所述第二有效期的时长大于所述宿主程序从发送第一次请求到自动发起重复请求之间的间隔时间段,所述第一次请求与所述重复请求携带的用户数据和时间戳均相同;
权限收回模块,用于在针对所述请求的处理时间超过所述第二有效期时,收回所述请求具有的权限;
权限释放模块,用于如果在所述第二有效期内处理完所述请求,则向其他请求释放用于抢占下一个有限资源的权限。
可选地,所述装置还包括:
令牌判断模块,用于判断所述请求是否携带令牌,以确定是否执行步骤:根据所述用户数据和所述时间戳,生成所述请求的请求标识;其中,所述令牌是令牌系统随机或根据预设规则确定是否发放给所述请求的;
空值或提示消息第三返回模块,用于在所述请求未携带所述令牌的情况下,向所述小程序返回空值或提示消息;
其中,所述请求标识生成模块用于在所述请求携带所述令牌的情况下,根据所述用户数据和所述时间戳,生成所述请求的请求标识;
所述装置还包括:
处理成功率确定模块,用于确定当前时间段内针对多个请求的处理成功率,并确定所述处理成功率是否低于预设阈值;
休眠时间确定模块,用于在所述处理成功率低于所述预设阈值的情况下,确定休眠时间;
接收暂停模块,用于在所述休眠时间内,暂停接收新的请求。
基于同一发明构思,本申请另一实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时,实现如本申请上述任一实施例所述的方法中的步骤。
基于同一发明构思,本申请另一实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器时实现本申请上述任一实施例所述的方法中的步骤。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种处理请求的方法、装置、电子设备及可读存储介质,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (8)
1.一种处理请求的方法,其特征在于,所述方法包括:
接收宿主程序发送的请求,所述请求是由所述宿主程序上的小程序提交的,所述请求携带用户数据和所述小程序提交所述请求时的时间戳;
根据所述用户数据和所述时间戳,生成所述请求的请求标识;
查询数据库中是否已存储与所述请求标识相同的历史请求标识;
在所述数据库中已存储与所述请求标识相同的历史请求标识的情况下,从所述数据库中读取与该历史请求标识对应存储的响应结果,并将读取到的响应结果返回给所述小程序;
所述请求是用于抢占服务端提供的有限资源的请求;所述方法还包括:
判断所述请求是否具有用于抢占有限资源的权限,以确定是否执行步骤:根据所述用户数据和所述时间戳,生成所述请求的请求标识;
其中,在所述请求具有所述权限的情况下,执行步骤:根据所述用户数据和所述时间戳,生成所述请求的请求标识;
在所述请求不具有所述权限的情况下,向所述小程序返回空值或提示消息;
在所述请求具有所述权限的情况下,所述方法还包括:
为所述权限设置第二有效期,所述第二有效期的时长大于所述宿主程序从发送第一次请求到自动发起重复请求之间的间隔时间段,所述第一次请求与所述重复请求携带的用户数据和时间戳均相同;
在针对所述请求的处理时间超过所述第二有效期时,收回所述请求具有的权限;
如果在所述第二有效期内处理完所述请求,则向其他请求释放用于抢占下一个有限资源的权限。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述数据库中未存储与所述请求标识相同的历史请求标识的情况下,将所述请求标识存储到所述数据库中;
对所述请求进行处理,得到响应结果;
将所述响应结果存储至所述数据库中的与所述请求标识对应的存储区域,并将该响应结果返回给所述小程序。
3.根据权利要求1或2所述的方法,其特征在于,从所述数据库中读取与该历史请求标识对应存储的响应结果,包括:
在预设时间段内不断查询所述数据库中是否存储有与该历史请求标识对应存储的响应结果;
如果在所述预设时间段内查询到与该历史请求标识对应存储的响应结果,则读取查询到的响应结果;
所述方法还包括:
如果在所述预设时间段内未查询到与该历史请求标识对应存储的响应结果,则向所述小程序返回空值或提示消息;
其中,所述预设时间段小于所述宿主程序从发送第一次请求到自动发起重复请求之间的间隔时间段,所述第一次请求与所述重复请求携带的用户数据和时间戳均相同。
4.根据权利要求2所述的方法,其特征在于,在将所述请求标识存储到所述数据库中之后,所述方法还包括:
为所述请求标识设置第一有效期,所述第一有效期的时长大于所述宿主程序从发送第一次请求到自动发起重复请求之间的间隔时间段,所述第一次请求与所述重复请求携带的用户数据和时间戳均相同;
在所述第一有效期到期时,清除所述请求标识。
5.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
判断所述请求是否携带令牌,以确定是否执行步骤:根据所述用户数据和所述时间戳,生成所述请求的请求标识;其中,所述令牌是令牌系统随机或根据预设规则确定是否发放给所述请求的;
其中,在所述请求携带所述令牌的情况下,执行步骤:根据所述用户数据和所述时间戳,生成所述请求的请求标识;在所述请求未携带所述令牌的情况下,向所述小程序返回空值或提示消息;
所述方法还包括:
确定当前时间段内针对多个请求的处理成功率,并确定所述处理成功率是否低于预设阈值;
在所述处理成功率低于所述预设阈值的情况下,确定休眠时间;
在所述休眠时间内,暂停接收新的请求。
6.一种处理请求的装置,其特征在于,所述装置包括:
请求接收模块,用于接收宿主程序发送的请求,所述请求是由所述宿主程序上的小程序提交的,所述请求携带用户数据和所述小程序提交所述请求时的时间戳;
请求标识生成模块,用于根据所述用户数据和所述时间戳,生成所述请求的请求标识;
历史请求标识查询模块,用于查询数据库中是否已存储与所述请求标识相同的历史请求标识;
响应结果读取和返回模块,用于在所述数据库中已存储与所述请求标识相同的历史请求标识的情况下,从所述数据库中读取与该历史请求标识对应存储的响应结果,并将读取到的响应结果返回给所述小程序;
所述请求是用于抢占服务端提供的有限资源的请求;所述装置还包括:
权限判断模块,用于判断所述请求是否具有用于抢占有限资源的权限,以确定是否执行步骤:根据所述用户数据和所述时间戳,生成所述请求的请求标识;
空值或提示消息第二返回模块,用于在所述请求不具有所述权限的情况下,向所述小程序返回空值或提示消息;
其中,所述请求标识生成模块用于在所述请求具有所述权限的情况下,根据所述用户数据和所述时间戳,生成所述请求的请求标识;
所述装置还包括:
第二有效期设置模块,用于在所述请求具有所述权限的情况下,为所述权限设置第二有效期,所述第二有效期的时长大于所述宿主程序从发送第一次请求到自动发起重复请求之间的间隔时间段,所述第一次请求与所述重复请求携带的用户数据和时间戳均相同;
权限收回模块,用于在针对所述请求的处理时间超过所述第二有效期时,收回所述请求具有的权限;
权限释放模块,用于如果在所述第二有效期内处理完所述请求,则向其他请求释放用于抢占下一个有限资源的权限。
7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时,实现如权利要求1至5任一所述的方法中的步骤。
8.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行时实现如权利要求1至5任一所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911137641.0A CN111190709B (zh) | 2019-11-19 | 2019-11-19 | 处理请求的方法、装置、电子设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911137641.0A CN111190709B (zh) | 2019-11-19 | 2019-11-19 | 处理请求的方法、装置、电子设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111190709A CN111190709A (zh) | 2020-05-22 |
CN111190709B true CN111190709B (zh) | 2024-04-12 |
Family
ID=70707254
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911137641.0A Active CN111190709B (zh) | 2019-11-19 | 2019-11-19 | 处理请求的方法、装置、电子设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111190709B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112948108B (zh) * | 2021-01-26 | 2024-03-15 | 北京字节跳动网络技术有限公司 | 请求处理方法、装置和电子设备 |
CN113438290A (zh) * | 2021-06-22 | 2021-09-24 | 康键信息技术(深圳)有限公司 | 重复请求的检测方法、装置、设备及存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20040001814A (ko) * | 2002-06-28 | 2004-01-07 | 주식회사 케이티 | 에이전트를 이용한 타임스탬프 서비스 방법 |
CN102196506A (zh) * | 2010-03-15 | 2011-09-21 | 华为技术有限公司 | 网络资源访问控制方法、系统及装置 |
CN105900061A (zh) * | 2014-10-22 | 2016-08-24 | 华为技术有限公司 | 对象存储系统中的业务流控制方法、控制器和系统 |
CN109040209A (zh) * | 2018-07-23 | 2018-12-18 | 深圳市牛鼎丰科技有限公司 | 拦截重复请求的方法、装置、计算机设备及存储介质 |
CN109660589A (zh) * | 2018-10-25 | 2019-04-19 | 阿里巴巴集团控股有限公司 | 请求处理方法及装置、电子设备 |
CN109815256A (zh) * | 2018-12-21 | 2019-05-28 | 聚好看科技股份有限公司 | 一种数据处理方法、装置、电子设备和存储介质 |
CN110083590A (zh) * | 2019-04-22 | 2019-08-02 | 杭州数梦工场科技有限公司 | 数据填充方法及装置和计算机可读存储介质 |
CN110147934A (zh) * | 2019-04-17 | 2019-08-20 | 深圳壹账通智能科技有限公司 | 业务请求处理方法、装置、计算机设备和存储介质 |
CN110311986A (zh) * | 2019-07-10 | 2019-10-08 | 中国民航信息网络股份有限公司 | 移动端请求的处理方法和装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090070336A1 (en) * | 2007-09-07 | 2009-03-12 | Sap Ag | Method and system for managing transmitted requests |
US9646140B2 (en) * | 2010-05-18 | 2017-05-09 | ServiceSource | Method and apparatus for protecting online content by detecting noncompliant access patterns |
US10585696B2 (en) * | 2016-11-08 | 2020-03-10 | International Business Machines Corporation | Predicting transaction outcome based on artifacts in a transaction processing environment |
-
2019
- 2019-11-19 CN CN201911137641.0A patent/CN111190709B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20040001814A (ko) * | 2002-06-28 | 2004-01-07 | 주식회사 케이티 | 에이전트를 이용한 타임스탬프 서비스 방법 |
CN102196506A (zh) * | 2010-03-15 | 2011-09-21 | 华为技术有限公司 | 网络资源访问控制方法、系统及装置 |
CN105900061A (zh) * | 2014-10-22 | 2016-08-24 | 华为技术有限公司 | 对象存储系统中的业务流控制方法、控制器和系统 |
CN109040209A (zh) * | 2018-07-23 | 2018-12-18 | 深圳市牛鼎丰科技有限公司 | 拦截重复请求的方法、装置、计算机设备及存储介质 |
CN109660589A (zh) * | 2018-10-25 | 2019-04-19 | 阿里巴巴集团控股有限公司 | 请求处理方法及装置、电子设备 |
CN109815256A (zh) * | 2018-12-21 | 2019-05-28 | 聚好看科技股份有限公司 | 一种数据处理方法、装置、电子设备和存储介质 |
CN110147934A (zh) * | 2019-04-17 | 2019-08-20 | 深圳壹账通智能科技有限公司 | 业务请求处理方法、装置、计算机设备和存储介质 |
CN110083590A (zh) * | 2019-04-22 | 2019-08-02 | 杭州数梦工场科技有限公司 | 数据填充方法及装置和计算机可读存储介质 |
CN110311986A (zh) * | 2019-07-10 | 2019-10-08 | 中国民航信息网络股份有限公司 | 移动端请求的处理方法和装置 |
Non-Patent Citations (1)
Title |
---|
Android设备获取web服务端验证码技术的研究;王子维;;信息通信;20160215(02);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111190709A (zh) | 2020-05-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11159649B2 (en) | Systems and methods of rate limiting for a representational state transfer (REST) application programming interface (API) | |
JP6441404B2 (ja) | クライアントをアップデートするための方法およびデバイス | |
CN107145396B (zh) | 分布式锁实现方法和设备 | |
CN106533805B (zh) | 一种微服务请求处理方法、微服务控制器及微服务架构 | |
CN111190709B (zh) | 处理请求的方法、装置、电子设备及可读存储介质 | |
JP2002324047A (ja) | 分散クライアント/サーバ環境での自動化セッション・リソース・クリーンアップの方法およびシステム。 | |
US20170163556A1 (en) | Method and system for reclaiming unused resources in a networked application environment | |
US10447796B2 (en) | Pushlet instant messaging framework and pushlet instant messaging method | |
CN108134713B (zh) | 一种通信方法及装置 | |
JP2019507424A5 (zh) | ||
CN112104731A (zh) | 请求处理方法、装置、电子设备和存储介质 | |
WO2010072106A1 (zh) | 一种内容标识管理服务器间的交互处理方法及装置 | |
CN107172112B (zh) | 一种计算机文件传输方法及装置 | |
CN113836232A (zh) | 联盟链中的共识方法和系统 | |
CN107341047B (zh) | 回调事件的路由处理方法、装置、存储介质及计算机设备 | |
CN110825505B (zh) | 任务调度方法、装置、计算机设备及存储介质 | |
US8332498B2 (en) | Synchronized relay messaging and coordinated network processing using SNMP | |
CN110753006A (zh) | 一种数据处理方法、装置及电子设备 | |
CN111726394B (zh) | 设备离线检测方法及其相关装置 | |
CN112532423A (zh) | 设备访问方法、装置和系统 | |
CN110839085A (zh) | 指令管理方法、装置、电子设备及存储介质 | |
CN111683041A (zh) | 一种数据库关联访问方法 | |
CN111092892A (zh) | 一种鉴权方法、装置、服务器及存储介质 | |
CN112954065A (zh) | 一种数据推送方法、装置、电子设备及存储介质 | |
US10778604B2 (en) | Location data processing method, apparatus and system |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |