Netflix and Chill ư ??? Xem cách Netflix thiết kế hệ thống thú vị hơn đó
Chắc hẳn mọi người đã từng nghe đến hoặc từng netflix and chill rồi đúng không 😄
Lần tới thử kể cho người bạn cùng chill với mình, điều gì xảy ra trong hệ thống netflix khi chúng ta bấm nút play nha
Sau đây Sydexa.com cùng bạn khám phá cách Netflix hoạt động ngay thôi nào 😄
Bạn cho chúng mình xin 1 upvote và comment để chúng mình nhận giải của viblo nha. Và chúng mình có động lực ra những bài viết thú vị hơn nữa 😄😄😄
Chúng mình có tạo Group cho các bạn cùng chia sẻ và học hỏi về thiết kế hệ thống nha 😄😄😄
Các bạn tham gia để gây dựng cộng đồng System Design Việt Nam thật lớn mạnh nhé 😍😍😍
Cộng Đồng System Design Việt Nam: https://www.facebook.com/groups/sydexa
Kênh TikTok: https://www.tiktok.com/@sydexa.com
Kiến trúc hệ thống của Netflix
Kiến trúc hệ thống của Netflix sẽ bao gồm các phần chính là thiết bị xem netflix (tất nhiên rồi 😂), backend và mạng phân phối nội dung (CDN)
Bạn có thể dùng điện thoại, máy tính bảng, laptop hay cũng có thể là smart TV. Tất cả sẽ gọi chung là phía Client
Backend của Netflix được triển khai trên dịch vụ của AWS (Amazon Web Services). Backend sẽ chịu trách nhiệm xử lý tất cả mọi thứ trước khi người dùng bắt đầu xem phim. Ví dụ như cá nhân hóa nội dung hoặc xử lý thanh toán.
Hệ thống backend của Netflix bao gồm đến 700 microservices, về cơ sở dữ liệu thì họ chọn DynamoDB và Cassandra databases.
Hệ thống backend của Netflix được chạy ở nhiều vị trí địa lý khác nhau trên thế giới để đảm bảo Server luôn ổn định
Trong khi đó CDN sẽ xử lý tất cả những công việc sau khi người bắt đầu ấn nút Play ▶️
CDN (Content Delivery Network) tạm dịch là mạng phân phối nội dung.
Nó sẽ lưu nội dung ở nhiều vị trí địa lý khác nhau, và khi cần lấy nội dung, thiết bị người dùng sẽ lấy nội dung từ nơi được lưu trữ gần nhất đó
Nhưng để tạo trải nghiệm người dùng trơn tru nhất, Netflix đã xây dựng hệ thống CDN riêng có tên OCA (Open Connect Appliance) để lưu trữ và truyền Video đến phía người dùng một cách nhanh và chính xác nhất
OCA của Netflix được tạo ra và được tối ưu hóa cho việc truyền tải các file có dung lượng lớn. Các máy OCA sẽ xử dụng hệ điều hành FreeBSD và dùng Nginx webserver.
Khi người dùng bấm nút play, Netflix sẽ tìm máy OCA gần đó nhất và nhận nội dung phim từ đó
Trong trường hợp quá tải hay lỗi OCA, Netflix sẽ tự động tìm một máy OCA khác gần đó để nhận tiếp nội dung.
Netflix đã đặt OCA gần nhà của bạn bằng cách đặt nó ở các nhà cung cấp dịch vụ internet (IPS). Giúp cho Netflix có thể đáp ứng số lượng người dùng lớn và tạo ra chất lượng hình ảnh tốt nhất. Một số IPS ở Việt Nam có thể kể đến như FPT, Viettel, VNPT,...
Và nếu như các nhà cung cấp dịch vụ không cho cài đặt OCA. Netflix sẽ tiêu thụ nhiều băng thông hơn và gây ra tắc nghẽn mạng. Nói một cách khác, các nhà cung cấp dịch vụ Internet sẽ phải mua thêm băng thông mạng nếu không có OCA
Do đó việc cài đặt OCA tại các IPS sẽ là một mối quan hệ đôi bên cùng có lợi.
Netflix có kho phim vô cùng đồ sộ, nếu lưu tất cả các bộ phim vào các OCA thì chi phí rất đắt đỏ. Cho nên Netflix sẽ dự đoán nhu cầu xem phim ở từng khu vực để sao chép những bộ phim thích hợp đến OCA. Việc sao chép này diễn ra vào ban đêm, khi mà phần lớn mọi người đã ngủ và có nhiều băng thông mạng.
Những lợi ích của OCA mang lại là:
- Chất lượng Video đạt chất lượng cao vì kiểm soát được luồng đi của Video
- Giảm thiểu chi phí đáng kể nếu so với việc dùng CDN của bên khác
- Dễ dàng mở rộng do đã kiểm soát được toàn bộ hệ thống mà không bị phụ thuộc vào bên khác
Cách mà Netflix chuyển định dạng phim
Netflix có thể đáp ứng được 2200 loại thiết bị khác nhau, nhưng mỗi thiết bị chỉ có một loại format video nhất định là thích hợp. Do đó với mỗi Video, Netflix sẽ chuyển đổi thành rất nhiều các định dạng khác nhau
Khi người dùng nhấn nút play, Netflix sẽ biết được thiết bị đang dùng và chọn loại định dạng phù hợp nhất với thiết bị
Nhà làm phim sẽ gửi phim với định dạng cao đến Netflix. Và bản gốc của phim sẽ được lưu ở trên dịch vụ Amazon S3. Netflix sau đó chuyển video thành nhiều định dạng để phù hợp với nhiều loại thiết bị khác nhau.
Mỗi video sau đó sẽ được cắt ra thành các đoạn nhỏ được gọi là chunks để phục vụ cho việc Adaptive Bitrate Streaming
Adaptive Bitrate Streaming là một phương pháp giúp cho tự điều chỉnh linh hoạt chất lượng video dựa trên tốc độ mạng và thiết bị của người xem, giúp cho trải nghiệm xem video mượt mà không bị gián đoạn ngay cả khi điều kiện mạng thay đổi
Ngoài ra một mã đặc biệt sẽ được thêm vào Video để ngăn chặn việc ăn cắp bản quyền. Nó được gọi là quản lý điện tử Digital Rights Management (DRM). Nó sẽ mã hóa nội dung video và ngăn chặn việc truy cập video trái phép
Vậy Netflix truyền Video đi như thế nào nhỉ?
Bước 1: Netflix client sẽ gửi yêu cầu xem phim đến backend tại AWS
Bước 2: Backend sẽ trả về danh sách 10 điểm truyền phát video (OCA) gần người dùng nhất
Bước 3: Netflix ở thiết bị người dùng sẽ chọn ra điểm phát video tốt nhất trong số đó, việc chọn lựa sẽ dựa trên việc kiểm tra chất lượng kết nối mạng
Bước 4: Netflix ở thiết bị người dùng sẽ kết nối tới OCA và truyền Video theo từng chunks về thiết bị
Và đó là một tour cùng Sydexa khám phá hệ thống của Netflix và trả lời câu hỏi "Làm thế nào mà Netflix có thể mượt đến như vậy?". Hãy follow chúng mình trên fanpage để nhận được những bài viết sớm nhất nha 😍
Nếu thấy bài viết này hay thì cho chúng mình xin 1 upvote và comment để chúng mình nhận giải của viblo nha 😄😄😄
Lời nhắn
Chúng mình có tạo Group cho các bạn cùng chia sẻ và học hỏi về thiết kế hệ thống nha 😄😄😄
Các bạn tham gia để gây dựng cộng đồng System Design Việt Nam thật lớn mạnh nhé 😍😍😍
Cộng Đồng System Design Việt Nam: https://www.facebook.com/groups/sydexa
Kênh TikTok: https://www.tiktok.com/@sydexa.com
All Rights Reserved