Design a ticket booking system like BookMyShow
Design a large-scale ticket booking platform (movies, concerts) handling high-concurrency seat reservations.
Core components to cover:
- Seat inventory service — real-time seat availability, partitioned by event/venue
- Seat locking — temporary reservation (Redis TTL lock, ~5–10 min) to prevent double-booking; compare pessimistic DB locks vs. optimistic CAS
- Traffic management — virtual waiting rooms, token-based queue, rate limiting at the API gateway to absorb flash-crowd spikes
- Booking flow — lock seat → initiate payment → confirm/release on success/timeout
- Data model — events, venues, seat maps, bookings; read-heavy catalog vs. write-critical reservation path
Key trade-offs: strong consistency for seat assignment (unavoidable) vs. eventual consistency for catalog/search; scale-out via event-level sharding. Follow-ups often include notification delivery, PDF ticket generation, and cancellation/refund workflows.
asked …