积分过期方案构想
积分过期方案构想
这里提供一种积分过期的方案构想,从网上已有的方案中想出的一些想法,有问题的地方欢迎大家提出意见。
这里给出找到的一种方案
该方案中可用积分对于用户而言是不可见的,因此该表的有些操作是可以异步的,这样对于业务来说可以减少请求时间to c体验更好。对于增删查(积分发放不存在修改)分别来看:
- 新增 ,新增积分不可能马上过期,最起码都是有一定时间延迟的,因此(如果想缩短业务流程)可以采用消息队列或者其他方式异步新增,这里有一个风险是如果新增在消费之后可能会报错,可以尽量同步操作;
- 消费,消费积分可能同时消耗多个获取的积分,这里应该维护一个redis队列,在删除一个人的积分时(一次消耗可能需要删除多个可用积分,或者修改一条可用积分),其他线程是不能删除这个用户的可用积分的包括 ***过期积分 ***,保证用户积分的”原子性“,在消耗完成之后,删除redis队列,此时,其他操作可以进行。
- 过期, 同理积分过期也是一种消耗积分,采用定时任务扫描该表(可多线程,但应保证不同线程用户不同,这里有点麻烦?);