[发明专利]基于Redis与Kafka的线上抢购系统高并发场景处理方法及装置有效
申请号: | 201810181830.7 | 申请日: | 2018-03-06 |
公开(公告)号: | CN108418821B | 公开(公告)日: | 2021-06-18 |
发明(设计)人: | 戴上静;李杰;战绪森 | 申请(专利权)人: | 北京焦点新干线信息技术有限公司 |
主分类号: | H04L29/06 | 分类号: | H04L29/06;H04L9/32;G06Q30/06 |
代理公司: | 北京集佳知识产权代理有限公司 11227 | 代理人: | 古利兰;王宝筠 |
地址: | 100086 北京*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 redis kafka 线上 抢购 系统 并发 场景 处理 方法 装置 | ||
本发明提供了一种基于Redis与Kafka的线上抢购系统高并发场景处理方法及装置,方法包括:基于用户登录请求生成登录令牌,将登录令牌写入前端Cookie和后端Redis缓存中,校验前端登录令牌与后端登录令牌是否匹配,若否,则返回操作失败结果,若是,则:判断用户登录令牌是否有效,若否,则返回操作失败结果,若是,则:判断是否获取到对应商品的商品锁,若否,则返回操作失败结果,若是,则:将抢购成功的请求数据推送给Kafka消息队列。本发明通过限流削峰处理,有效降低了服务器和数据库的负载压力,能够在短时间内承受大量的并发请求,极大地增加了集群的吞吐量;并通过对用户访问次数的前后端校验,能够快速找出作弊用户,保证了活动稳定、公平地进行。
技术领域
本发明属于高并发场景处理技术领域,尤其涉及一种基于Redis与Kafka的线上抢购系统高并发场景处理方法及装置。
背景技术
随着互联网的普及,越来越多的用户选择利用网络购买商品、参与购房和摇号。商家为了吸引用户,经常会举办秒杀、限时抢购等优惠活动,即在有限时间里提供限量的优惠商品,由于价格低廉,往往一秒钟就被抢购一空。由于这种僧多粥少的情况,大量用户在活动开始前后频繁访问服务器,流量会比平时激增几倍甚至几十倍,给服务器带来巨大的压力,超过一定压力容量之后甚至会造成数据不能正常保存、服务无法响应的情况。并且由于有利可图,往往会有用户花高价向工作室购买作弊工具,在短时间内用作弊工具大量访问服务器,不仅破坏了活动的公平性,也给服务器带来更大的负载压力。
目前,大多数站点使用验证码来阻止用户作弊。但对于有经验的工作室来说,验证码可以用提前访问、图形识别等多种手段破解,只能增加普通用户的成本,而让作弊者得利。
因此,如何有效的对高并发场景的海量请求进行处理是一项亟待解决的问题。
发明内容
有鉴于此,本发明提供了一种基于Redis与Kafka的线上抢购系统高并发场景处理方法,从前端开始对各层级模块进行限流处理,限制单个用户的请求频率,使用持久化缓存技术,利用Kafka消息队列对模块异步解耦,将请求的逻辑判断与数据的写操作分离,解决了现有技术中数据库负载过重的问题,并有利于请求的快速响应和反馈;同时通过前后端数据校验的方法来代替旧有的验证码机制,使得用户作弊的成本大大增加,有效地阻止了用户作弊行为。
为了实现上述目的,本发明提供如下技术方案:
一种基于Redis与Kafka的线上抢购系统高并发场景处理方法,包括:
基于用户登录请求生成登录令牌;
将所述登录令牌写入前端Cookie和后端Redis缓存中;
校验前端登录令牌与后端登录令牌是否匹配,若否,则返回操作失败结果,若是,则:
判断所述用户登录令牌是否有效,若否,则返回操作失败结果,若是,则:
判断是否获取到对应商品的商品锁,若否,则返回操作失败结果,若是,则:
将抢购成功的请求数据推送给Kafka消息队列。
优选地,所述基于用户登录请求生成登录令牌包括:
记录所述用户登录的时间戳;
将所述时间戳与所述用户ID拼接字符串;
通过Hash运算生成所述令牌。
优选地,所述将抢购成功的请求数据推送给Kafka消息队列后,还包括:
消费所述Kafka消息队列中的记录,将所述抢购成功的请求数据写入数据库;
发送通知短信给用户;
通过WebSocket传递成交记录给前端前台。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京焦点新干线信息技术有限公司,未经北京焦点新干线信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810181830.7/2.html,转载请声明来源钻瓜专利网。