Giao diện
Case study: đặt vé không trùng
Rạp phim, chuyến bay, phòng khách sạn: hai người không được đặt cùng một chỗ.
Dàn ý
- Yêu cầu: chọn chỗ, giữ chỗ trong vài phút, thanh toán, huỷ.
- Chặn trùng: UNIQUE (suất chiếu, ghế), khoá dòng, compare-and-set trạng thái ghế.
- Giữ chỗ có hạn:
held_until, job thu hồi, hoặc TTL trên Redis. - Tải đột biến khi mở bán: hàng đợi ảo (waiting room).
- Thanh toán và giữ chỗ: saga, bù trừ khi thanh toán thất bại.