一种处理高并发数据请求的系统和方法技术方案

技术编号:11476483 阅读:126 留言:0更新日期:2015-05-20 06:20
本发明专利技术属于电子商务技术领域,具体为一种处理高并发数据请求的系统和方法。本发明专利技术系统主体分为3个部分:负载均衡层、仲裁应用单元、商品扣减处理单元;负载均衡层用于将大量的客户请求平均分配给后端的仲裁应用,仲裁应用单元接收来自负载均衡层分发来的用户请求,对其进行资格判定,并将用户请求合并重组后发送到商品扣减处理单元进行商品的扣减处理;商品扣减处理单元,用于接收来自仲裁应用的商品的扣减请求,对秒杀商品进行库存数量扣减。本发明专利技术使用单线程、批量处理的方式,避免了多线程高并发给数据库系统带来的瓶颈,同时保留了强大的业务处理能力,系统资源的开销也减少到尽可能低的程度。

【技术实现步骤摘要】
一种处理高并发数据请求的系统和方法
本专利技术属于电子商务
,具体涉及一种处理高并发数据请求的系统和方法。
技术介绍
秒杀业务具有商品种类少,短时间访问量巨大的特点,而且用户对于秒杀系统的响应时间有着相当严苛的要求。传统的电商体系架构只能通过增加应用服务器这种横向扩展的方式来满足巨大的用户访问量,但是由于需要扣减的商品种类单一,过大的秒杀并发请求会对数据库的个别商品记录上产生大量操作锁,从而在数据库产生严重的瓶颈,大大降低了用户的秒杀响应时间,甚至造成系统短时间瘫痪。
技术实现思路
本专利技术的目的在于提供一种有别于传统电商解决方案的处理高并发数据请求的系统和方法,在保留横向扩展服务器能力的基础上,最大限度减少在商品扣减的时候高并发对数据库带来的瓶颈,以满足用户严苛的响应要求。本专利技术在一次处理中,将多个相同的商品扣减请求合并成一个请求,再进行商品的扣减操作,然后根据实际扣减的商品数量按照先到先得的原则,标记每个请求是否成功扣减了对应数量的商品。本专利技术提供的处理高并发数据请求的系统,其主体分为3个部分:负载均衡层、仲裁应用单元、商品扣减处理单元,系统结构如图3所示,其中:负载均衡层,用于将大量的客户请求平均分配给后端的仲裁应用,并通过监控每个仲裁应用的访问流量,将用户请求分配到流量较少的仲裁应用上实现负载均衡。仲裁应用单元,至少包含一个仲裁应用,仲裁应用由两部分组成:一个Web线程组和一个独立运行的仲裁线程;仲裁应用单元接收来自负载均衡层分发来的用户请求,对其进行资格判定,并将用户请求合并重组后发送到商品扣减处理单元进行商品的扣减处理。仲裁应用单元中,Web线程组用来接收用户请求,对用户请求进行资格判定,然后将用户请求按照先后顺序存放到请求存储单元中的一个队列中;仲裁线程是一个单独运行的线程,每当用于存放用户请求的请求存储单元队列满的时候或者距离上次仲裁时间间隔达到一个最大值的时候,该线程便执行一次仲裁过程,它将当前请求存储单元队列中的所有请求的商品数量进行加合,重组成一个商品扣减请求发送给商品扣减处理单元,进行商品的扣减操作。仲裁应用可以横向扩展,通过增加所述应用数量的方式增加系统可接收的最大用户请求数量。商品扣减处理单元,由一个用来接收扣减请求的Web线程组和一个用来执行批量商品扣减的独立后台线程组成,用于接收来自仲裁应用的商品的扣减请求,对秒杀商品进行库存数量扣减。商品扣减处理单元中,Web线程组接收从仲裁线程发出的商品扣减请求,将其按照先后顺序存放在请求存储单元队列中,并从这个队列中接收实际扣减结果。独立后台线程在队列已满或者距离上次处理时间间隔达到最大时间后,对请求存储单元中的商品扣减请求做一次批量处理,独立后台线程会把相同商品的扣减数量进行合并,向数据库发起一次商品扣减操作请求,独立后台线程根据实际扣减的商品数量按照先后顺序分配到每个扣减请求中。处理高并发数据请求的系统还包括:数据库、请求存储单元、监控单元,其中:数据库,主要用于存储商品信息。所述商品信息包括名称,库存量等。请求存储单元,主要用于存储用户申请请求和商品扣减请求,采用队列的组织形式按照先后顺序进行存储。监控单元,主要用于监控仲裁应用的仲裁线程和请求线程以及商品扣减处理单元的独立后台线程和请求线程的睡眠时间,一旦所述睡眠时间超过预先定义的阀值,则监控单元唤醒相关线程执行相应的操作。本专利技术还涉及基于上述系统的处理高并发数据请求方法,其流程如图2所示,具体步骤如下:步骤101:仲裁应用接收到负载均衡层分发过来的用户请求后,从Web线程组中挑选一个空闲的线程执行操作,下称请求线程1,该线程查找请求存储单元中保留的商品库存标志位,根据标志位数值确定用户请求是否成功,若用户请求成功执行步骤102。步骤102:请求线程1将用户请求存放到请求存储单元的请求队列中,仲裁应用启动的时候创建一个仲裁线程,该仲裁线程一直处于睡眠状态;当睡眠时间超过一个最大时间间隔后仲裁线程会被监控单元唤醒,或者当请求存储单元请求队列中存放的用户请求达到最大值后会被用户请求线程1唤醒;唤醒后的仲裁线程将当前请求队列中的所有商品扣减请求合并成一个扣减请求;经过合并重组后的商品扣减请求会由仲裁线程发送给后端的商品扣减处理单元进行商品的扣减操作。步骤103:仲裁应用获得商品扣减处理单元返回的实际扣减结果后,仲裁线程根据这个实际扣减结果按照时间先后顺序标记请求队列中每个用户请求是否成功执行;至此完成一次仲裁操作,仲裁线程唤醒所有正在等待商品扣减结果的用户申请线程,然后重新进入睡眠状态等待下一次被唤醒。步骤104:请求线程1进入睡眠状态,该睡眠状态会设定一个超时时间,一旦到指定时间该线程仍然没有被仲裁线程唤醒的话,该线程会被监控单元自动唤醒。步骤105:处于睡眠状态的请求线程1在规定的时间内没有被仲裁线程唤醒,则会被监控单元自动唤醒执行用户请求超时提醒操作。步骤106:处于睡眠状态的请求线程1被仲裁线程唤醒后,根据用户请求中记录的购买结果执行用户是否购买成功操作。本专利技术使用单线程,批量处理的方式,避免了多线程高并发给数据库系统带来的瓶颈,同时保留了强大的业务处理能力,系统资源的开销也减少到尽可能低的程度。附图说明图1为本专利技术的系统结构图。图2为用户请求的处理流程图。图3为仲裁应用后台线程的处理流程图。图4为商品扣减的处理流程图。具体实施方式本专利技术提供了一种有别于传统电商解决方案的处理高并发数据请求的方法和系统,在保留横向扩展服务器能力的基础上,最大限度减少在商品扣减的时候高并发对数据库带来的瓶颈,以满足用户严苛的响应要求。图1为本专利技术的系统结构图,整个系统由3个部分组成:负载均衡层,主要功能负责将大量的客户请求平均分配给后端的仲裁应用。可采用Ngnix技术实现,Ngnix是一个高性能的http,其特点是占用请求存储单元少,性能稳定,并发能力强,是在绝大多数Linux/Unix系统上使用的高性能Web服务器。通过其提供的反向代理功能,可以为应用实现简单的负载均衡。负载均衡层通过为Ngnix配置jvmroute模块,从而实现多个仲裁应用的负载均衡。jvmroute模块是Ngnix上用于搭建负载均衡的模块,它通过监控每个仲裁应用的访问流量,将用户请求分配到流量较少的仲裁应用上,以此达到负载均衡的目的。仲裁应用单元,至少包含一个仲裁应用,所述仲裁应用单元接收来自负载均衡层分发来的用户请求,对其进行资格判定(例如:通过秒杀验证码),并将用户请求合并重组后发送到商品扣减处理单元进行商品的扣减处理。仲裁应用由两部分组成:一个Web线程组和一个独立运行的仲裁线程。Web线程组用来接收用户请求,对用户请求进行资格判定,然后将用户请求按照先后顺序存放到请求存储单元中的一个队列中。仲裁线程是一个单独运行的线程,它在整个仲裁应用启动的时候便创建完成。每当用于存放用户请求的请求存储单元队列满的时候或者距离上次仲裁时间间隔达到一个最大值的时候,该线程便执行一次仲裁过程,它会将当前请求存储单元队列中的所有请求的商品数量进行加合,重组成一个商品扣减请求发送给商品扣减处理单元,进行商品的扣减操作。仲裁应用可以横向扩展,通过增加所述应用数量的方式增加系统可接收的最大用户请求数量。商品扣减处理单元,接收来自本文档来自技高网...

【技术保护点】
一种处理高并发数据请求的系统,其特征在于主体分为3个部分:负载均衡层、仲裁应用单元、商品扣减处理单元,其中:所述负载均衡层,用于将大量的客户请求平均分配给后端的仲裁应用,并通过监控每个仲裁应用的访问流量,将用户请求分配到流量较少的仲裁应用上实现负载均衡;所述仲裁应用单元,至少包含一个仲裁应用,仲裁应用由两部分组成:一个Web线程组和一个独立运行的仲裁线程;仲裁应用单元接收来自负载均衡层分发来的用户请求,对其进行资格判定,并将用户请求合并重组后发送到商品扣减处理单元进行商品的扣减处理;仲裁应用可以横向扩展,即通过增加所述应用数量的方式增加系统可接收的最大用户请求数量;所述商品扣减处理单元,由一个用来接收扣减请求的Web线程组和一个用来执行批量商品扣减的独立后台线程组成;主要用于接收来自仲裁应用的商品的扣减请求,对秒杀商品进行库存数量扣减。

【技术特征摘要】
1.一种处理高并发数据请求的系统,其特征在于主体分为3个部分:负载均衡层、仲裁应用单元、商品扣减处理单元,其中:所述负载均衡层,用于将大量的客户请求平均分配给后端的仲裁应用,并通过监控每个仲裁应用的访问流量,将用户请求分配到流量较少的仲裁应用上实现负载均衡;所述仲裁应用单元,至少包含一个仲裁应用,仲裁应用由两部分组成:一个Web线程组和一个独立运行的仲裁线程;仲裁应用单元接收来自负载均衡层分发来的用户请求,对其进行资格判定,并将用户请求合并重组后发送到商品扣减处理单元进行商品的扣减处理;所述仲裁应用中,Web线程组用来接收用户请求,对用户请求进行资格判定,然后将用户请求按照先后顺序存放到请求存储单元中的一个队列中;每当用于存放用户请求的请求存储单元队列满的时候或者距离上次仲裁时间间隔达到一个最大值的时候,仲裁线程便执行一次仲裁过程,它将当前请求存储单元队列中的所有请求的商品数量进行加合,重组成一个商品扣减请求发送给商品扣减处理单元,进行商品的扣减操作;仲裁应用可以横向扩展,即通过增加所述应用数量的方式增加系统可接收的最大用户请求数量;所述商品扣减处理单元,由一个用来接收扣减请求的Web线程组和一个用来执行批量商品扣减的独立后台线程组成;主要用于接收来自仲裁应用的商品的扣减请求,对秒杀商品进行库存数量扣减;所述商品扣减处理单元中,Web线程组接收从仲裁线程发出的商品扣减请求,将其按照先后顺序存放在请求存储单元队列中,并从这个队列中接收实际扣减结果;独立后台线程在队列已满或者距离上次处理时间间隔达到最大时间后,对请求存储单元中的商品扣减请求做一次批量处理,独立后台线程会把相同商品的扣减数量进行合并,向数据库发起一次商品扣减操作请求,独立后台线程根据实际扣减的商品数量按照先后顺序分配到每个扣减请求中;还包括数据库,所述数据库主要用于存储商品信息。2.根据权利要求1所述的处理高并发数据请求的系统,其特征在于还包括监控单元,所述监控单元主要用于监控仲裁应用的仲裁线程和...

【专利技术属性】
技术研发人员:朱烨
申请(专利权)人:上海瀚之友信息技术服务有限公司
类型:发明
国别省市:上海;31

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

1