- 秒殺系統面臨的技術挑戰:
- 訪問量大,對網絡帶寬要求高
- 系統如何支持瞬間的高併發
- 如何防止商品超賣
- 如何防刷、防黃牛等
- 解決方案:
- CDN緩存,nginx+lua實現活動數據緩存2秒
- 高併發:限流、防刷
- 超賣:使用redis實現原子性的操作
- 防刷:openresty lua 實現限流、驗證黑名單等
- 黑名單機制:手動/自動收集ip、userid信息,加入到黑名單庫或者黑洞
部署方案:
nginx +(必要的時候可以按照userid hash) 10臺openresty + tomcat + codis集羣秒殺活動維護:
- 活動類型:秒殺、搶購、預售
- 支持商品類型:套裝、單品
- 預約時間、秒殺時間等
- 是否需要驗證手機號
- 秒殺後臺邏輯-需要控制的幾個點:
- 搶購總量
- 相同活動的相同商品,購物車裏只能存在一條
- 每人最大搶購次數
- 每人每次最大購買數量(一次只支持購買一個套裝)
- 其它實現搶購的思路:
- 小米的排隊方案:http層接收請求後放入隊列
- 通過走促銷:redis lua實現原子性的驗證邏輯,成功後,寫入隊列(隊列可以降級)