技術架構:
java + redis + mysql
系統定位*:
作爲承接前臺老虎機等各種遊戲功能,後臺對接第三方各種獎項發放。
作爲抽獎和禮品包發放的統一入口系統功能:
活動及活動規則維護,抽獎獎池維護問題點:
如何保證公平性?如何讓運營靈活控制活動?
獎池生成算法:只要是和池子有關係的項目,都可以用這種方式
防止獎品被超發:最大獎品數、沒人最大中獎次數、最大抽獎次數
參與條件的設置:規則引擎安全性:
抽獎:用戶認證
領獎:內網訪問,MD5加密驗籤抗併發:
使用redis集羣的分佈式緩存提高抗併發能力
使用生產、消費模式處理中獎信息:
生產者將中獎信息存入redis的隊列
消費者消費隊列同步數據到mysql,並調用第三方接口完成發獎防刷、限流:
1、獎池設置每天最大中獎數、每人最大中獎數,使用redis原子計數來控制併發
2、外圍nginx針對ip做頻次控制、粗細管道
3、java系統內部做限流:返回請求太多
做不到絕對的防刷,只能增加刷的成本