一种基于直播中高并发红包的方法技术

技术编号:32830621 阅读:14 留言:0更新日期:2022-03-26 20:42
本发明专利技术提供一种基于直播中高并发红包的方法,包括以下步骤:主持人发起红包雨,并支付红包雨;服务端预生成红包雨,将红包数据放入redis队列中,并通知主持人和观众;主持人和观众收到通知之后,根据通知的内容展示红包雨的特效;用户点击下落的红包雨,进入抢红包的流程;服务端根据设定抢到红包概率和随机概率的判断,用户如果抢到了红包就放入个人钱包,如果没有或者已经抢完,就返回失败;用户可以点击个人钱包,进行提现。本发明专利技术通过加入随机概率的方式过滤掉一些请求,并且通过提前生成好红包的方式来提高整体抢红包的性能。红包的方式来提高整体抢红包的性能。红包的方式来提高整体抢红包的性能。

【技术实现步骤摘要】
一种基于直播中高并发红包的方法


[0001]本专利技术涉及一种应用直播高并发场景中抢红包组件,尤其是涉及一种基于直播中高并发红包的方法。

技术介绍

[0002]现有抢红包的形式,用户点击抢红包的时候,实时发送请求到服务端,在每次抢红包的过程中,实时计算红包金额,每次都会用剩余的金额,重新走一遍,计算抢到红包金额的大小,比较考验接口的性能和实效性。
[0003]现有的方案主要是针对直播间人数不是特别多的情况,可以实时的请求数据,计算抢红包的数目,然后抢到红包之后,实时通过支付接口,发送到直播间用户。该方案目前的问题是在直播间人数比较大(一般是指直播间人数超过10w以上)的情况下,会对服务端产生比较大的压力,容易对接口产生性能影响。在抢的过程中,去实时计算红包的数目,需要每次计算的时候,不断的去获取余额,整个发送红包的流程过长,也会对接口的性能产生一定影响。考虑到上面所存在的问题,需要设计和开发了一种能够适应高并发场景的抢红包的方法,主要是针对上面问题进行的优化,提升接口性能。

技术实现思路

[0004]本专利技术提供了一种基于直播中高并发红包的方法,解决了在直播间发放红包的问题,其技术方案如下所述:
[0005]一种基于直播中高并发红包的方法,包括以下步骤:
[0006]S1:主持人发起红包雨需要填写红包的参数,所述参数包括红包雨的时长、数量、金额、最小金额、种类、设定观众抢到红包概率、抢完之后是否自动结束红包雨,并支付红包雨对应的红包金额;
[0007]S2:服务端在主持人支付红包金额的同时,根据支付信息的回调结果,以及根据红包金额和个数,通过生成红包的算法,直接生成好红包信息,将红包信息数据存入到redis队列当中,后面在观众抢的过程中观众直接从队列里面获取红包,如果队列里面还有,观众抢红包就成功;
[0008]S3:主持人和观众收到通知之后,根据通知的内容展示红包雨的特效;
[0009]S4:观众在收到红包雨特效之后点击下落的红包雨,进入抢红包的流程;
[0010]S5:观众点击红包时向服务端发出进入队列的请求,服务端根据观众进入队列的请求生产一个随机概率数值,然后判断随机概率数值是否在概率之内,是的话则用户从队列中获取红包,用户抢到了红包就放入个人钱包;如果否的话或者队列中的红包已经抢完,就返回失败;
[0011]S6:用户可以点击个人钱包,进行提现。
[0012]进一步的,步骤S2中,所述红包信息数据存入到redis队列当中,所述红包信息数据包括了红包数量、每个红包中的红包金额,且红包金额大于最小金额。
[0013]进一步的,步骤S2中,根据红包输入参数来生成红包的算法,包括以下步骤:
[0014]S11:根据红包的剩余个数,判断是否是最后一个红包,如果是,直接返回剩余的金额,个数减1;
[0015]S12:如果红包剩余个数不是最后一个,设定最少红包的金额是m;
[0016]S13:设定halfRemainSize=用剩余红包数量除以2;
[0017]用剩余红包金额除以halfRemainSize,得到第一个max1;
[0018]S14:设定minRemainAmount=用最小金额m*红包剩余数量;
[0019]得到max2=剩余红包金额

minRemainAmount;
[0020]S15:比较max1和max2大小,两者最小的一个,作为max金额;
[0021]S16:再用一个0到1的随机数*之前得到的max金额,得到最后抢到的红包money;
[0022]S17:再用money和最小金额m比较,如果小于最小金额m,就返回最小金额m,如果不是,就返回最后得到的money。
[0023]进一步的,步骤S5中,所述用户在点击红包雨的时候,发出进入队列的请求到达服务端之后,服务端根据随机概率进行判断,所述主持人设定观众抢到红包概率的数值单位为百分比,随机概率通过随机生成数表示,所述随机生成数的范围是0

100。
[0024]进一步的,步骤S11中,所述红包的剩余个数,是指主持人输入的红包数量减去已经生成的红包数量,得到的剩余红包数量。
[0025]进一步的,步骤S12中,设定最少红包的金额m,是指主持人在创建红包的时候,需要输入一系列的参数,有一个最小金额,默认是1元钱。
[0026]进一步的,步骤S5中,所述随机概率数值与概率的关系能够修改成,判断随机概率数值是否大于概率。
[0027]进一步的,对剩余金额的红包雨能够进行退款,退回到主持人支付的账号上。
[0028]进一步的,步骤S5中,用户在抢到了红包之后,会在redis缓存中生产一个标志,代表该用户已经抢过了,用来判断该用户是否重复抢红包。
[0029]进一步的,步骤S6中,用户点击个人钱包进行提现,通过微信提供的api,将用户抢到的红包金额,发送到用户指定的微信号里面。
[0030]所述基于直播中高并发红包的方法,提供了一种新型的生产红包算法,通过加入随机概率的方式过滤掉一些请求,并且通过提前生成好红包的方式来提高整体抢红包的性能。
附图说明
[0031]图1是所述基于直播中高并发红包的方法的流程示意图;
[0032]图2是利用本方法的某实施例的随机红包示意图;
[0033]图3是利用本方法的随机红包重复200次的结果示意图;
[0034]图4是主持人端进行设置的页面示意图。
具体实施方式
[0035]如图1所示,所述基于直播中高并发红包的方法,整体上看,主持人在直播间发起红包雨,观众收到主持人发的红包雨,然后点击下落的红包雨,进行抢红包,抢到红包之后
存入用户个人钱包,等待用户自己提现。具体的包括以下步骤:
[0036]S1:主持人发起红包雨需要填写红包的参数,比如红包雨的时长、数量、金额、最小金额、种类、抢完之后是否自动结束红包雨一系列参数,还需要设定观众抢到红包概率,并支付红包雨对应的红包金额,设置页面可以如图4所示;
[0037]主持人开启红包任务,向服务端请求红包并支付,服务端读取红包信息,并生成指定个数的红包,红包种类是现金或者积分等内容。
[0038]S2:服务端收到支付完成的通知后,根据支付完成之后的订单号,查询红包的信息,通过生成红包的算法预生成红包雨的信息,将红包雨数据放入redis队列中,并即时通过通讯平台通知主持人和观众红包雨的信息;
[0039]服务端在主持人支付红包金额的同时,并且根据支付信息的回调结果,然后根据红包金额和个数,通过生成红包的算法,直接生成好红包信息,将红包信息数据存入到redis队列当中,在观众抢的过程中直接从队列里面获取红包,如果队列里面还有,观众抢红包就成功。符合先到先得原则,如果没有,直接告诉观众没有抢到。
[0040]S3:主持人和观众收到通知之后,所在页面根据通知本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于直播中高并发红包的方法,包括以下步骤:S1:主持人发起红包雨需要填写红包的参数,所述参数包括红包雨的时长、数量、金额、最小金额、种类、设定观众抢到红包概率、抢完之后是否自动结束红包雨,并支付红包雨对应的红包金额;S2:服务端在主持人支付红包金额的同时,根据支付信息的回调结果,以及根据红包金额和个数,通过生成红包的算法,直接生成好红包信息,将红包信息数据存入到redis队列当中,后面在观众抢的过程中观众直接从队列里面获取红包,如果队列里面还有,观众抢红包就成功;S3:主持人和观众收到通知之后,根据通知的内容展示红包雨的特效;S4:观众在收到红包雨特效之后点击下落的红包雨,进入抢红包的流程;S5:观众点击红包时向服务端发出进入队列的请求,服务端根据观众进入队列的请求生产一个随机概率数值,然后判断随机概率数值是否在概率之内,是的话则用户从队列中获取红包,用户抢到了红包就放入个人钱包;如果否的话或者队列中的红包已经抢完,就返回失败;S6:用户可以点击个人钱包,进行提现。2.根据权利要求1所述的基于直播中高并发红包的方法,其特征在于:步骤S2中,所述红包信息数据存入到redis队列当中,所述红包信息数据包括了红包数量、每个红包中的红包金额,且红包金额大于最小金额。3.根据权利要求1所述的基于直播中高并发红包的方法,其特征在于:步骤S2中,根据红包输入参数来生成红包的算法,包括以下步骤:S11:根据红包的剩余个数,判断是否是最后一个红包,如果是,直接返回剩余的金额,个数减1;S12:如果红包剩余个数不是最后一个,设定最少红包的金额是m;S13:设定halfRemainSize=用剩余红包数量除以2;用剩余红包金额除以halfRemainSize,得到第一个max1;S14:设定minRemainAmount=用最小金额m*红包剩余数量;得到max2=剩余红包金额

【专利技术属性】
技术研发人员:邢波杜广刘秉林
申请(专利权)人:创盛视联数码科技北京有限公司
类型:发明
国别省市:

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

1