临界点问题思考
背景:
公司项目年度活动,需求如下:
- 1.用户给主播送礼,每收一个礼物获得一积分
- 2.活动持续15天 每天主播会进行排名,根据排名进行晋级,未晋级的主播视为淘汰,不再记录积分。第一天N进50 ,第二天50进30……
- 3.每次晋级后积分重新计算
整体流程
礼物处理流程:前端->nginx负载->直播间服务模块->礼物Mq->活动服务模块->监听礼物消息->记录主播收礼积分(redis sortset)->每日0点结算晋级榜单
处理逻辑
其中直播间服务模块主要负责将礼物消息发送到mq里,真正的处理逻辑在活动服务模块里,对礼物消息进行监听,来一个处理一个。另外定时任务0点进行晋级处理。
版本1:
- 1.礼物消息到来,直接记录到redis,判断当前时间属于哪一个轮次
- 2.定时任务0:0:0 对redis读取