Giaosucan's blog - Chia sẻ kiến thức theo cách bá đạo

Ticker

20/recent/ticker-posts

Kiến trúc của FAANG 1 - Netflix Streaming


FAANG là tên viết tắt của 5 gã khổng lồ công nghệ (The Big5) lớn nhất nước Mỹ là Facebook, Amazon, Apple, NetFlix và Google. Được làm việc cho những giant tech này là ước mơ của nhiều kĩ sư IT vì chính sách đãi ngộ tốt, cơ hội skill up..

Facebook có hơn tỉ người dùng, một ngày FB generate khoảng 4+PTB dữ liệu

Google có khoảng 3.5 tỉ lượt tìm kiếm hàng ngày

WhatsApp user trao đổi 65 tỉ message hàng ngày

NetFlix xử lý video data stream lên tới 8 triệu event /s

Có bao giờ bạn đặt câu hỏi, họ làm như thế nào mà xử lý được lượng dữ liệu, user lớn như vậy ?? Biết thế éo nào được, đó là điều bí mật, chỉ có nhân viên công ty mới biết.Thật ra, các big tech đều xây dựng các engineering blog, nơi các kĩ sư của họ chia sẻ những giải pháp để thực hiện điều đó. Tuy không chi tiết, nhưng cũng đủ để bạn nắm được thông tin cơ bản

https://netflixtechblog.com/https://discord.com/…/how-discord-handles-two-and-half…https://github.com/andro…/awesome-google-engineering-blogshttps://engineering.zalopay.vn/how-we-apply-chaos…/https://engineering.linkedin.com/blog

Thật đáng tiếc là các giant tech của VN lại không có nhiều mô hình kiểu này. Chủ yếu là các technical blog của cá nhân, viết đam mê là chính, cộng thêm quả tạ ISM trên đầu nên bố dám

Bài này mở đầu series giới thiệu về kiến trúc của FAANG, được viết theo cách đơn giản, gần gũi với đời sống theo cách dễ hiểu nhất, ngay cả với người non-tech

Netflix

Thanh niên VN trước đây đã quen với mấy nền tảng phim lậu như phimmoi, javhay, xvideo. Mỗi lần bật lên xem là quảng cáo cờ bạc, tài xỉu pop up phọt ra như tiêu chảy. Thỉnh thoảng vào giờ cao điểm nhiều user truy cập là bắt đầu bị lag, giật cục. Sau đó Netflix vào VN 2016 cung cấp nền tảng phim trực tuyến toàn phim 4K, fullhd xem căng đét, không giật lag, quảng cáo đem lại trải nghiệm tuyệt vời cho người dùng.

Để có thể handle được hơn 230M users với số lượng phim lớn như vậy là cả một kiến trúc phức tạp đằng sau

Lightbox

Infra của Netflix được build trên cloud AWS. Nhưng để có thể tạo trải nghiệm xem phim trực tuyến cho hơn 200M user, Netflix đã xây dựng hẳn một program riêng là OpenConnect. Program này xây dựng một hệ thống máy chủ riêng gọi là Open Connect để giải quyết những vấn đề mà việc xem phim trực truyến đem lại.

Hệ thống máy chủ này cũng là thứ đã giúp cho hàng trăm ngàn gia đình cùng xem phim cùng lúc mà không gặp vấn đề gì. Open Connect được xây dựng khi Netflix nhận ra chắc chắn sẽ có lượng truy cập cực kỳ lớn trong tương lai mà họ sẽ phải gánh được.

Requirements for deploying embedded appliances – Netflix Open Connect  Partner Help Center

Trong dự án này, Netflix hợp tác với ISP ở từng nước. Ví dụ ở VN, Netflix hợp tác với FTP telecom, để peering connection giữa mạng FPT và Netflix network backbone. HIểu nhanh OpenConnect là một global CDN, các bản sao của video sẽ được cache tại máy chủ local, dưới nhiều định dạng khác nhau. Nếu ISP mạng trâu thì load bản high quality như 4K, Blueray, gặp hôm đứt cáp mạng cù nhầy thì tự chuyển xuống bản thấp hơn 720p, 360p, giúp việc trải nghiệm xem phim nhanh không bị giật lag. Tất cả việc này do OpenConnect xử lý

Đấy là phần frontend vậy backend thì sao, backend làm những việc ko liên quan đến play video mà là video processing, onboard new video, transcoding, encoding…

Video onboard content

Anh em trong giới thiên địa thường quen với những câu cửa miệng như xin link bản FULLHD không che, rõ đến từng sợi lông, phim blueray 4K, 1080p. Đó chính là những định dạng video encoding. Vì bản gốc chiếu rạp là phim 70mm IMAX hoặc 35mm dung lượng phải cả chục GB, để xem trên tivi hay trực tuyến, nó phải được encode thành định dạng khác như như 1080p, 4K

Như vậy để onboard một bộ phim, Netflix phải trải qua một quy trình transcoding/encoding video content mới đến được end user

Ví dụ, bạn muốn xem phim Transformer trên Android thì quy trình như sau

Video gốc 25G được cắt thành nhiều phần (Chunks) rồi thực hiện encoding/transcoding

Encoding là quá trình nén video gốc thành định dạng khác nhau để có thể xem được trên tivi, điện thoại. Transcoding sẽ break video encoded thành thành các encoding format khác như MP4, MPEG-4.. quá trình này tốn rất nhiều thời gian, nên Netflix break video gốc thành nhiều phần, build nhiều job trên EC2 chạy song song để thực hiện encoding/transcoding từng phần này để speed up, gọi là encoding pipeline. Sau khi encode xong thì từng phần video này sẽ được deploy vào CDN (Open Connect) để tới end user

Lightbox

Đó là quá trình encoding/transcoding, vậy Netflix làm sao để

  • Handle được lượng lớn user, authentication, monitoring, filter hàng tỉ request
  • Giải pháp Latency and Fault Tolerance cho hệ thống phân tán với hơn 1K microservices
  • Cơ chế caching của netflix có gì khác so với các hệ thống khác

Đón đọc phần sau

Đăng nhận xét

0 Nhận xét