CN108897615B - 秒杀请求处理方法、应用服务器集群及存储介质 - Google Patents
秒杀请求处理方法、应用服务器集群及存储介质 Download PDFInfo
- Publication number
- CN108897615B CN108897615B CN201810547915.2A CN201810547915A CN108897615B CN 108897615 B CN108897615 B CN 108897615B CN 201810547915 A CN201810547915 A CN 201810547915A CN 108897615 B CN108897615 B CN 108897615B
- Authority
- CN
- China
- Prior art keywords
- killing
- preset
- inventory
- cache
- request
- 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
- 230000002147 killing effect Effects 0.000 title claims abstract description 248
- 238000003672 processing method Methods 0.000 title claims abstract description 14
- 238000012795 verification Methods 0.000 claims abstract description 99
- 238000012797 qualification Methods 0.000 claims abstract description 91
- 238000012545 processing Methods 0.000 claims abstract description 20
- 238000000034 method Methods 0.000 claims description 31
- 238000010200 validation analysis Methods 0.000 claims 1
- 230000000694 effects Effects 0.000 description 9
- 230000009849 deactivation Effects 0.000 description 6
- 230000001954 sterilising effect Effects 0.000 description 6
- 238000004659 sterilization and disinfection Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 2
- 230000029087 digestion Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
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/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/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- 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/5083—Techniques for rebalancing the load in a distributed system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/06—Buying, selling or leasing transactions
- G06Q30/0601—Electronic shopping [e-shopping]
- G06Q30/0633—Lists, e.g. purchase orders, compilation or processing
- G06Q30/0635—Processing of requisition or of purchase orders
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提供一种秒杀请求处理方法,该方法包括:分别确定每台缓存服务器对应的虚拟库存;接收用户提交的秒杀请求,通过负载均衡分摊到所述服务器集群中的多台服务器;读取所述秒杀请求的具体信息,对所述秒杀请求进行资格验证;当资格验证成功时,对与该秒杀请求对应的缓存服务器的虚拟库存进行扣减,并生成与该秒杀请求对应的预设令牌信息,将该预设令牌信息保存至预设一级缓存中;及,接收用户针对通过资格验证的秒杀请求提交的交易请求,对所述实时令牌信息进行校验,当令牌校验通过时,对数据库中的真实库存进行扣减,秒杀成功。本发明还提供一种应用服务器集群及存储介质。利用本发明,可以提高秒杀请求处理效率。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种秒杀请求处理方法、应用服务器集群及计算机可读存储介质。
背景技术
在电商领域中,为了吸引用户经常会开展一些活动,例如:秒杀活动。秒杀活动就是以较低的价格推出一些商品,这些商品的数量是有限的,需要用户进行秒杀抢购,以吸引用户。然而,活动开始瞬间的流量非常大,且都是在请求相同的资源,因此会造成严重的数据库并发读写冲突以及资源锁请求冲突。
发明内容
鉴于以上内容,本发明提供一种秒杀请求处理方法、应用服务器集群及计算机可读存储介质,其主要目的在于提高秒杀请求处理效率。
为实现上述目的,本发明提供一种秒杀请求处理方法,该方法包括:
S1、根据预设规则将秒杀商品的库存均匀分布至缓存服务器集群中的多台缓存服务器,并分别确定每台缓存服务器对应的虚拟库存;
S2、接收网关服务器通过均衡负载分配的秒杀请求,其中,网关服务器到达预设时刻时,接收用户通过客户端提交的多条秒杀请求;
S3、读取每条秒杀请求的具体信息,根据预设的验证规则,对所述每条秒杀请求进行资格验证;
S4、当所述秒杀请求的资格验证通过时,对与该秒杀请求对应的缓存服务器的虚拟库存进行扣减,并根据用户资格信息生成与该秒杀请求对应的预设令牌信息,将该预设令牌信息保存至预设一级缓存中;及
S5、接收用户针对通过资格验证的秒杀请求提交的交易请求,根据所述交易请求生成实时令牌信息,对所述实时令牌信息进行校验,当所述实时令牌信息校验通过时,对数据库中的真实库存进行扣减,秒杀成功。
此外,本发明还提供一种应用服务器集群,其特征在于,该应用服务器集群包括多台应用服务器,所述服务器包括:存储器、处理器,所述存储器上存储有可在所述处理器上运行的秒杀请求处理程序,所述秒杀请求处理程序被所述处理器执行时,可实现如上所述秒杀请求处理方法中的任意步骤。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质中包括秒杀请求处理程序,所述秒杀请求处理程序被处理器执行时,可实现如上所述秒杀请求处理方法中的任意步骤。
本发明提出的秒杀请求处理方法、应用服务器集群及计算机可读存储介质,通过对秒杀商品的库存进行库存散列,将散列后的库存保存至缓存服务器集群中的每一台缓存服务器上,利用网关服务器通过负载均衡将秒杀请求分配至服务器集群中的每台服务器,并将秒杀请求载入至相应的缓存服务器中,分散了秒杀请求,提升了***的响应能力;通过对秒杀请求进行资格验证,过滤掉无效请求,减缓了***核心服务的压力;构建一级缓存、二级缓存,服务器依次从二级缓存、一级缓存、数据库中获取相应信息,提高了秒杀请求处理效率。
附图说明
图1为本发明秒杀请求处理方法较佳实施例的流程图;
图2为本发明应用服务器集群较佳实施例的应用环境示意图;
图3为图2中应用服务器的较佳实施例的示意图;
图4为图3中秒杀请求处理程序的程序模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明提供一种秒杀请求处理方法。参照图1所示,为本发明秒杀请求处理方法较佳实施例的流程图。该方法可以由一个装置执行,该装置可以由软件和/或硬件实现。
在本实施例中,秒杀请求处理方法包括步骤S1-S5:
S1、根据预设规则将秒杀商品的库存均匀分布至缓存服务器集群中的多台缓存服务器,并分别确定每台缓存服务器对应的虚拟库存;
预先确定一个缓存服务器集群,其中,该缓存服务器集群中包含m台缓存服务器,并且,将缓存服务器集群作为一级缓存。
在进行秒杀活动之前,会预先确定秒杀活动中的秒杀商品及商品编号、库存、活动的场次等信息,上述信息保存在数据库中。假设秒杀活动中包含1种商品,从数据库中读取该商品的实际库存为10000,按照用户编号后两位(00-99),将商品库存划分为100份,每份包含100个库存,根据hash算法,将这100份库存均匀分布至缓存服务器集群中的m台缓存服务器上。
需要说明的是,分布至缓存服务器集群中的每一台缓存服务器上的库存为实际库存,但实际上保存在每一台缓存服务器上的库存为虚拟库存。一般请情况下,虚拟库存略大于实际库存,可根据运营商需求进行设置。然后,分别确定所述每台缓存服务器对应的虚拟库存,并将虚拟库存信息保存至一级库存中。
假设秒杀活动中的商品i的库存为10000,那么,商品i在每台缓存服务器中的键(key)分别定义为:itemstock:r:i:00~itemstock:r:i:99,其中,itemstock为资源前缀(库存),r为秒杀活动的场次编号,i为秒杀活动的商品编号,“00”-“99”为用户编号后两位,每个键对应的存储的值(value)为100。也就是说,秒杀活动中不同场次和/或不同商品,其对应的键都会不一样。
可以理解的是,缓存服务器集群中缓存服务器的数量决定了这个缓存服务器集群的消化能力,如果单台缓存服务器的吞吐量为2万TPS,那么m台缓存服务器的吞吐量即为2m万TPS,因此,在本实施例中,m的取值需通过预估秒杀活动中的并发量来确定。
S2、接收网关服务器通过均衡负载分配的秒杀请求,其中,网关服务器到达预设时刻时,接收用户通过客户端提交的多条秒杀请求;
其中,所述预设时刻为秒杀活动开始的时刻。秒杀活动开始时,网关服务器接收用户通过客户端提交的秒杀请求,秒杀请求中包含:用户编号、商品信息、优惠信息等。可以理解的是,秒杀开始的时刻,会同时接收到大量秒杀请求,例如,10000条秒杀请求,需将这10000条秒杀请求分配至应用服务器集群中的每台应用服务器进行处理。
在本实施例中,网关服务器根据DNS轮询机制,将10000条秒杀请求分别分配至每一台应用服务器。其中,网关服务器应用的是F5物理机。假设四台应用服务器组成应用服务器集群,IP地址分别为172.28.20.1、172.28.20.2、172.28.20.3、172.28.20.4,当用户请求访问时,网关服务器将循环调度IP地址的次序,将按172.28.20.1、172.28.20.2、172.28.20.3和172.28.20.4的顺序应答第一个用户的秒杀请求,下一个用户的秒杀请求将用旋转后的172.28.20.2、172.28.20.3、172.28.20.4和172.20.20.1这样的顺序应答,旋转过程将持续下去,成功实现DNS负载均衡。
应用服务器接收网关服务器分配的秒杀请求之后,根据秒杀请求中携带的用户编号信息,将秒杀请求载入与用户编号信息对应的缓存服务器中。例如,秒杀请求中携带的用户编号信息中的后两位为“52”,确定缓存服务器集群中库存的键信息中用户编号后两位为“52”的缓存服务器,将该秒杀请求载入该缓存服务器中,供后续获取该缓存服务器上的虚拟库存信息。
上述步骤将秒杀请求通过负载均衡分布至应用服务器集群中的每台应用服务器上,并利用缓存服务器集群,将并发的数秒杀请求有效地引导在缓存服务器集群中的不同缓存服务器上,避免单独的服务器并发能力有限的问题,实现分散秒杀请求的效果,提升***的响应能力。
S3、读取每条秒杀请求的具体信息,根据预设的验证规则,对所述每条秒杀请求进行资格验证;
可以理解的是,为了减少应用服务器集群性能的消耗,当商品的实际库存为“0”时,接收到用户发送的秒杀请求,直接返回已卖完的信息。具体地,该步骤包括:
判断预设二级缓存中是否存在预设库存标识;
当所述二级缓存中存在所述预设库存标识时,生成第一预警信息;
当所述二级缓存中不存在所述预设库存标识时,判断所述一级缓存中是否存在所述预设库存标识;
当所述一级缓存中存在所述预设库存标识时,生成第一预警信息,并将该预设库存标识保存至所述二级缓存中;
当所述一级缓存中不存在所述预设库存标识时,将所述多个秒杀请求通过负载均衡分摊到所述应用服务器集群中的多台应用服务器。
其中,预设二级缓存为应用服务器集群中每台应用服务器的内存,预设库存标识为“无库存”/“库存为0”。依次按照二级缓存、一级缓存的顺序读取“无库存”/“库存为0”的库存标识,当二级缓存/一级缓存中存在“无库存”/“库存为0”的库存标识时,说明商品已经卖完了,生成第一预警信息并反馈至该秒杀请求对应的客户端,例如,“您抢购的商品已卖完”。
需要说明的是,当二级缓存中不存在“无库存”/“库存为0”的库存标识、且一级缓存中存在“无库存”/“库存为0”的库存标识时,生成第一预警信息的同时,还将该库存标识放置至二级缓存中,便于下次接收秒杀请求时直接从二级缓存中读取“无库存”/“库存为0”的库存标识,释放无效请求,减缓***压力,同时,有效避免了商品超卖现象。
需要说明的是,二级缓存中保存的数据的时效比一级缓存中保存的数据的时效短。但应用服务器从二级缓存读取数据的速度远大于从一级缓存中读取的速度。因此,将一级缓存中存储的“无库存”/“库存为0”的库存标识保存在二级缓存中,可提高后续读取“无库存”/“库存为0”的库存标识的速度,更快地释放无效请求,提高***的稳定性。
可以理解的是,在十几秒的时间内,参加秒杀活动的商品库存就卖完了,之后的所有秒杀请求都是无效请求,并且每一条秒杀请求每执行一个校验步骤都需消耗服务器性能,并且是无效校验,因此需要拦截后续的多数请求。
在本实施例中,通过每接收到一条秒杀请求都去二级缓存/一级缓存中获取预设库存标识,阻挡后续校验步骤的流量,起到保护***的作用。在其他实施例中,在生成“无库存”/“库存为0”的库存标识后,直接关闭用户提交秒杀请求的通道,用户无法提交秒杀请求,最大限度地减少无效请求的数量。
当一级缓存、二级缓存中均不存在“无库存”/“库存为0”的库存标识,表示商品还没有被抢完,初步说明接收到的秒杀请求有效,还需要通过用户资格验证过滤掉部分无效请求,仅对有效请求进行处理。具体地,所述“根据预设的验证规则,对所述每条秒杀请求进行资格验证”的步骤包括:
从预设二级缓存中随机读取一条验证数据,包括验证问题及预设答案,将所述验证问题发送至所述秒杀请求对应的客户端,并接收用户输入的答案数据,将所述答案数据与所述预设答案进行比对;
当所述答案数据与所述预设答案不一致时,生成第二预警信息,返回执行上一步骤;或者
当所述答案数据与所述预设答案一致时,根据所述秒杀请求生成用户资格信息,并从所述一级缓存中查询该用户资格信息,当所述一级缓存中不存在该用户资格信息时,用户资格校验成功,将所述用户资格信息保存至一级缓存中,或者,当所述一级缓存中存在该用户资格信息时,生成第三预警信息。
需要说明的是,在运营激活秒杀活动时,从预设的验证码库中读取预设数量(例如,10000条)的验证数据保存至二级缓存中,应用服务器集群中的不同应用服务器对应的二级缓存中的验证数据不一定相同。每一条验证数据包括验证问题及预设答案。
以应用服务器集群中的应用服务器A为例,接收到网关服务器分配的秒杀请求后,当商品还没被抢完时,应用服务器A从二级缓存中随机调取一条验证数据,将该验证数据的验证问题发送至与该秒杀请求对应的客户端,同时,根据该秒杀请求中的资源前缀、商品编号、场次编号、用户编号生成键,根据键的参数将该条验证数据的预设答案保存至一级缓存中。
接收到用户通过客户端输入的答案数据后,根据键的参数从一级缓存中获取预设答案,并与答案数据进行对比:当答数据案与预设答案不一致时,生成第二预警信息并反馈至该秒杀请求对应的客户端,例如“验证码错误”。然后,重新读取一条验证数据并执行验证码校验步骤。
该步骤的目的在于,通过引入验证码库中的验证数据,在不增加人为识别的识别率的基础上,进一步的增加机器识别的难度,有效的阻挡机器请求对***的压力。
在通过验证码校验之后,获取上述根据秒杀请求中的资源前缀、商品编号、场次编号、用户编号生成的键作为用户资格信息,对用户资格信息进行判定。具体地,从一级缓存中查询该用户资格信息,如果一级缓存中不存在该用户资格信息,则认为当前用户没有参加过该商品、该场次的秒杀活动,也就是说当前用户具备参与参与资格,同时,将本次请求判定的该用户资格信息保存至一级缓存中。当所述一级缓存中存在该用户资格信息时,说明当前用户参加过该商品、该场次的秒杀活动,生成第三预警信息并反馈至该秒杀请求对应的客户端,例如“不能次重复秒杀该商品,不具备秒杀资格”。
可以理解的是,为了防止单个用户超额抢购秒杀商品,为保存在一级缓存中的用户资格信息设置预设时间间隔(该预设时间间隔与用户支付的有效时间一致,例如,15分钟)的有效时间,有效时间远大于秒杀活动中商品被抢购完的时间,那么,用户想再抢购秒杀商品时,无法通过用户资格验证。另外,如果用户资格验证通过且后续验证均通过后,用户选择不支付或者在预设时间间隔内未支付,那么订单***会在预设时间间隔之后关单,同时从一级缓存中释放掉该用户资格信息对应的参与记录。也就是说,用户在15分钟之后依然可以再次参加这个商品的秒杀,前提是这个商品还有库存。
上述步骤通过对用户资格进行验证,进一步过滤掉了无效请求,解决了单用户刷单的问题,减缓了***压力。
S4、当所述秒杀请求的资格验证通过时,对与该秒杀请求对应的缓存服务器的虚拟库存进行扣减,并根据用户资格信息生成与该秒杀请求对应的预设令牌信息,将该预设令牌信息保存至预设一级缓存中;
当该秒杀请求对应的用户具备秒杀资格时,根据用户编号的后两位获取该秒杀请求对应的缓存服务器上的虚拟库存,对虚拟库存进行一次扣减操作。然后,根据上述用户资格信息,生成与该用户资格信息对应的预设令牌信息,例如,根据该秒杀请求中包含的秒杀活动编号a,秒杀活动的场次编号r,秒杀活动的商品编号i,用户编号u,生成的令牌即token为:a:r:i:u,然后将该预设令牌信息保存至一级缓存中。
可以理解的是,与用户资格相似的是,如果用户最终选择不支付或者在预设时间间隔内未支付,那么订单***会在预设时间间隔之后关单,同时,也需要从一级缓存中释放掉该秒杀请求对应的预设令牌信息。因此,也需要给预设令牌时间设置一个预设时间间隔的有效时间,例如,15分钟。
需要说明的是,当虚拟库存不为零时,才会发放令牌,实现放行获得去参与扣减真实库存的资格控制。当虚拟库存为零时,对虚拟库存进行一次扣减操作后即为负数,由于虚拟库存大于真实库存,当虚库库存不够时,说明商品的真实库存也不够,令牌发放失败,生成第一预警信息并反馈至该秒杀请求对应的客户端,例如,“当前商品已卖完”。
进一步地,为了减少后续的秒杀请求对***性能的消耗,生成并保存预设库存标识(“无库存”/“库存为0”)至所述一级缓存中。
S5、接收用户针对通过资格验证的秒杀请求提交的交易请求,根据所述交易请求生成实时令牌信息,对所述实时令牌信息进行校验,当所述实时令牌信息校验通过时,对数据库中的真实库存进行扣减,秒杀成功。
用户通过资格验证之后的预设时间内,可进行后续的付款操作。接收用户基于秒杀请求提交的交易请求,交易请求中包含:秒杀活动编号a,秒杀活动的场次编号r,秒杀活动的商品编号i,用户编号u等信息,根据交易请求中包含的信息及预设的令牌生成规则,生成该交易请求的实时令牌信息。具体地,所述“对所述实时令牌信息进行校验”的步骤包括:
从所述一级缓存中获取该秒杀请求对应的预设令牌信息,当所述一级缓存中不存在所述预设令牌信息时,判定所述实施令牌信息无效;
当所述一级缓存中存在所述预设令牌信息时,判断所述实时令牌信息是否与所述预设令牌信息一致;
若不一致,判定所述实时令牌信息无效,提示令牌校验失败;或者
若一致,判定所述实时令牌信息有效,提示令牌校验成功。
一级缓存中不存在所述预设令牌信息时,说明该预设令牌信息已被释放,即超出了付款的有效时限。当实施令牌信息与预设令牌信息一致时,说明当前交易请求对应地秒杀请求通过了上述用户资格验证,为有效请求。
该步骤的目的在于,链路下游请求的时候根据请求中包含的参数拼装出组合一致的键来获取用户下单的时候需要的令牌,以来防止绕过***验证,直接请求到核心链路。
令牌校验成功后,需对商品的真实库存进行扣减,当数据库中商品的真实库存不为零时,真实库存扣减成功则秒杀成功,交易才会成功,至此,交易完成,当真实库存因某种原因扣减失败时,预设令牌信息会失效,在预设时间间隔(例如,15分钟)后,用户将重新具备秒杀资格。
需要说明的是,当商品的真实库存为零时,对真实库存进行一次扣减操作后即为负数,说明商品的真实库存不够,无法进行交易,生成第一预警信息并反馈至该交易请求对应的客户端,例如,“当前商品已卖完”。
进一步地,为了减少后续的秒杀请求对***性能的消耗,生成并保存预设库存标识(“无库存”/“库存为0”)至所述一级缓存中。
在该步骤中,通过在用户下单支付时校验令牌,过滤掉无效令牌的请求,防止绕开链路请求。
上述实施例提出的秒杀请求处理方法,通过对秒杀商品的库存进行库存散列,将散列后的库存保存至缓存服务器集群中的每一台缓存服务器上,利用网关服务器通过负载均衡将秒杀请求分配至应用服务器集群中的每台应用服务器,并将秒杀请求载入至相应的缓存服务器中,分散了秒杀请求,提升了***的响应能力;通过对秒杀请求进行资格验证,过滤掉无效请求,减缓了***核心服务的压力;构建一级缓存、二级缓存,服务器依次从二级缓存、一级缓存、数据库中获取相应信息,提高了秒杀请求处理效率。
本发明还提供一种应用服务器集群。参照图2所示,为本发明应用服务器集群1的应用环境示意图。
在本实施例中,应用服务器集群1中包含多台应用服务器2,所述应用服务器2接收网关服务器4分配的秒杀请求,其中,所述网关服务器用于接收用户通过客户端5发送的数据请求,例如秒杀请求,所述应用服务器2与缓存服务器集群3进行数据传输,例如,存储和读取,所述应用服务器2与客户端5进行数据传输,例如,接收用户输入的验证码,或者向客户端5反馈预警信息等。
其中,所述缓存服务器集群3中每台缓存服务器31作为一级缓存,所述应用服务器2的内存作为二级缓存。
参照图3所示,为图2中应用服务器2的较佳实施例的示意图。
在本实施例中,应用服务器2可以是机架式服务器、刀片式服务器、塔式服务器或机柜式服务器。
该应用服务器2包括存储器11、处理器12,通信总线13,及网络接口14。
其中,存储器11至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、磁性存储器、磁盘、光盘等。存储器11在一些实施例中可以是所述应用服务器2的内部存储单元,例如该应用服务器2的硬盘。存储器11在另一些实施例中也可以是所述应用服务器2的外部存储设备,例如该应用服务器2上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器11还可以既包括该应用服务器2的内部存储单元也包括外部存储设备。
存储器11不仅可以用于存储安装于该应用服务器2的应用软件及各类数据,例如秒杀请求处理程序10等,还可以用于暂时地存储已经输出或者将要输出的数据。
处理器12在一些实施例中可以是一中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器11中存储的程序代码或处理数据,例如秒杀请求处理程序10等。
通信总线13用于实现这些组件之间的连接通信。
网络接口14可选的可以包括标准的有线接口、无线接口(如WI-FI接口),通常用于在该应用服务器2与其他电子设备之间建立通信连接。
图3仅示出了具有组件11-14的应用服务器2,本领域技术人员可以理解的是,图3示出的结构并不构成对应用服务器2的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
可选地,该应用服务器2还可以包括用户接口,用户接口可以包括显示器(Display)、输入单元比如键盘(Keyboard),可选的用户接口还可以包括标准的有线接口、无线接口。
可选地,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及有机发光二极管(Organic Light-Emitting Diode,OLED)触摸器等。其中,显示器也可以称为显示屏或显示单元,用于显示在应用服务器2中处理的信息以及用于显示可视化的用户界面。
在图3所示的应用服务器2的实施例中,作为一种计算机存储介质的存储器11中存储秒杀请求处理程序10的程序代码,处理器12执行秒杀请求处理程序10的程序代码时,实现如下步骤:
A1、根据预设规则将秒杀商品的库存均匀分布至缓存服务器集群3中的多台缓存服务器31,并分别确定所述每台缓存服务器31对应的虚拟库存;
预先确定一个缓存服务器集群3,其中,该缓存服务器集群3中包含m台缓存服务器31,并且,将缓存服务器集群3作为一级缓存。
在进行秒杀活动之前,会预先确定秒杀活动中的秒杀商品及商品编号、库存、活动的场次等信息,上述信息保存在数据库(图中未标识)中。假设秒杀活动中包含1种商品,从数据库中读取该商品的实际库存为10000,按照用户编号后两位(00-99),将商品库存划分为100份,每份包含100个库存,根据hash算法,将这100份库存均匀分布至缓存服务器集群3中的m台缓存服务器31上。
需要说明的是,分布至缓存服务器集群3中的每一台缓存服务器31上的库存为实际库存,但实际上保存在每一台缓存服务器31上的库存为虚拟库存。一般请情况下,虚拟库存略大于实际库存,可根据运营商需求进行设置。然后,分别确定所述每台缓存服务器31对应的虚拟库存,并将虚拟库存信息保存至一级库存中。
假设秒杀活动中的商品i的库存为10000,那么,商品i在每台缓存服务器31中的键(key)分别定义为:itemstock:r:i:00~itemstock:r:i:99,其中,itemstock为资源前缀(库存),r为秒杀活动的场次编号,i为秒杀活动的商品编号,“00”-“99”为用户编号后两位,每个键对应的存储的值(value)为100。也就是说,秒杀活动中不同场次和/或不同商品,其对应的键都会不一样。
可以理解的是,缓存服务器集群3中缓存服务器31的数量决定了这个缓存服务器集群3的消化能力,如果单台缓存服务器31的吞吐量为2万TPS,那么m台缓存服务器的吞吐量即为2m万TPS,因此,在本实施例中,m的取值需通过预估秒杀活动中的并发量来确定。
A2、接收网关服务器4通过均衡负载分配的秒杀请求,其中,网关服务器4到达预设时刻时,接收用户通过客户端5提交的多条秒杀请求;
其中,所述预设时刻为秒杀活动开始的时刻。秒杀活动开始时,网关服务器4接收用户通过客户端5提交的秒杀请求,秒杀请求中包含:用户编号、商品信息、优惠信息等。可以理解的是,秒杀开始的时刻,会同时接收到大量秒杀请求,例如,10000条秒杀请求,需将这10000条秒杀请求分配至应用服务器集群1中的每台应用服务器2进行处理。
在本实施例中,网关服务器4根据DNS轮询机制,将10000条秒杀请求分别分配至每一台应用服务器2。其中,网关服务器4/网关服务器4应用的是F5物理机。假设四台应用服务器2组成应用服务器集群1,IP地址分别为172.28.20.1、172.28.20.2、172.28.20.3、172.28.20.4,当用户请求访问时,网关服务器4将循环调度IP地址的次序,将按172.28.20.1、172.28.20.2、172.28.20.3和172.28.20.4的顺序应答第一个用户的秒杀请求,下一个用户的秒杀请求将用旋转后的172.28.20.2、172.28.20.3、172.28.20.4和172.20.20.1这样的顺序应答,旋转过程将持续下去,成功实现DNS负载均衡。
应用服务器2接收网关服务器4分配的秒杀请求之后,根据秒杀请求中携带的用户编号信息,将秒杀请求载入与用户编号信息对应的缓存服务器中。例如,秒杀请求中携带的用户编号信息中的后两位为“52”,确定缓存服务器集群3中库存的键信息中用户编号后两位为“52”的缓存服务器31,将该秒杀请求载入该缓存服务器31中,供后续获取该缓存服务器31上的虚拟库存信息。
上述步骤将秒杀请求通过负载均衡分布至应用服务器集群1中的每台应用服务器2上,并利用缓存服务器集群3,将并发的数秒杀请求有效地引导在缓存服务器集群3中的不同缓存服务器31上,避免单独的服务器并发能力有限的问题,实现分散秒杀请求的效果,提升***的响应能力。
A3、读取每条秒杀请求的具体信息,根据预设的验证规则,对所述每条秒杀请求进行资格验证;
可以理解的是,为了减少应用服务器集群1性能的消耗,当商品的实际库存为“0”时,接收到用户发送的秒杀请求,直接返回已卖完的信息。具体地,该步骤包括:
判断预设二级缓存中是否存在预设库存标识;
当所述二级缓存中存在所述预设库存标识时,生成第一预警信息;
当所述二级缓存中不存在所述预设库存标识时,判断所述一级缓存中是否存在所述预设库存标识;
当所述一级缓存中存在所述预设库存标识时,生成第一预警信息,并将该预设库存标识保存至所述二级缓存中;
当所述一级缓存中不存在所述预设库存标识时,将所述多个秒杀请求通过负载均衡分摊到所述应用服务器集群1中的多台应用服务器2。
其中,预设二级缓存为应用服务器集群1中每台应用服务器2的内存,预设库存标识为“无库存”/“库存为0”。依次按照二级缓存、一级缓存的顺序读取“无库存”/“库存为0”的库存标识,当二级缓存/一级缓存中存在“无库存”/“库存为0”的库存标识时,说明商品已经卖完了,生成第一预警信息并反馈至该秒杀请求对应的客户端5,例如,“您抢购的商品已卖完”。
需要说明的是,当二级缓存中不存在“无库存”/“库存为0”的库存标识、且一级缓存中存在“无库存”/“库存为0”的库存标识时,生成第一预警信息的同时,还将该库存标识放置至二级缓存中,便于下次接收秒杀请求时直接从二级缓存中读取“无库存”/“库存为0”的库存标识,释放无效请求,减缓***压力,同时,有效避免了商品超卖现象。
需要说明的是,二级缓存中保存的数据的时效比一级缓存中保存的数据的时效短。但应用服务器2从二级缓存读取数据的速度远大于从一级缓存中读取的速度。因此,将一级缓存中存储的“无库存”/“库存为0”的库存标识保存在二级缓存中,可提高后续读取“无库存”/“库存为0”的库存标识的速度,更快地释放无效请求,提高***的稳定性。
当一级缓存、二级缓存中均不存在“无库存”/“库存为0”的库存标识,表示商品还没有被抢完,初步说明接收到的秒杀请求有效,还需要通过用户资格验证过滤掉部分无效请求,仅对有效请求进行处理。
需要说明的是,在运营激活秒杀活动时,从预设的验证码库中读取预设数量(例如,10000条)的验证数据保存至二级缓存中,应用服务器集群1中的不同应用服务器2对应的二级缓存中的验证数据不一定相同。每一条验证数据包括验证问题及预设答案。
以应用服务器集群1中的应用服务器A为例,接收到网关服务器4分配的秒杀请求后,当商品还没被抢完时,应用服务器A从二级缓存中随机调取一条验证数据,将该验证数据的验证问题发送至与该秒杀请求对应的客户端5,同时,根据该秒杀请求中的资源前缀、商品编号、场次编号、用户编号生成键,根据键的参数将该条验证数据的预设答案保存至一级缓存中。
接收到用户通过客户端5输入的答案数据后,根据键的参数从一级缓存中获取预设答案,并与答案数据进行对比:当答数据案与预设答案不一致时,生成第二预警信息并反馈至该秒杀请求对应的客户端5,例如“验证码错误”。然后,重新读取一条验证数据并执行验证码校验步骤。
该步骤的目的在于,通过引入验证码库中的验证数据,在不增加人为识别的识别率的基础上,进一步的增加机器识别的难度,有效的阻挡机器请求对***的压力。
在通过验证码校验之后,获取上述根据秒杀请求中的资源前缀、商品编号、场次编号、用户编号生成的键作为用户资格信息,对用户资格信息进行判定。具体地,从一级缓存中查询该用户资格信息,如果一级缓存中不存在该用户资格信息,则认为当前用户没有参加过该商品、该场次的秒杀活动,也就是说当前用户具备参与参与资格,同时,将本次请求判定的该用户资格信息保存至一级缓存中。当所述一级缓存中存在该用户资格信息时,说明当前用户参加过该商品、该场次的秒杀活动,生成第三预警信息并反馈至该秒杀请求对应的客户端5,例如“不能次重复秒杀该商品,不具备秒杀资格”。
可以理解的是,为了防止单个用户超额抢购秒杀商品,为保存在一级缓存中的用户资格信息设置预设时间间隔(该预设时间间隔与用户支付的有效时间一致,例如,15分钟)的有效时间,有效时间远大于秒杀活动中商品被抢购完的时间,那么,用户想再抢购秒杀商品时,无法通过用户资格验证。另外,如果用户资格验证通过且后续验证均通过后,用户选择不支付或者在预设时间间隔内未支付,那么订单***会在预设时间间隔之后关单,同时从一级缓存中释放掉该用户资格信息对应的参与记录。也就是说,用户在15分钟之后依然可以再次参加这个商品的秒杀,前提是这个商品还有库存。
上述步骤通过对用户资格进行验证,进一步过滤掉了无效请求,解决了单用户刷单的问题,减缓了***压力。
A4、当所述秒杀请求的资格验证通过时,对与该秒杀请求对应的缓存服务器的虚拟库存进行扣减,并根据用户资格信息生成与该秒杀请求对应的预设令牌信息,将该预设令牌信息保存至预设一级缓存中;
当该秒杀请求对应的用户具备秒杀资格时,根据用户编号的后两位获取该秒杀请求对应的缓存服务器31上的虚拟库存,对虚拟库存进行一次扣减操作。然后,根据上述用户资格信息,生成与该用户资格信息对应的预设令牌信息,例如,根据该秒杀请求中包含的秒杀活动编号a,秒杀活动的场次编号r,秒杀活动的商品编号i,用户编号u,生成的令牌即token为:a:r:i:u,然后将该预设令牌信息保存至一级缓存中。
可以理解的是,与用户资格相似的是,如果用户最终选择不支付或者在预设时间间隔内未支付,那么订单***会在预设时间间隔之后关单,同时,也需要从一级缓存中释放掉该秒杀请求对应的预设令牌信息。因此,也需要给预设令牌时间设置一个预设时间间隔的有效时间,例如,15分钟。
需要说明的是,当虚拟库存不为零时,才会发放令牌,实现放行获得去参与扣减真实库存的资格控制。当虚拟库存为零时,对虚拟库存进行一次扣减操作后即为负数,由于虚拟库存大于真实库存,当虚库库存不够时,说明商品的真实库存也不够,令牌发放失败,生成第一预警信息并反馈至该秒杀请求对应的客户端5,例如,“当前商品已卖完”。
进一步地,为了减少后续的秒杀请求对***性能的消耗,生成并保存预设库存标识(“无库存”/“库存为0”)至所述一级缓存中。
A5、接收用户针对通过资格验证的秒杀请求提交的交易请求,根据所述交易请求生成实时令牌信息,对所述实时令牌信息进行校验,当所述实时令牌信息校验通过时,对数据库中的真实库存进行扣减,秒杀成功。
用户通过资格验证之后的预设时间内,可进行后续的付款操作。接收用户基于秒杀请求提交的交易请求,交易请求中包含:秒杀活动编号a,秒杀活动的场次编号r,秒杀活动的商品编号i,用户编号u等信息,根据交易请求中包含的信息及预设的令牌生成规则,生成该交易请求的实时令牌信息。
具体地,从所述一级缓存中获取该秒杀请求对应的预设令牌信息,一级缓存中不存在所述预设令牌信息时,说明该预设令牌信息已被释放,即超出了付款的有效时限。当实施令牌信息与预设令牌信息一致时,说明当前交易请求对应地秒杀请求通过了上述用户资格验证,为有效请求。
该步骤的目的在于,链路下游请求的时候根据请求中包含的参数拼装出组合一致的键来获取用户下单的时候需要的令牌,以来防止绕过***验证,直接请求到核心链路。
令牌校验成功后,需对商品的真实库存进行扣减,当数据库中商品的真实库存不为零时,真实库存扣减成功则秒杀成功,交易才会成功,至此,交易完成,当真实库存因某种原因扣减失败时,预设令牌信息会失效,在预设时间间隔(例如,15分钟)后,用户将重新具备秒杀资格。
需要说明的是,当商品的真实库存为零时,对真实库存进行一次扣减操作后即为负数,说明商品的真实库存不够,无法进行交易,生成第一预警信息并反馈至该交易请求对应的客户端5,例如,“当前商品已卖完”。
进一步地,为了减少后续的秒杀请求对***性能的消耗,生成并保存预设库存标识(“无库存”/“库存为0”)至所述一级缓存中。
在该步骤中,通过在用户下单支付时校验令牌,过滤掉无效令牌的请求,防止绕开链路请求。
上述实施例提出的应用服务器集群1中的应用服务器2,通过对秒杀商品的库存进行库存散列,将散列后的库存保存至缓存服务器集群中的每一台缓存服务器上,利用网关服务器通过负载均衡将秒杀请求分配至应用服务器集群中的每台应用服务器,并将秒杀请求载入至相应的缓存服务器中,分散了秒杀请求,提升了***的响应能力;通过对秒杀请求进行资格验证,过滤掉无效请求,减缓了***核心服务的压力;构建一级缓存、二级缓存,服务器依次从二级缓存、一级缓存、数据库中获取相应信息,提高了秒杀请求处理效率。
可选地,在其他的实施例中,秒杀请求处理程序10还可以被分割为一个或者多个模块,一个或者多个模块被存储于存储器11中,并由一个或多个处理器(本实施例为处理器12)所执行,以完成本发明,本发明所称的模块是指能够完成特定功能的一系列计算机程序指令段。例如,参照图4所示,为图3中秒杀请求处理程序10的模块示意图,该实施例中,秒杀请求处理程序10可以被分割为库存散列模块110、请求分配模块120、资格验证模块130、令牌发放模块140及令牌校验模块150,所述模块110-150所实现的功能或操作步骤均与上文类似,此处不再详述,示例性地,例如其中:
库存散列模块110,用于根据预设规则将秒杀商品的库存均匀分布至缓存服务器集群中的多台缓存服务器,并分别确定每台缓存服务器对应的虚拟库存;
请求分配模块120,用于接收网关服务器通过均衡负载分配的秒杀请求,其中,网关服务器到达预设时刻时,接收用户通过客户端提交的多条秒杀请求;
资格验证模块130,用于读取每条秒杀请求的具体信息,根据预设的验证规则,对所述每条秒杀请求进行资格验证;
令牌发放模块140,用于当所述秒杀请求的资格验证通过时,对与该秒杀请求对应的缓存服务器的虚拟库存进行扣减,并根据用户资格信息生成与该秒杀请求对应的预设令牌信息,将该预设令牌信息保存至预设一级缓存中;及
令牌校验模块150,用于接收用户针对通过资格验证的秒杀请求提交的交易请求,根据所述交易请求生成实时令牌信息,对所述实时令牌信息进行校验,当所述实时令牌信息校验通过时,对数据库中的真实库存进行扣减,秒杀成功。
此外,本发明实施例还提出一种计算机可读存储介质,所述计算机可读存储介质中包括秒杀请求处理程序10,所述秒杀请求处理程序10被处理器执行时实现如下操作:
A1、根据预设规则将秒杀商品的库存均匀分布至缓存服务器集群中的多台缓存服务器,并分别确定每台缓存服务器对应的虚拟库存;
A2、接收网关服务器通过均衡负载分配的秒杀请求,其中,网关服务器到达预设时刻时,接收用户通过客户端提交的多条秒杀请求器;
A3、读取每条秒杀请求的具体信息,根据预设的验证规则,对所述每条秒杀请求进行资格验证;
A4、当所述秒杀请求的资格验证通过时,对与该秒杀请求对应的缓存服务器的虚拟库存进行扣减,并根据用户资格信息生成与该秒杀请求对应的预设令牌信息,将该预设令牌信息保存至预设一级缓存中;及
A5、接收用户针对通过资格验证的秒杀请求提交的交易请求,根据所述交易请求生成实时令牌信息,对所述实时令牌信息进行校验,当所述实时令牌信息校验通过时,对数据库中的真实库存进行扣减,秒杀成功。
本发明之计算机可读存储介质的具体实施方式与上述秒杀请求处理方法的具体实施方式大致相同,在此不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (9)
1.一种秒杀请求处理方法,应用于应用服务器集群,其特征在于,该方法包括:
S1、预先确定一个缓存服务器集群作为一级缓存,根据预设规则将秒杀商品的库存均匀分布至所述缓存服务器集群中的多台缓存服务器,并分别确定每台缓存服务器对应的虚拟库存;
S2、接收网关服务器通过均衡负载分配的秒杀请求,其中,网关服务器到达预设时刻时,接收用户通过客户端提交的多条秒杀请求;
S3、读取每条秒杀请求的具体信息,根据预设的验证规则,对所述每条秒杀请求进行资格验证;
S4、当所述秒杀请求的资格验证通过时,对与该秒杀请求对应的缓存服务器的虚拟库存进行扣减,并根据用户资格信息生成与该秒杀请求对应的预设令牌信息,将该预设令牌信息保存至所述一级缓存中;及
S5、接收用户针对通过资格验证的秒杀请求提交的交易请求,根据所述交易请求生成实时令牌信息,对所述实时令牌信息进行校验,当所述实时令牌信息校验通过时,对数据库中的真实库存进行扣减,秒杀成功;
其中,所述对所述实时令牌信息进行校验的步骤包括:判断所述一级缓存中是否存在该秒杀请求对应的预设令牌信息,当所述一级缓存中不存在所述预设令牌信息时,判定所述实时令牌信息无效;当所述一级缓存中存在所述预设令牌信息时,判断所述实时令牌信息是否与所述预设令牌信息一致,若不一致,判定所述实时令牌信息无效,提示令牌校验失败,或者,若一致,判定所述实时令牌信息有效,提示令牌校验成功。
2.如权利要求1所述的秒杀请求处理方法,其特征在于,该方法包括:
当所述秒杀请求资格验证失败时,提示资格验证失败;及
当所述实时令牌信息校验失败时,提示令牌校验失败。
3.如权利要求2所述的秒杀请求处理方法,其特征在于,所述应用服务器集群中每台服务器的内存作为二级缓存,在步骤S3之前,该方法还包括:
判断所述二级缓存中是否存在预设库存标识,所述预设库存标识为“无库存”/“库存为0”;
当所述二级缓存中存在所述预设库存标识时,生成第一预警信息;
当所述二级缓存中不存在所述预设库存标识时,判断所述一级缓存中是否存在所述预设库存标识;
当所述一级缓存中存在所述预设库存标识时,生成第一预警信息,并将该预设库存标识保存至所述二级缓存中;或者
当所述一级缓存中不存在所述预设库存标识时,将所述多条秒杀请求通过负载均衡分摊到所述应用服务器集群中的多台服务器。
4.如权利要求1至3中任意一项所述的秒杀请求处理方法,其特征在于,所述S4还包括:
当所述虚拟库存为零时,生成第一预警信息,生成并保存“无库存”/“库存为0”的预设库存标识至所述一级缓存中。
5.如权利要求4所述的秒杀请求处理方法,其特征在于,所述S5还包括:
当所述真实库存为零时,生成第一预警信息,生成并保存所述预设库存标识至所述一级缓存中。
6.如权利要求3所述的秒杀请求处理方法,其特征在于,所述“根据预设的验证规则,对所述每条秒杀请求进行资格验证”的步骤包括:
从所述二级缓存中随机读取一条验证数据,包括验证问题及预设答案,将所述验证问题发送至所述秒杀请求对应的客户端,并接收用户输入的答案数据,将所述答案数据与所述预设答案进行比对;
当所述答案数据与所述预设答案不一致时,生成第二预警信息,返回执行上一步骤;或者
当所述答案数据与所述预设答案一致时,根据所述秒杀请求生成用户资格信息,并从所述一级缓存中查询该用户资格信息,当所述一级缓存中不存在该用户资格信息时,用户资格校验成功,将所述用户资格信息保存至一级缓存中,或者,当所述一级缓存中存在该用户资格信息时,生成第三预警信息。
7.一种应用服务器集群,其特征在于,该应用服务器集群包括多台应用服务器,所述服务器包括:存储器、处理器,所述存储器上存储有可在所述处理器上运行的秒杀请求处理程序,所述秒杀请求处理程序被所述处理器执行时,可实现如下步骤:
A1、预先确定一个缓存服务器集群作为一级缓存,根据预设规则将秒杀商品的库存均匀分布至所述缓存服务器集群中的多台缓存服务器,并分别确定每台缓存服务器对应的虚拟库存;
A2、接收网关服务器通过均衡负载分配的秒杀请求,其中,网关服务器到达预设时刻时,接收用户通过客户端提交的多条秒杀请求;
A3、读取每条秒杀请求的具体信息,根据预设的验证规则,对所述每条秒杀请求进行资格验证;
A4、当所述秒杀请求的资格验证通过时,对与该秒杀请求对应的缓存服务器的虚拟库存进行扣减,并根据用户资格信息生成与该秒杀请求对应的预设令牌信息,将该预设令牌信息保存至所述一级缓存中;及
A5、接收用户针对通过资格验证的秒杀请求提交的交易请求,根据所述交易请求生成实时令牌信息,对所述实时令牌信息进行校验,当所述实时令牌信息校验通过时,对数据库中的真实库存进行扣减,秒杀成功;
其中,所述对所述实时令牌信息进行校验的步骤包括:判断所述一级缓存中是否存在该秒杀请求对应的预设令牌信息,当所述一级缓存中不存在所述预设令牌信息时,判定所述实时令牌信息无效;当所述一级缓存中存在所述预设令牌信息时,判断所述实时令牌信息是否与所述预设令牌信息一致,若不一致,判定所述实时令牌信息无效,提示令牌校验失败,或者,若一致,判定所述实时令牌信息有效,提示令牌校验成功。
8.根据权利要求7所述的应用服务器集群,其特征在于,所述秒杀请求处理程序被所述处理器执行时,还可实现以下步骤:
当所述秒杀请求资格验证失败时,提示资格验证失败;及
当所述实时令牌信息校验失败时,提示令牌校验失败。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中包括秒杀请求处理程序,所述秒杀请求处理程序被处理器执行时,可实现如权利要求1至6中任意一项所述的秒杀请求处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810547915.2A CN108897615B (zh) | 2018-05-31 | 2018-05-31 | 秒杀请求处理方法、应用服务器集群及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810547915.2A CN108897615B (zh) | 2018-05-31 | 2018-05-31 | 秒杀请求处理方法、应用服务器集群及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108897615A CN108897615A (zh) | 2018-11-27 |
CN108897615B true CN108897615B (zh) | 2023-06-13 |
Family
ID=64343425
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810547915.2A Active CN108897615B (zh) | 2018-05-31 | 2018-05-31 | 秒杀请求处理方法、应用服务器集群及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108897615B (zh) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111435346B (zh) * | 2019-01-14 | 2023-12-19 | 阿里巴巴集团控股有限公司 | 离线数据的处理方法、装置及设备 |
CN111752957B (zh) * | 2019-03-28 | 2022-11-11 | 苏宁易购集团股份有限公司 | 一种基于缓存化的销售锁定方法及*** |
CN110245153A (zh) * | 2019-05-20 | 2019-09-17 | 平安银行股份有限公司 | 产品数据处理方法、***、计算机设备和存储介质 |
CN111091405B (zh) * | 2019-09-12 | 2023-08-08 | 达疆网络科技(上海)有限公司 | 一种解决秒杀促销高并发的实现方案 |
CN110909978A (zh) * | 2019-10-15 | 2020-03-24 | 京东数字科技控股有限公司 | 资源处理方法、装置、服务器及计算机可读存储介质 |
CN111260272A (zh) * | 2019-12-02 | 2020-06-09 | 泰康保险集团股份有限公司 | 基于库存响应用户请求的方法、装置、设备及存储介质 |
CN113537852A (zh) * | 2020-04-14 | 2021-10-22 | 成都鼎桥通信技术有限公司 | 秒杀处理方法及*** |
CN111506445A (zh) * | 2020-04-21 | 2020-08-07 | 北京思特奇信息技术股份有限公司 | 一种基于redis缓存的防止商品重复恶意订购方法及*** |
CN111782391A (zh) * | 2020-06-29 | 2020-10-16 | 北京达佳互联信息技术有限公司 | 资源分配方法、装置、电子设备和存储介质 |
CN111930786B (zh) * | 2020-08-14 | 2023-09-26 | 中国工商银行股份有限公司 | 资源获取请求处理***、方法及装置 |
CN112132662B (zh) * | 2020-09-28 | 2023-06-20 | 广州立白企业集团有限公司 | 一种商品秒杀方法、装置、计算机设备及存储介质 |
CN112153158B (zh) * | 2020-09-29 | 2022-10-18 | 中国银行股份有限公司 | 一种信息处理方法及装置 |
CN112184326A (zh) * | 2020-10-14 | 2021-01-05 | 深圳市欢太科技有限公司 | 处理高并发秒杀活动的方法、高并发***、终端及计算机可读存储介质 |
CN114520808A (zh) * | 2020-11-19 | 2022-05-20 | 南京亚信软件有限公司 | 请求处理方法、装置、电子设备及计算机可读存储介质 |
CN113762857A (zh) * | 2020-11-24 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 一种库存扣减方法、装置、设备及存储介质 |
CN112511316B (zh) * | 2020-12-08 | 2023-04-07 | 深圳依时货拉拉科技有限公司 | 单点登录接入方法、装置、计算机设备及可读存储介质 |
CN112669058A (zh) * | 2020-12-21 | 2021-04-16 | 上海多维度网络科技股份有限公司 | 应用程序的数据处理方法以及装置、存储介质、电子装置 |
CN113315825A (zh) * | 2021-05-24 | 2021-08-27 | 康键信息技术(深圳)有限公司 | 分布式请求的处理方法、装置、设备及存储介质 |
CN113435931B (zh) * | 2021-06-29 | 2024-06-11 | 广州喜淘信息科技有限公司 | 业务数据处理方法、装置、计算机设备及存储介质 |
CN114445200B (zh) * | 2022-04-08 | 2022-07-26 | 中国光大银行股份有限公司 | 秒杀活动处理方法及装置 |
CN115826875B (zh) * | 2023-01-05 | 2023-04-28 | 摩尔线程智能科技(北京)有限责任公司 | 缓存数据无效化验证方法、装置及*** |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150213443A1 (en) * | 2014-01-30 | 2015-07-30 | Apple Inc. | Tokenizing authorizations |
CN106331772A (zh) * | 2015-06-17 | 2017-01-11 | 阿里巴巴集团控股有限公司 | 数据校验方法、装置和智能电视*** |
CN106997546A (zh) * | 2016-01-26 | 2017-08-01 | ***通信集团安徽有限公司 | 一种订单处理方法及装置 |
CN106060130A (zh) * | 2016-05-25 | 2016-10-26 | 乐视控股(北京)有限公司 | 商品库存的校验方法及校验*** |
CN106170016A (zh) * | 2016-07-28 | 2016-11-30 | 深圳市创梦天地科技有限公司 | 一种处理高并发数据请求的方法和*** |
CN107220878A (zh) * | 2017-05-26 | 2017-09-29 | 努比亚技术有限公司 | 业务处理***、秒杀订单处理方法和设备 |
-
2018
- 2018-05-31 CN CN201810547915.2A patent/CN108897615B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN108897615A (zh) | 2018-11-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108897615B (zh) | 秒杀请求处理方法、应用服务器集群及存储介质 | |
CN105096172B (zh) | 基于电子商务平台的电子***的生成和处理方法及*** | |
US10091230B1 (en) | Aggregating identity data from multiple sources for user controlled distribution to trusted risk engines | |
US10621326B2 (en) | Identity authentication method, server, and storage medium | |
CN108111554B (zh) | 一种访问队列的控制方法及装置 | |
CN110851298B (zh) | 异常分析及处理方法、电子装置及存储介质 | |
CN108112038B (zh) | 一种控制访问流量的方法及装置 | |
US9866587B2 (en) | Identifying suspicious activity in a load test | |
US20160337399A1 (en) | Communications security | |
CN113342498A (zh) | 并发请求处理方法、装置、服务器及存储介质 | |
CN111930786A (zh) | 资源获取请求处理***、方法及装置 | |
KR20130135143A (ko) | 시리즈 데이터의 보호장치 | |
CN114116802A (zh) | Flink计算框架的数据处理方法、装置、设备和存储介质 | |
CN109525552B (zh) | 动态码同步进程扩容方法、动态码生成器及存储介质 | |
CN110930161A (zh) | 业务操作的操作时间的确定方法和自助业务操作设备 | |
US20210165907A1 (en) | Systems and methods for intelligent and quick masking | |
JP2020518067A (ja) | 消費者が複数の発行者サイトにて同じペイメントカードを同じオファーにリンクすることを可能にするカードリンクトオファーネットワークを提供するためのシステム、方法、及びコンピュータプログラム | |
CN114157482A (zh) | 一种业务访问控制方法、装置、控制设备及存储介质 | |
CN114240436A (zh) | 电子凭证核销方法、装置、计算机设备和存储介质 | |
CA2960914A1 (en) | Method for detecting a risk of substitution of a terminal, corresponding device, program and recording medium | |
JP6659229B2 (ja) | Posシステム、情報処理方法、及びプログラム | |
CN117171235B (zh) | 基于工业标识的数据解析方法及相关设备 | |
CN111818107B (zh) | 网络请求的响应方法、装置、设备及可读存储介质 | |
US11657387B2 (en) | Method for securing a computer system | |
US20220382775A1 (en) | Employee compensation manager |
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 |