美文网首页程序员
榜单计分短时翻倍实现方式介绍

榜单计分短时翻倍实现方式介绍

作者: 2016晓 | 来源:发表于2023-02-12 15:59 被阅读0次

    计分翻倍:常见于榜单类的直播送礼活动中;含义为赠送特定高额礼物后一段时间窗口内,对榜单的新增分数,按比例加倍计分。加倍时期多次赠送特定礼物,加倍窗口会追加时长。


    image.png

    设计难点:对加倍状态的一致性时序处理。

    方案对比
    方案一、分布式加锁,保证加倍状态的修改过程串行化处理。
    优点:逻辑简单
    缺点:性能不足

    方案二、编写lua脚本,将判断加倍、更新加倍的处理,编写到lua,交由redis执行


    image.png

    优点:性能优异,拥有足够的原子性
    缺点:需要编写lua脚本,编码、调试、扩展难度较高

    方案三、不处理并发场景,纯读取、写入redis
    优点:逻辑简单
    缺点:瞬时多次特定送礼,会丢失加倍次数
    方案四、redis ZSet 存储加倍事件,遍历回放判断当前加倍

    1、处理特定礼物时,追加写入加倍事件:


    image.png
    image.png

    2、判断加倍时,回放之前的加倍事件,幂等计算出当前是否加倍,并尝试清除过期加倍事件:


    image.png
    优点:只使用基本的redis结构、命令;写操作与读操作完全隔离开,无需处理原子读写;较及时地清除了过期加倍事件,保证了redis数据量不会过大。
    缺点:比较反直觉

    相关文章

      网友评论

        本文标题:榜单计分短时翻倍实现方式介绍

        本文链接:https://www.haomeiwen.com/subject/ndydkdtx.html