Intro
設計要點
User 限制
- 在 User Base 系統中,驗證使用者購票資格後,應對該使用者的 status 資料列進行鎖定(row-level lock),以防止同一使用者在高併發情況下同時發起多個搶票請求,從而超過購票數量上限。
即時搶票模型
-
實際搶票操作可使用高效能且支援 ACID 的資料結構來實現,例如使用 Redis String 存庫存數量配合 DECR 指令取票,確保票數正確扣減。
-
Ticket Database 預載策略:活動開始前,可將 ticket 的 ID 或 Token 從 Database 導入 Redis (如使用 LIST 或 QUEUE 結構),使用者搶票時直接從 Redis 取票 (Popup)。
排隊消化模型
- 搶票請求會立即產生 MQ 訊息,由 consumer worker 確保 ACID 處理更新票務狀態。