Cách bộ đếm view của youtube hoạt động

                             Cách bộ đếm view của youtube hoạt động

Có bao giờ bạn để ý rằng, khi đăng một video lên youtube, lượt view từ video của bạn thường hay đóng băng trong một khoảng thời gian nào đó không? Vậy tại sao lại lại có sự dừng lại đó, cách youtube đếm lượt view như thế nào?

Khi bạn nhấn vào một video như thế này:

 

Thì bạn đang gửi tới server một yêu cầu trả về nội dung video để bạn được xem. Tuy nhiên có rất nhiều server lưu trữ những bản copy của video này. Tùy thuộc vào vị trí mà bạn đang ở, hệ thống sẽ lựa chọn server gần nhất và trả video đó về cho bạn.


 

Lý do của việc phân tán nhiều server như vậy là để tăng tốc độ truyền tải. Đó cũng là lý do bạn xem video trên youtube nhanh hơn nhiều so với việc xem video trên các trang xem phim trực tuyến nhỏ. (Đặc biệt một số trang web xem phim lậu chỉ thuê server nước ngoài, dẫn đến tốc độ phim chậm hơn rất nhiều)

Chính vì có nhiều server khác nhau, cho nên bộ đếm view cũng sẽ nằm rải rác khác nhau.



Đúng vậy, lượt view được đếm ở các server là khác nhau, server tổng lúc này sẽ cần phải cập nhật view từ các server con khác.



Để lượt +view thêm vào server tổng, chúng cần phải thông qua bước verify ( kiểm chứng). Đối với những video nhỏ hơn 301 view, việc kiểm chứng không quan trọng (Là lý do khi bạn refresh liên tục clip youtube mới đăng thì lượt view của bạn tăng nhanh). Từ view thứ 301 trở lên, youtube thực hiện đóng băng bộ đếm để thực hiện kiểm chứng xác minh những view tiếp theo, để đảm bảo video không có bot tăng view. Một số cách kiểm chứng có thể kể đến như:

- Kiểm chứng hành động click vào video là do con người thực hiện

- Kiểm chứng lượt view này xem video từ 30s trở lên

- Kiểm chứng những lượt view này có phát sinh từ cùng một thiết bị hay không (youtube quy định giới hạn 4 - 5 views trên một thiết bị trong vòng 24 giờ)

-...

Thời gian đóng băng có thể kéo dài nửa ngày hoặc vài ngày, để hạn chế. Sau khi kết thúc đóng băng thì lượng view sẽ cập nhật lại như bình thường.

Nhưng tại sao lại 301 mà không phải 300? Đơn giản vì người viết code đã viết đại khái như sau:

If(view_counting<=300) view_counting++;

Else go_to_view_count_checking_pipeline(view_counting)

 

Với logic này, tại view thứ 300, nó vẫn đúng với vế đầu và cộng view_counting lên thành 301.

Tuy nhiên, một số trường hợp lượt view lại đóng băng ở 302, 305, 310. Lý do đơn giản là vì lượt view này trả về cho server tổng cùng một lúc.





Tổng kết lại: Đây là một bài viết mới sau một thời gian dài không viết. Lời văn còn lủng củng, hi vọng mọi người thông cảm ;>

Bài viết thuộc về Lê Công Diễn. Mang đi nhớ ghi nguồn! 


Nhận xét

Bài đăng phổ biến từ blog này

Deploy project Springboot MIỄN PHÍ sử dụng Render

Ứng dụng Mã hóa bất đối xứng (Asymmetric cryptography) vào Chữ ký số (Digital Signature)

API và HTTP - Một số khái niệm cơ bản cần biết về Web (Phần 2)