基于Redis与Kafka的线上抢购系统高并发场景处理方法及装置制造方法及图纸

技术编号:18723816 阅读:39 留言:0更新日期:2018-08-22 00:51
本发明专利技术提供了一种基于Redis与Kafka的线上抢购系统高并发场景处理方法及装置,方法包括:基于用户登录请求生成登录令牌,将登录令牌写入前端Cookie和后端Redis缓存中,校验前端登录令牌与后端登录令牌是否匹配,若否,则返回操作失败结果,若是,则:判断用户登录令牌是否有效,若否,则返回操作失败结果,若是,则:判断是否获取到对应商品的商品锁,若否,则返回操作失败结果,若是,则:将抢购成功的请求数据推送给Kafka消息队列。本发明专利技术通过限流削峰处理,有效降低了服务器和数据库的负载压力,能够在短时间内承受大量的并发请求,极大地增加了集群的吞吐量;并通过对用户访问次数的前后端校验,能够快速找出作弊用户,保证了活动稳定、公平地进行。

High concurrent scenario processing method and device based on Redis and Kafka for online snapping up system

The present invention provides a high concurrency scene processing method and device for on-line snap-up system based on Redis and Kafka. The method includes generating a login token based on user login request, writing the login token into the front-end cookie and back-end Redis cache, verifying whether the front-end login token matches the back-end login token, and returning if not. If it fails, then it determines whether the user's login token is valid, if it is, it returns the result of the operation failure, if it is, it determines whether the commodity lock of the corresponding commodity is obtained, if not, it returns the result of the operation failure, if it is, it pushes the request data of the successful snap-up to the Kafka message queue. The invention effectively reduces the load pressure of servers and databases through current limiting and peak shaving processing, and can withstand a large number of concurrent requests in a short time, thus greatly increasing the throughput of the cluster; and through the front-end and back-end checking of the number of user visits, the cheating users can be quickly identified, thus ensuring the stability and fairness of the activities. Conduct.

【技术实现步骤摘要】
基于Redis与Kafka的线上抢购系统高并发场景处理方法及装置
本专利技术属于高并发场景处理
,尤其涉及一种基于Redis与Kafka的线上抢购系统高并发场景处理方法及装置。
技术介绍
随着互联网的普及,越来越多的用户选择利用网络购买商品、参与购房和摇号。商家为了吸引用户,经常会举办秒杀、限时抢购等优惠活动,即在有限时间里提供限量的优惠商品,由于价格低廉,往往一秒钟就被抢购一空。由于这种僧多粥少的情况,大量用户在活动开始前后频繁访问服务器,流量会比平时激增几倍甚至几十倍,给服务器带来巨大的压力,超过一定压力容量之后甚至会造成数据不能正常保存、服务无法响应的情况。并且由于有利可图,往往会有用户花高价向工作室购买作弊工具,在短时间内用作弊工具大量访问服务器,不仅破坏了活动的公平性,也给服务器带来更大的负载压力。目前,大多数站点使用验证码来阻止用户作弊。但对于有经验的工作室来说,验证码可以用提前访问、图形识别等多种手段破解,只能增加普通用户的成本,而让作弊者得利。因此,如何有效的对高并发场景的海量请求进行处理是一项亟待解决的问题。
技术实现思路
有鉴于此,本专利技术提供了一种基于Redis与Kafka的线上抢购系统高并发场景处理方法,从前端开始对各层级模块进行限流处理,限制单个用户的请求频率,使用持久化缓存技术,利用Kafka消息队列对模块异步解耦,将请求的逻辑判断与数据的写操作分离,解决了现有技术中数据库负载过重的问题,并有利于请求的快速响应和反馈;同时通过前后端数据校验的方法来代替旧有的验证码机制,使得用户作弊的成本大大增加,有效地阻止了用户作弊行为。为了实现上述目的,本专利技术提供如下技术方案:一种基于Redis与Kafka的线上抢购系统高并发场景处理方法,包括:基于用户登录请求生成登录令牌;将所述登录令牌写入前端Cookie和后端Redis缓存中;校验前端登录令牌与后端登录令牌是否匹配,若否,则返回操作失败结果,若是,则:判断所述用户登录令牌是否有效,若否,则返回操作失败结果,若是,则:判断是否获取到对应商品的商品锁,若否,则返回操作失败结果,若是,则:将抢购成功的请求数据推送给Kafka消息队列。优选地,所述基于用户登录请求生成登录令牌包括:记录所述用户登录的时间戳;将所述时间戳与所述用户ID拼接字符串;通过Hash运算生成所述令牌。优选地,所述将抢购成功的请求数据推送给Kafka消息队列后,还包括:消费所述Kafka消息队列中的记录,将所述抢购成功的请求数据写入数据库;发送通知短信给用户;通过WebSocket传递成交记录给前端前台。优选地,所述将所述登录令牌写入前端Cookie和后端Redis缓存中后,还包括:记录所述用户的访问次数;判断基于所述访问次数做Hash生成的防作弊校验码是否合法,若否,则:返回操作失败结果。优选地,所述方法还包括:获取用户频率锁;基于所述频率锁判断所述用户的访问频率是否超过预设阈值,若是,则:返回操作失败结果。一种基于Redis与Kafka的线上抢购系统高并发场景处理装置,包括:生成模块,用于基于用户登录请求生成登录令牌;第一写入模块,用于将所述登录令牌写入前端Cookie和后端Redis缓存中;校验模块,用于校验前端登录令牌与后端登录令牌是否匹配;返回模块,用于当前端登录令牌与后端登录令牌不匹配时,返回操作失败结果;第一判断模块,用于当前端登录令牌与后端登录令牌匹配时,判断所述用户登录令牌是否有效;所述返回模块,还用于当所述用户登录令牌无效时,返回操作失败结果;第二判断模块,用于当所述用户登录令牌有效时,判断是否获取到对应商品的商品锁;所述返回模块,还用于当未获取到对应商品的商品锁时,返回操作失败结果;推送模块,用于当获取到对应商品的商品锁时,将抢购成功的请求数据推送给Kafka消息队列。优选地,所述生成模块具体用于:记录所述用户登录的时间戳;将所述时间戳与所述用户ID拼接字符串;通过Hash运算生成所述令牌。优选地,所述装置还包括:第二写入模块,用于消费所述Kafka消息队列中的记录,将所述抢购成功的请求数据写入数据库;发送模块,用于发送通知短信给用户;传递模块,用于通过WebSocket传递成交记录给前端前台。优选地,所述装置还包括:记录模块,用于记录所述用户的访问次数;第三判断模块,用于判断基于所述访问次数做Hash生成的防作弊校验码是否合法;所述返回模块,还用于当基于所述访问次数做Hash生成的防作弊校验码不合法时,返回操作失败结果。优选地,所述装置还包括:获取模块,用于获取用户频率锁;第四判断模块,用于基于所述频率锁判断所述用户的访问频率是否超过预设阈值;所述返回模块,还用于当基于所述频率锁判断所述用户的访问频率超过预设阈值时,返回操作失败结果。从上述技术方案可以看出,本专利技术提供了一种基于Redis与Kafka的线上抢购系统高并发场景处理方法,当需要对高并发场景的海量请求进行处理时,首先基于用户登录请求生成登录令牌,然后将登录令牌写入前端Cookie和后端Redis缓存中,校验前端登录令牌与后端登录令牌是否匹配,若否,则返回登录失败结果,若是,则:判断用户登录令牌是否有效,若否,则返回操作失败结果,若是,则:判断是否获取到对应商品的商品锁,若否,则返回操作失败结果,若是,则:将抢购成功的请求数据推送给Kafka消息队列。从前端开始对各层级模块进行限流处理,限制单个用户的请求频率,使用持久化缓存技术,利用Kafka消息队列对模块异步解耦,将请求的逻辑判断与数据的写操作分离,解决了现有技术中数据库负载过重的问题,并有利于请求的快速响应和反馈;同时通过前后端数据校验的方法来代替旧有的验证码机制,使得用户作弊的成本大大增加,有效地阻止了用户作弊行为。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术公开的一种基于Redis与Kafka的线上抢购系统高并发场景处理方法实施例1的方法流程图;图2为本专利技术公开的一种基于Redis与Kafka的线上抢购系统高并发场景处理方法实施例2的方法流程图;图3为本专利技术公开的一种基于Redis与Kafka的线上抢购系统高并发场景处理装置实施例1的结构示意图;图4为本专利技术公开的一种基于Redis与Kafka的线上抢购系统高并发场景处理装置实施例2的结构示意图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。如图1所示,为本专利技术公开的一种基于Redis与Kafka的线上抢购系统高并发场景处理方法实施例1的流程图,所述方法包括:S101、基于用户登录请求生成登录令牌;当在线上抢购系统中需要对高并发场景的海量请求进行处理时,首先根据用户对线上抢购系统的登录请求生成相应的登录令牌。S102、将登本文档来自技高网...

【技术保护点】
1.一种基于Redis与Kafka的线上抢购系统高并发场景处理方法,其特征在于,包括:基于用户登录请求生成登录令牌;将所述登录令牌写入前端Cookie和后端Redis缓存中;校验前端登录令牌与后端登录令牌是否匹配,若否,则返回操作失败结果,若是,则:判断所述用户登录令牌是否有效,若否,则返回操作失败结果,若是,则:判断是否获取到对应商品的商品锁,若否,则返回操作失败结果,若是,则:将抢购成功的请求数据推送给Kafka消息队列。

【技术特征摘要】
1.一种基于Redis与Kafka的线上抢购系统高并发场景处理方法,其特征在于,包括:基于用户登录请求生成登录令牌;将所述登录令牌写入前端Cookie和后端Redis缓存中;校验前端登录令牌与后端登录令牌是否匹配,若否,则返回操作失败结果,若是,则:判断所述用户登录令牌是否有效,若否,则返回操作失败结果,若是,则:判断是否获取到对应商品的商品锁,若否,则返回操作失败结果,若是,则:将抢购成功的请求数据推送给Kafka消息队列。2.根据权利要求1所述的方法,其特征在于,所述基于用户登录请求生成登录令牌包括:记录所述用户登录的时间戳;将所述时间戳与所述用户ID拼接字符串;通过Hash运算生成所述令牌。3.根据权利要求1所述的方法,其特征在于,所述将抢购成功的请求数据推送给Kafka消息队列后,还包括:消费所述Kafka消息队列中的记录,将所述抢购成功的请求数据写入数据库;发送通知短信给用户;通过WebSocket传递成交记录给前端前台。4.根据权利要求1所述的方法,其特征在于,所述将所述登录令牌写入前端Cookie和后端Redis缓存中后,还包括:记录所述用户的访问次数;判断基于所述访问次数做Hash生成的防作弊校验码是否合法,若否,则:返回操作失败结果。5.根据权利要求1所述的方法,其特征在于,还包括:获取用户频率锁;基于所述频率锁判断所述用户的访问频率是否超过预设阈值,若是,则:返回操作失败结果。6.一种基于Redis与Kafka的线上抢购系统高并发场景处理装置,其特征在于,包括:生成模块,用于基于用户登录请求生成登录令牌;第一写入模块,用于将所述登录令牌写入前端Cookie和后端Red...

【专利技术属性】
技术研发人员:戴上静李杰战绪森
申请(专利权)人:北京焦点新干线信息技术有限公司
类型:发明
国别省市:北京,11

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

1