抽獎系統實現總結

技術架構:
java + redis + mysql

  • 系統定位*:
    作爲承接前臺老虎機等各種遊戲功能,後臺對接第三方各種獎項發放。
    作爲抽獎和禮品包發放的統一入口

  • 系統功能:
    活動及活動規則維護,抽獎獎池維護

  • 問題點:
    如何保證公平性?如何讓運營靈活控制活動?
    獎池生成算法:只要是和池子有關係的項目,都可以用這種方式
    防止獎品被超發:最大獎品數、沒人最大中獎次數、最大抽獎次數
    參與條件的設置:規則引擎

  • 安全性:
    抽獎:用戶認證
    領獎:內網訪問,MD5加密驗籤

  • 抗併發:
    使用redis集羣的分佈式緩存提高抗併發能力
    使用生產、消費模式處理中獎信息:
    生產者將中獎信息存入redis的隊列
    消費者消費隊列同步數據到mysql,並調用第三方接口完成發獎

  • 防刷、限流:
    1、獎池設置每天最大中獎數、每人最大中獎數,使用redis原子計數來控制併發
    2、外圍nginx針對ip做頻次控制、粗細管道
    3、java系統內部做限流:返回請求太多
    做不到絕對的防刷,只能增加刷的成本

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章