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消息队列对模块异步解耦,将请求的逻辑判断与数据的写操作分离,解决了现有技术中数据库负载过重的问题,并有利于请求的快速响应和反馈;同时通过前后端数据校验的方法来代替旧有的验证码机制,使得用户作弊的成本大大增加,有效地阻止了用户作弊行为。为 ...
【技术保护点】
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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。