业务场景如下:
公司举办司庆活动,使用微信端链接H5页面访问后台服务实现员工答题抢红包活动(除了微信网页授权登录用到微信API接口外,H5及后台服务均为公司自己研发)
除了微信登录接口、员工信息获得接口、祝福语接口、抽奖接口外,还有一个员工中奖名单接口(通过轮询方式在抽奖活动页 面滚动展示)
由于预计员工瞬间涌入为万人以上,在处理并发访问查询接口时,当并发进程达到一定的数量时,数据库的瓶颈问题就出来,性能下降严重,很多查询进程处于等待阻塞状态。
经过调查发现引发性能问题的关键在于大量数据库连接请求处于排队中,数据库吞吐容量有限,如果不减少访问请求次数,那么优化SQL或减少查询记录数的有一定效果,但在并发超过一定数量的情况下(比如200)性能问题还是存在着。所以解决该问题的思路是转移数据库的压力,考虑使用缓存来处理大并发请求。这里考虑采用redis缓存来提高读取性能,降低对数据的IO操作。
接口功能业务:系统进入抽奖页面后,自动触发轮询调用员工中奖名单接口以获得员工中奖名单列表数据,假设轮询时间为5分钟一次(轮询时间可以由系统后台管理员自行设置)
那么一小时60分钟将会被5分钟分割为步长相等12等分时间段,每等份的临界值为 5,10,15,20,25,30,35,40,45,50,55,60分钟,那么在系统接受到的瞬间第一次名单请求&#x