积分

案例:

有一个红包群,这个群每天早上8点到9点之间会每隔5秒钟自动随机选择一个人发出红包,然后所有人(包括发红包的人)来自动抢这个红包.

凭直觉的思路:

设定一个定时器,每天8点到9点定时执行发红包抢红包的动作.

积分思路:

  • 任何人在8点到9点之间任何时间点进入群查看游戏状态的时候,利用游戏开始时间和结束时间游戏间隔,以及当前时间就能能算出已经发送多少轮红包.所需要的呈现的数据是能够算出来.
    • 通俗点讲,进入群时,发送一个请求.检查是否在活动时间内.如果在,就计算 游戏次数 = (现在时间-游戏开始时间)/间隔.然后计算每一轮红包谁发,发多少,每人抢多少.然后将所有信息记录起来. 其余人再查看的时候仅仅是搜索当前时间以前的红包记录.

优点:

1.去掉了定时器,减少复杂度,变为了一次普通的视口请求

2.一次写入,避免频繁写入对服务器的I/O压力