System Design

Web xem phim gánh vạn người xem thế nào? CDN kết hợp P2P qua WebRTC

Tóm tắt

Video được cắt thành các đoạn (segment) vài giây. Thay vì CDN gửi segment cho từng người, trình phát của những người đang xem cùng đoạn chia sẻ cho nhau qua WebRTC. Nếu một “hàng xóm” rời đi, trình phát quay về CDN để tải bản gốc nên video không bị khựng.

Cơ chế qua ví dụ

BướcĐiều xảy ra
Cắt videoVideo chia thành segment vài giây (HLS/DASH).
Phân phối9 người xem cùng một đoạn: CDN chỉ gửi 2 bản, 7 bản còn lại chuyền qua WebRTC giữa người xem.
Có người rời điGói đang chuyền bị rơi → trình phát lập tức tải lại từ CDN, phim không khựng.
Kết quả (2 segment)CDN 5 lượt, người xem tự chuyền 14 lượt.

Áp dụng thế nào?

  • Khi nào đáng dùng: livestream hoặc nội dung có rất nhiều người xem cùng lúc — chi phí băng thông CDN giảm đáng kể.
  • Luôn có CDN dự phòng: P2P chỉ là lớp tối ưu; trải nghiệm phải không phụ thuộc vào việc có peer hay không.
  • Minh bạch với người dùng: trình duyệt của họ đang dùng băng thông upload để chia sẻ cho người khác — cần nêu rõ trong điều khoản, và tránh bật trên mạng di động.
  • Công cụ tham khảo: các thư viện P2P cho HLS.js/Shaka Player, hoặc dịch vụ thương mại có hybrid CDN-P2P.