0
0
Lập trình
TT

Khám Phá Hệ Thống Bán Vé Ngoại Hạng Anh: Giải Pháp Từ Seatgeek

Đăng vào 2 ngày trước

• 5 phút đọc

Khám Phá Hệ Thống Bán Vé Ngoại Hạng Anh: Giải Pháp Từ Seatgeek

Chắc hẳn nhiều bạn đã từng trải nghiệm việc mua vé cho các buổi hòa nhạc hay trận bóng đá. Để xây dựng một nền tảng bán vé trực tuyến phục vụ nhu cầu của hàng triệu người yêu thích thể thao và nghệ thuật, chúng ta phải đối mặt với không ít thách thức, đặc biệt là trong những sự kiện lớn mà số lượng người dùng tăng vọt.

Hôm nay, hãy cùng sydexa.com khám phá Seatgeek - một trong những nền tảng bán vé hàng đầu thế giới, cung cấp dịch vụ cho Ngoại Hạng Anh và các câu lạc bộ thể thao lớn như LiverpoolManchester City. Seatgeek đã thành công xử lý hàng trăm nghìn yêu cầu mỗi phút mà không gặp sự cố về hiệu suất. Vậy họ đã làm điều đó như thế nào? Hãy cùng tìm hiểu!


Chúng mình đã tạo một nhóm cho những ai đam mê thiết kế hệ thống để cùng nhau chia sẻ và học hỏi. Rất mong bạn tham gia để cùng phát triển cộng đồng System Design Việt Nam!

Cộng Đồng System Design Việt Nam: https://www.facebook.com/groups/sydexa
Kênh TikTok: https://www.tiktok.com/@sydexa.com

1. Các Thách Thức Của Hệ Thống Bán Vé

  • Lượng Truy Cập Tăng Đột Biến: Trong các sự kiện lớn, lượng người truy cập vào Seatgeek có thể tăng đột biến, tạo ra áp lực lớn lên hệ thống. Các giải pháp như autoscaling thường không đủ nhanh chóng để ứng phó với tình huống này.
  • Vấn Đề Mua Vé Đồng Thời: Nhiều người có thể cố gắng đặt cùng một chỗ ngồi cùng lúc, vì vậy cần có cơ chế xử lý để đảm bảo tính công bằng.
  • Chống Gian Lận: Hệ thống cần áp dụng biện pháp bảo mật mạnh để ngăn chặn việc người dùng mua vé với số lượng lớn nhằm bán lại với giá cao.
  • Tối Ưu Hóa Trải Nghiệm Người Dùng: Giao diện hệ thống cần phải dễ sử dụng, nhanh nhạy và đáng tin cậy để thu hút và giữ chân người dùng.

2. Phòng Chờ Ảo (Virtual Waiting Room)

Một giải pháp quan trọng mà Seatgeek áp dụng là phòng chờ ảo. Khi bạn vào trang bán vé trước giờ mở bán, bạn sẽ được đưa vào phòng chờ ảo để chờ đợi phiên mở bán. Khi sự kiện bắt đầu, bạn sẽ được xếp hàng để mua vé. Điều này giúp hệ thống quản lý luồng người dùng hiệu quả hơn.

Phòng chờ ảo có hai chế độ hoạt động chủ yếu:

  • Chế Độ Chặn: Không cho phép người dùng truy cập trước khi sự kiện bắt đầu.
  • Chế Độ Xếp Hàng: Khi sự kiện bắt đầu, các người dùng sẽ được đưa vào hàng đợi và xếp theo thứ tự đến, đảm bảo công bằng.

Trong quá trình mua vé, nếu gặp sự cố như thẻ bị từ chối, bạn có thể từ bỏ để nhường cơ hội cho người khác, qua đó, phòng chờ ảo giúp điều tiết lượng truy cập mà không làm hệ thống bị quá tải.

3. Giảm Tải Cho Backend

Fastly là nền tảng điện toán biên góp phần quan trọng trong việc quản lý và bảo vệ các trang bán vé. Fastly tương tác với người dùng và máy chủ backend, giúp xử lý các yêu cầu, xác thực người truy cập và điều hướng người dùng, qua đó giảm tải cho backend.

4. Quy Trình Hoạt Động Của Hệ Thống

Trạng Thái Phong Tỏa

Ban đầu, khi chưa mở bán vé, khu vực bảo vệ ở trạng thái phong tỏa. Khi người dùng cố gắng truy cập, Fastly sẽ chuyển hướng đến trang phòng chờ ảo.

Mở Bán và Cuộc Đua Bắt Đầu

Khi thời gian mở bán được công bố, khu vực bảo vệ chuyển sang trạng thái điều tiết. Mỗi người dùng sẽ nhận được một visitor token độc nhất để tham gia hàng đợi ảo.

Chạy Đua Vào Hàng Đợi

Tại trang xếp hàng, JavaScript sẽ mở kết nối WebSocket với API gateway, cho phép giao tiếp hai chiều. Visitor token sẽ được gửi qua kết nối này để đăng ký vào hàng đợi ảo. Thời gian tham gia hàng đợi sẽ được ghi lại trong DynamoDB.

Trao Đổi Visitor Token

Một hàm xử lý (Exchanger function) định kỳ sẽ cập nhật visitor token và gửi access token đến người dùng qua kết nối WebSocket.

Đến Lượt Thì Mời Bạn Đặt Vé

Với access token, người dùng truy cập để mua vé. Toàn bộ quy trình được thực hiện qua Fastly, đảm bảo tính bảo mật và tốc độ.

5. Thuật Toán Leaky Bucket

Hệ thống kiểm soát lưu lượng truy cập bằng mô hình leaky bucket. Mỗi khu vực bảo vệ sẽ có xô riêng với tốc độ cho phép yêu cầu qua.

6. Tại Sao Là Lambda?

Hệ thống sử dụng AWS Lambda vì nó tách biệt với môi trường sản phẩm, dễ dàng mở rộng và linh hoạt.

7. Thách Thức Đồng Bộ Với Fastly

Hệ thống phòng chờ ảo cần đồng bộ dữ liệu giữa bộ nhớ đệm trên Fastly và DynamoDB. Giải pháp được sử dụng là transactional outbox pattern, giúp đơn giản hóa kiến trúc hệ thống.

Đó là một cái nhìn tổng quan về hệ thống bán vé phục vụ hàng triệu người dùng trên toàn thế giới.


Lời Nhắn

Xin hãy tham gia nhóm chúng tôi để cùng chia sẻ và học hỏi về thiết kế hệ thống! Chúng ta có thể xây dựng một cộng đồng System Design Việt Nam thật vững mạnh!

Cộng Đồng System Design Việt Nam: https://www.facebook.com/groups/sydexa
Kênh TikTok: https://www.tiktok.com/@sydexa.com


Đọc Thêm

Buổi Trình Bày Của Các Kỹ Sư Seatgeek: https://www.infoq.com/presentations/ticketing-system-virtual-waiting-room
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào