一种基于直播中高并发红包的方法与流程

文档序号:29414475发布日期:2022-03-26 12:42阅读:398来源:国知局
一种基于直播中高并发红包的方法与流程

1.本发明涉及一种应用直播高并发场景中抢红包组件,尤其是涉及一种基于直播中高并发红包的方法。


背景技术:

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


技术实现要素:

4.本发明提供了一种基于直播中高并发红包的方法,解决了在直播间发放红包的问题,其技术方案如下所述:
5.一种基于直播中高并发红包的方法,包括以下步骤:
6.s1:主持人发起红包雨需要填写红包的参数,所述参数包括红包雨的时长、数量、金额、最小金额、种类、设定观众抢到红包概率、抢完之后是否自动结束红包雨,并支付红包雨对应的红包金额;
7.s2:服务端在主持人支付红包金额的同时,根据支付信息的回调结果,以及根据红包金额和个数,通过生成红包的算法,直接生成好红包信息,将红包信息数据存入到redis队列当中,后面在观众抢的过程中观众直接从队列里面获取红包,如果队列里面还有,观众抢红包就成功;
8.s3:主持人和观众收到通知之后,根据通知的内容展示红包雨的特效;
9.s4:观众在收到红包雨特效之后点击下落的红包雨,进入抢红包的流程;
10.s5:观众点击红包时向服务端发出进入队列的请求,服务端根据观众进入队列的请求生产一个随机概率数值,然后判断随机概率数值是否在概率之内,是的话则用户从队列中获取红包,用户抢到了红包就放入个人钱包;如果否的话或者队列中的红包已经抢完,就返回失败;
11.s6:用户可以点击个人钱包,进行提现。
12.进一步的,步骤s2中,所述红包信息数据存入到redis队列当中,所述红包信息数据包括了红包数量、每个红包中的红包金额,且红包金额大于最小金额。
13.进一步的,步骤s2中,根据红包输入参数来生成红包的算法,包括以下步骤:
14.s11:根据红包的剩余个数,判断是否是最后一个红包,如果是,直接返回剩余的金额,个数减1;
15.s12:如果红包剩余个数不是最后一个,设定最少红包的金额是m;
16.s13:设定halfremainsize=用剩余红包数量除以2;
17.用剩余红包金额除以halfremainsize,得到第一个max1;
18.s14:设定minremainamount=用最小金额m*红包剩余数量;
19.得到max2=剩余红包金额-minremainamount;
20.s15:比较max1和max2大小,两者最小的一个,作为max金额;
21.s16:再用一个0到1的随机数*之前得到的max金额,得到最后抢到的红包money;
22.s17:再用money和最小金额m比较,如果小于最小金额m,就返回最小金额m,如果不是,就返回最后得到的money。
23.进一步的,步骤s5中,所述用户在点击红包雨的时候,发出进入队列的请求到达服务端之后,服务端根据随机概率进行判断,所述主持人设定观众抢到红包概率的数值单位为百分比,随机概率通过随机生成数表示,所述随机生成数的范围是0-100。
24.进一步的,步骤s11中,所述红包的剩余个数,是指主持人输入的红包数量减去已经生成的红包数量,得到的剩余红包数量。
25.进一步的,步骤s12中,设定最少红包的金额m,是指主持人在创建红包的时候,需要输入一系列的参数,有一个最小金额,默认是1元钱。
26.进一步的,步骤s5中,所述随机概率数值与概率的关系能够修改成,判断随机概率数值是否大于概率。
27.进一步的,对剩余金额的红包雨能够进行退款,退回到主持人支付的账号上。
28.进一步的,步骤s5中,用户在抢到了红包之后,会在redis缓存中生产一个标志,代表该用户已经抢过了,用来判断该用户是否重复抢红包。
29.进一步的,步骤s6中,用户点击个人钱包进行提现,通过微信提供的api,将用户抢到的红包金额,发送到用户指定的微信号里面。
30.所述基于直播中高并发红包的方法,提供了一种新型的生产红包算法,通过加入随机概率的方式过滤掉一些请求,并且通过提前生成好红包的方式来提高整体抢红包的性能。
附图说明
31.图1是所述基于直播中高并发红包的方法的流程示意图;
32.图2是利用本方法的某实施例的随机红包示意图;
33.图3是利用本方法的随机红包重复200次的结果示意图;
34.图4是主持人端进行设置的页面示意图。
具体实施方式
35.如图1所示,所述基于直播中高并发红包的方法,整体上看,主持人在直播间发起红包雨,观众收到主持人发的红包雨,然后点击下落的红包雨,进行抢红包,抢到红包之后
存入用户个人钱包,等待用户自己提现。具体的包括以下步骤:
36.s1:主持人发起红包雨需要填写红包的参数,比如红包雨的时长、数量、金额、最小金额、种类、抢完之后是否自动结束红包雨一系列参数,还需要设定观众抢到红包概率,并支付红包雨对应的红包金额,设置页面可以如图4所示;
37.主持人开启红包任务,向服务端请求红包并支付,服务端读取红包信息,并生成指定个数的红包,红包种类是现金或者积分等内容。
38.s2:服务端收到支付完成的通知后,根据支付完成之后的订单号,查询红包的信息,通过生成红包的算法预生成红包雨的信息,将红包雨数据放入redis队列中,并即时通过通讯平台通知主持人和观众红包雨的信息;
39.服务端在主持人支付红包金额的同时,并且根据支付信息的回调结果,然后根据红包金额和个数,通过生成红包的算法,直接生成好红包信息,将红包信息数据存入到redis队列当中,在观众抢的过程中直接从队列里面获取红包,如果队列里面还有,观众抢红包就成功。符合先到先得原则,如果没有,直接告诉观众没有抢到。
40.s3:主持人和观众收到通知之后,所在页面根据通知的红包雨信息展示红包雨的特效,并且会展示红包雨的倒计时;
41.s4:观众点击下落的红包雨,进入抢红包的流程,主持人不能抢红包,只能看红包的特效,观众在点击下落红包的过程中,服务端会判断当前点击的红包是否真实有效的,这是根据红包的随机概率判断的,当用户点击下路的红包时,先生成一个随机数,根据随机数和抢到红包概率进行比较,判断随机数是否小于等于概率,如果是,则说明观众点击是真实有效的红包,如果大于概率则说明用户点击的是假红包;
42.s5:服务端根据用户抢红包的信息,首先判断红包雨的状态是否是进行中,如果红包雨已经,就会直接提示用户,如果是进行中,先进行随机概率的判断,用户如果抢到了红包就放入个人钱包,如果没有或者已经抢完,就返回失败;用户在抢到了红包之后,会在redis缓存中生产一个标志,代表用户已经抢过了,用来判断用户是否是重复抢红包。
43.s6:用户可以点击个人钱包,进行提现。通过微信提供的api,将用户抢到的红包金额,发送到用户指定的微信号里面。
44.s7:如果主持人发送的红包雨,观众没有抢完,或者有剩余的情况,本发明支持对剩余金额的红包雨,进行退款,主持人点击退款之后,会计算红包雨的情况,然后计算剩余的红包金额,进行退款,退回到主持人支付的账号上。
45.其中,步骤s5中,针对目前实时抢红包的做法,服务端加入抢红包概率的方法,在创建生成红包雨的时候,红包信息数据加入抢到红包的概率,比如50%,然后服务端在收到红包的请求时,服务端就会生产一个随机数(0-100之间),服务端会判断生成的随机数是否在创建红包时概率之内,如果是,就直接进去抢红包的流程,不是,就返回失败。
46.可以看到,抢红包算法的方法(redpackage主要有两个属性组成,一个是红包的数目,一个是红包的总金额)通过图2,可以看到让观众抢到的红包面额在概率上是大致均匀的,抢红包采用预先生成红包的方式,服务端通过缓存判断用户是否抢过红包,或者达到抢红包的次数,将红包直接存入用户钱包。
47.抢红包生成的方法包括以下步骤:
48.s11:服务端根据红包的剩余个数,判断是否是最后一个红包,如果是,直接返回剩
余的金额,个数减1(最后一个红包的金额,不需要计算);
49.s12:如果红包剩余个数不是最后一个,假设主持人设定最小红包的金额是1元;
50.s13:halfremainsize=剩余红包数量(红包总的数量-已经生成红包的数量)除以2;
51.剩余红包金额(红包的总金额-已经生成红包的金额)除以halfremainsize,得到第一个max1;
52.s14:minremainamount=用最小金额(主持人设定的最小金额)*(红包剩余数量);
53.max2=剩余红包金额(红包的总金额-已经生成红包的金额)-minremainamount;
54.s15:比较max1和max2大小,得出最小的一个,赋值给max金额;
55.s16:再用一个0到1的随机数*(乘以)之前得到的max金额就是红包金额;
56.s17:再用红包金额和最小的金额比较,如果小于最小的金额,就返回最小的金额,如果不是,就返回最后得到的红包金额。
57.s18:再用红包总的数量-1就得到剩余红包的数量。
58.s19:再用红包总的金额减去s17中红包的金额,就是剩余红包的金额。
59.如图2所示,横坐标表示抢红包的次数,纵坐标表示随机产生红包的金额。
60.如图3所示,横坐标表示抢红包的次数,纵坐标表示重复200次随机产生红包的金额。
61.可见计算结果符合基本预期,红包的金额都能处于相对平均。
62.所述基于直播中高并发红包的方法提供了一种新型的生产红包算法,通过加入概率和创建红包时各种参数的限制方式过滤掉一些请求,来提高接口的性能,并且通过提前生成好红包信息的方式来提高整体抢红包的性能。在红包结束之后,如果红包有剩余的情况下,也可以计算红包的余额,方便主持人退款。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1