| 實體 | 關鍵欄位 | 說明 |
| Cinema (影城) | id, name, address, api_endpoint, api_key | 每間影城獨立 API 入口 |
| Movie (電影) | id, title, duration, poster_url, release_date | 基礎資訊,平台維護 |
| Hall (影廳) | id, cinema_id, name, seat_map_json | 座位圖 JSON 存儲 |
| Schedule (排期) | id, cinema_id, movie_id, hall_id, start_time, end_time, price_json | 價格含區間、優惠規則 |
| SeatLock (座位鎖) | schedule_id, seat_no, user_id, expire_at, status | Redis 實現,TTL 自動釋放 |
| Order (訂單) | id, user_id, schedule_id, seats, amount, status, create_time | 狀態:鎖定/支付中/完成/取消 |
資料同步流程
- 影城推送:影城系統主動呼叫平台
/api/v1/schedules/sync 推送排期與座位圖。
- 平台輪詢:定時任務每 5 分鐘呼叫影城
/open/api/schedules 拉取最新余票、價格。
- Webhook 回調:訂單支付成功 → 平台通知影城核銷座位。
API 閘道設計
- 統一入口:
api.gateway.com/v1/...
- 鑑權:JWT + 影城 API Key 白名單。
- 限流:令牌桶,單影城 100 QPS。
- 熔斷:Hystrix/Resilience4j,影城 API 失敗率 > 50% 熔斷 30 秒。
查詢介面:余票與價格
GET /api/v1/schedules/{scheduleId}/availability
Response: {
"scheduleId": 123,
"priceTiers": [{"zone":"VIP","price":80,"available":12}, {"zone":"A","price":50,"available":45}],
"seatMap": "base64_gzipped_json"
}
總結
電影票務平台核心在於「標準化 API 閘道對接異構影城系統」,資料庫設計以排期為中心,座位鎖用 Redis 高併發控制,雙向同步保證余票價格準確。參考貓眼、淘寶票務架構可進一步細化微服務拆分。
- 上一篇文章: CentOS 開發板 Telnet 連線失敗:防火牆、服務啟動與 IP 確認排查步驟
- 下一篇文章: C 語言陣列溢出警告與執行時檢查失敗:緩衝區寫入越界與棧損毀分析
Copyright ©
程式碼之家 All Rights Reserved