一种高并发活动交互方法技术

技术编号:18083861 阅读:75 留言:0更新日期:2018-05-31 12:24
本发明专利技术公开一种高并发活动交互方法,包括:获取活动商品动态信息,对前端的用户并发量进行控制;通过平台提前的预占锁位的机制,执行抢购逻辑;本发明专利技术高并发活动交互方法采用了基于分布式缓存memcached具有原子特性的令牌锁机制,可以有效避免高并发环境下大量的请求执行重复的信息查询和抢购操作,降低服务器资源消耗和保证接口的响应效率,也可规避商品超发的问题,保证商品动态信息及时有效的更新。

【技术实现步骤摘要】
一种高并发活动交互方法
本专利技术涉及高并发活动交互
,尤其涉及一种高并发活动交互方法。
技术介绍
互联网世界中,每天有众多产品推出各种业务推广活动,如限时秒杀、轮盘抽奖、优惠抢购、抢座购票等活动,以促进用户活跃度和发展新用户,从技术角度来说,此类活动会对平台系统产生巨大的考验。由于是限时推广活动,活动开始的短时间内,会有大量的请求涌入平台,若平台没有良好的并发设计,会导致平台连接数过高、数据库负载压力过大,接口响应缓慢,甚至系统瘫痪。若活动流程还对接了第三方平台的接口,也会导致大量请求瞬间涌入第三方系统,引起第三方系统负载过高、接口请求中断等问题。抢购活动,业务内容上通常分为2个部分,一个是产品描述等静态的内容,另一个是实时请求后台接口的动态数据,如动态可秒杀商品数量和秒杀结果。静态部分的内容,通常会提前静态化处理或存入分布式缓存,压力不大,瓶颈通常在后端实时处理的业务接口上,后端业务接口必须能够支持高并发请求,必须尽可能“快”,在最短的时间里返回用户的请求结果,同时,非常重要的一点,保证抢购商品数量,在秒杀活动中经常会出现商品超发(用户抢购到的商品多于平台设置的商品限购数量,或者同时抢购成功同一个商品,如影院的座位)的情况,导致增加了活动商品的成本投入。现有的处理高并发和商品超发的高并发活动交互方式,包括:悲观锁(PessimisticLock),每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,排斥外部请求的修改;遇到加锁的状态,就必须等待;解决了超发的问题,但是,我们的场景是高并发,会很多这样的修改请求,每个请求都需要等待“锁”,某些线程可能永远都没有机会抢到这个“锁”,这种请求就会死在那里;同时,这种请求会很多,瞬间增大系统的平均响应时间,结果是可用连接数被耗尽,系统陷入异常;乐观锁(OptimisticLock),是相对于“悲观锁”采用更为宽松的加锁机制,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号校验机制,即,这个数据所有请求都有资格去修改,但会获得一个该数据的版本号,只有版本号符合的才能更新成功,其他的返回抢购失败;乐观锁避免了死锁和不用考虑锁队列的问题,但他所有的请求都执行了一个完整的抢购逻辑,同时需要维护数据的版本管理逻辑,会增大CPU的计算开销;先进先出队列,将请求放入队列中的,采用FIFO(FirstInputFirstOutput,先进先出),这样的话,就不会导致某些请求永远获取不到锁;但是有点强行将多线程变成单线程,全部请求采用“先进先出”的队列方式来处理,高并发的场景下,因为请求很多,很可能一瞬间将队列内存“撑爆”,然后系统又陷入到了异常状态;或者设计一个极大的内存队列,也是一种方案,但是,系统处理完一个队列内请求的速度根本无法和疯狂涌入队列中的数目相比;也就是说,队列内的请求会越积累越多,系统平均响应时候还是会大幅下降,系统还是陷入异常;滞后反馈机制,抢购当下不实时反馈结果,一段时间后才可以从其他方式看到用户是否抢购成功;但是,这种滞后给结果的方式给用户的体验不好,容易被用户认为是“暗箱操作”;综上可知,现有的处理高并发和商品超发的高并发活动交互方式,在高并发请求下,存在服务器资源消耗大、请求响应慢和商品超发的问题。
技术实现思路
本专利技术要解决的技术问题是提供一种高并发活动交互方法,采用了基于分布式缓存memcached具有原子特性的令牌锁机制,可以有效避免高并发环境下大量的请求执行重复的信息查询和抢购操作,降低服务器资源消耗和保证接口的响应效率,也可规避商品超发的问题,保证商品动态信息及时有效的更新。本专利技术的目的在于提供一种高并发活动交互方法,包括:获取活动商品动态信息,对前端的用户并发量进行控制;通过平台提前的预占锁位的机制,执行抢购逻辑。其中,在获取活动商品动态信息,对前端的用户并发量进行控制之前,还包括:建立动态信息的映射数据结构,缓存活动的静态商品信息和动态商品信息。其中,所述建立动态信息的映射数据结构,缓存活动的静态商品信息和动态商品信息,包括:平台查询商品动态信息时,先从缓存查询,查询缓存中的商品信息数据是否超时,在缓存中的商品信息数据没有超时时,直接读取缓存中的商品信息返回给前端,在缓存中的商品信息数据有超时时,执行读取动态商品信息数据业务流程或第三方平台数据同步流程。其中,所述查询缓存中的商品信息数据是否超时,在缓存中的商品信息数据没有超时时,直接读取缓存中的商品信息返回给前端,在缓存中的商品信息数据有超时时,执行读取动态商品信息数据业务流程或第三方平台数据同步流程,包括:查询缓存中的商品信息数据距离最近一次的更新时间是否小于预设的阀值,在小于该预设的阀值时,缓存中的商品信息数据没有超时,直接读取缓存中的商品信息返回给前端,在大于该预设的阀值时,缓存中的商品信息数据有超时,执行读取动态商品信息数据业务流程或第三方平台数据同步流程。其中,所述预设的阀值可根据业务场景动态设置。其中,所述获取活动商品动态信息,包括:数据令牌ShowToken竞夺;动态数据更新。其中,所述数据令牌ShowToken竞夺,包括:平台接收到商品信息数据的请求后,先判断缓存中商品信息对应的时间戳令牌TimeStampKey是否存在,令牌存在说明缓存的商品信息是新鲜的未过期的,此时直接将商品信息返回给前端,不需要再执行数据业务流程或调用第三方平台数据同步操作;若缓存的商品信息令牌不存在,则添加查询数据令牌ShowToken,基于分布式缓存memcached的add原子操作,保证高并发请求中只有一个线程能add成功,哪个线程获取到了查询数据令牌,该线程就执行数据业务流程或调用第三方平台数据同步接口,其他线程等待此线程获取数据并更新到缓存后,直接从缓存读取数据;当瞬间有大量并发需要请求同样数据时,该ShowToken令牌机制保证只有一个请求去执行后续逻辑。其中,所述动态数据更新,包括:获取到ShowToken令牌的线程执行获取动态数据逻辑,执行数据业务流程或调用第三方平台数据同步接口,成功获取到数据后存入缓存,并设置活动商品信息的时间戳令牌TimestampKey有效,供其他线程查询已更新的数据;删除刚才获取到的ShowToken令牌,完成动态数据的处理流程,动态数据更新。其中,所述通过平台提前的预占锁位的机制,包括:竞夺锁令牌,包括多个线程抢购同一个商品或座位时,平台先执行分布式缓存memcached的add锁令牌LockToken原子操作,哪个线程获取到锁令牌add成功,则执行后续的商品赠送逻辑流程或下单流程,流程执行完成后,删除或释放锁令牌;未获取到锁的请求直接返回抢购失败,保证商品不会超发。其中,所述执行抢购逻辑,包括:获取到锁令牌的请求,执行下一步的事务处理流程,锁定商品或者调用第三方接口下单,事务处理流程执行成功,则判断商品信息缓存的TimeStampkey令牌是否过期,未过期,通过乐观锁的数据版本校验机制,将商品信息更新到缓存中,删除LockToken;事务处理流程执行失败或商品缓存的TimeStampkey令牌过期,删除LockToken,后续请求继续抢购商品,本文档来自技高网
...
一种高并发活动交互方法

【技术保护点】
一种高并发活动交互方法,其特征在于,包括:获取活动商品动态信息,对前端的用户并发量进行控制;通过平台提前的预占锁位的机制,执行抢购逻辑。

【技术特征摘要】
1.一种高并发活动交互方法,其特征在于,包括:获取活动商品动态信息,对前端的用户并发量进行控制;通过平台提前的预占锁位的机制,执行抢购逻辑。2.如权利要求1所述的高并发活动交互方法,其特征在于,在获取活动商品动态信息,对前端的用户并发量进行控制之前,还包括:建立动态信息的映射数据结构,缓存活动的静态商品信息和动态商品信息。3.如权利要求2所述的高并发活动交互方法,其特征在于,所述建立动态信息的映射数据结构,缓存活动的静态商品信息和动态商品信息,包括:平台查询商品动态信息时,先从缓存查询,查询缓存中的商品信息数据是否超时,在缓存中的商品信息数据没有超时时,直接读取缓存中的商品信息返回给前端,在缓存中的商品信息数据有超时时,执行读取动态商品信息数据业务流程或第三方平台数据同步流程。4.如权利要求3所述的高并发活动交互方法,其特征在于,所述查询缓存中的商品信息数据是否超时,在缓存中的商品信息数据没有超时时,直接读取缓存中的商品信息返回给前端,在缓存中的商品信息数据有超时时,执行读取动态商品信息数据业务流程或第三方平台数据同步流程,包括:查询缓存中的商品信息数据距离最近一次的更新时间是否小于预设的阀值,在小于该预设的阀值时,缓存中的商品信息数据没有超时,直接读取缓存中的商品信息返回给前端,在大于该预设的阀值时,缓存中的商品信息数据有超时,执行读取动态商品信息数据业务流程或第三方平台数据同步流程。5.如权利要求4所述的高并发活动交互方法,其特征在于,所述预设的阀值可根据业务场景动态设置。6.如权利要求1至5任意一项所述的高并发活动交互方法,其特征在于,所述获取活动商品动态信息,包括:数据令牌ShowToken竞夺;动态数据更新。7.如权利要求6所述的高并发活动交互方法,其特征在于,所述数据令牌ShowToken竞夺,包括:平台接收到商品信息数据的请求后,先判断缓存中商品信息对应的时间戳令牌TimeStampKey是否存在,令牌存在说明缓存的商品信息是新鲜的未过期的,此时直接将商品...

【专利技术属性】
技术研发人员:赵善浮余松明杜育林
申请(专利权)人:广东亿迅科技有限公司
类型:发明
国别省市:广东,44

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

1