抽奖系统实现总结

技术架构:
java + redis + mysql

  • 系统定位*:
    作为承接前台老虎机等各种游戏功能,后台对接第三方各种奖项发放。
    作为抽奖和礼品包发放的统一入口

  • 系统功能:
    活动及活动规则维护,抽奖奖池维护

  • 问题点:
    如何保证公平性?如何让运营灵活控制活动?
    奖池生成算法:只要是和池子有关系的项目,都可以用这种方式
    防止奖品被超发:最大奖品数、没人最大中奖次数、最大抽奖次数
    参与条件的设置:规则引擎

  • 安全性:
    抽奖:用户认证
    领奖:内网访问,MD5加密验签

  • 抗并发:
    使用redis集群的分布式缓存提高抗并发能力
    使用生产、消费模式处理中奖信息:
    生产者将中奖信息存入redis的队列
    消费者消费队列同步数据到mysql,并调用第三方接口完成发奖

  • 防刷、限流:
    1、奖池设置每天最大中奖数、每人最大中奖数,使用redis原子计数来控制并发
    2、外围nginx针对ip做频次控制、粗细管道
    3、java系统内部做限流:返回请求太多
    做不到绝对的防刷,只能增加刷的成本

你可能感兴趣的:(抽奖系统实现总结)