CDN là gì?

(Ngày: 03/07/2019)
CDN hiện nay đã trở nên rất quen thuộc với người dùng, nhưng liệu bạn có biết được CDN giúp giảm tải Server hiệu quả thông qua nguyên tắc hoạt động của nó. Nếu bạn đang sử dụng CDN hoặc có dự định thuê CDN thì hãy tham khảo ngay bài viết này nhé.

CDN là gì?

CDN là chữ viết tắt của Content Delivery Network, có thể tạm dịch là “Mạng lưới phân phối thông tin”. CDN là một hệ thống các server phân tán khắp thế giới nhằm đưa nội dung đến người dùng một cách nhanh nhất dù ở bất kỳ đâu. Nó sẽ dựa nào vị trí địa lý của người dùng và các server dùng để lưu trữ thông  tin.

CDN đóng vai trò quan trọng trong việc tăng tốc truyền tải dữ liệu. Và nó thật sự quan trọng đối với những website có ý định phát triển toàn cầu, vươn đến mọi châu lục. Chẳng hạn, một người ở TP HCM muốn nhận tệp tin từ Mỹ thì phải mất nửa vòng Trái Đất. Rõ ràng người ấy sẽ mất rất nhiều thời gian hơn nếu tệp tin ấy được gửi từ Singapore hay Nhật Bản.

CDN hoạt động thế nào?

Nguyên tắc hoạt động

Nguyên tắc hoạt động của CDN đó là phân bố dữ liệu ở nhiều server trên thế giới. Server có khoảng cách gần với người dùng nhất sẽ được dùng để gửi dữ liệu đến họ.

Vậy liệu bạn có thắc mắc bằng cách nào mà CDN có thể tìm được máy chủ gần người dùng nhất để cho phép gửi tập tin từ đó mà không phải từ máy chủ khác. Bởi chúng ta chỉ có 1 đường link duy nhất, gửi 1 request từ brower trong khi lại có rất nhiều server?

Hãy đi tìm ngay câu trả lời bằng cách tìm hiểu về cách định tuyến (routing) trong CDN.

Request Routing

Hiện CDN có ba định tuyến, đó là DNS Request (Định tuyến sử dụng DNS), Transport Layer Request Routing (Định tuyến ở tầng vận tải) và cuối cùng là Application-layer Request Routing (Định tuyến ở tầng ứng dụng).

Cả 3 cách trên đều khá phức tạp và đòi hỏi có kiến thức cao về network protocol. Hơn hết đây chỉ là các phân tích của chuyên gia chứ không phải của bản thân nhà cung cấp dịch vụ CDN.

Tuy nhiên, bạn cũng có thể hình dung Transport Layer Request Routing đó là:

  • Sau khi nhận kết quả từ DNS Server, người dùng gửi request đến địa chỉ IP của POP1 (Original Server). Đây là một địa chỉ IP ảo (Virtual IO – VIP).
  • TLRS ở tầng POP1 sẽ kiểm tra thông tin của người dùng, kiểm tra trong các Edge Server của nó xem server nào thích hợp nhất để trả gói tin. Sau khi đã xác định được Edge Server thích hợp, POP1 sẽ chuyển tiếp request của người dùng đến Edge Server đó (POP2).
  • Sau khi kiểm tra thông tin được gửi từ POP1, POP2 sẽ đổi địa chỉ IP nguồn của nó theo IP ảo của POP1, rồi từ đó gửi tập tin lại cho người dùng. Khi nhận được tập tin, trình duyệt của người dùng vẫn tin rằng nó nhận được từ POP1 mà sẽ tiếp tục gửi các request tiếp theo.

Vai trò của CDN trong việc giảm tải Server

Tăng tốc độ, tiết kiệm băng thông

Mỗi một request đến các link có trong tập tin HTML đầu tiên, bao gồm các link CSS, Javascript, video, hình ảnh,… trình duyệt sẽ gửi một request lên địa chỉ đó. Nhưng nếu bạn sử dụng CDN thì thay vì request lên server của chúng ta, trình duyệt sẽ gửi request lên một server khác. Nhờ đó giảm được lưu lượng truy cập đến server hiện tại. Và hơn hết là tốc độ truyền tải cũng sẽ được đảm bảo ở mức tốt nhất.

Tập tin có thể được lưu lại cache của trình duyệt

Hiện nay có rất nhiều website sử dụng CDN. Chẳng hạn như jQuery hay Bootstrap. Nếu người dùng truy cập đến trang web có sử dụng thư viện jQuery của bạn mà máy tính họ đã truy cập vào một website cũng sử dụng thư viện đó với nhà cung cấp CDN như bạn thì trình duyệt của họ sẽ không cần gửi request đi đâu cả mà sẽ load lại từ cache ra. Chính vì vậy mà tốc độ được cải thiện một cách không ngờ.

Load được nhiều tập tin tại một thời điểm

Thông thường các trình duyệt sẽ giới hạn số lượng request đến một domain tại một thời điểm nhất định và con số này thường là 4. Vậy nếu bạn có request vượt số lượng cho phép  chẳng hạn như 5 đến cùng một domain thì trình duyệt sẽ đợi cho ít nhất 1 trong 4 request đang chạy được hoàn thành rồi mới đến request số 5.

Chính vì vậy, thông qua việc phân tán request sang một server khác (CDN), bạn không chỉ giảm được số lượng request lên server của mình mà còn cho trình duyệt có cơ hội thực hiện request khác cùng thời điểm.

Các phiên bản đều được quản lý

Quản lý các phiên bản (version control) là chức năng có sẵn của các dịch vụ CDN. Với vai trò là nhà phát triển web, bạn sẽ dễ dàng xác định tập tin nào với phiên bản nào cần gửi cho người dùng mà không lo mất mát hay bị lỗi.

Cơ sở hạ tầng tốt

Hiện nay có rất nhiều nhà cung cấp CDN uy tín chất lượng, bạn có thể đăng ký để dùng thử trước khi quyết định có nên mua (tùy nhà cung cấp). Do vậy, bạn có thể hoàn toàn tin tưởng rằng các tập tin sẽ luôn được truyền đến đích khi sử dụng CDN.

Phân tích người dùng

Đây là một chức năng rất có ích cho người dùng. Khi thuê một dịch vụ CDN cũng đồng nghĩa với việc bạn có một dịch vụ phân tích người dùng. Từ đó, bạn sẽ biết được ai, ở đâu, thời gian nào truy cập vào dịch vụ của bạn, qua đó giúp tìm ra những biện pháp thích hợp để cải thiện chức năng hệ thống.

Sử dụng CDN cần lưu ý những gì?

Không phải lúc nào CDN cũng nhanh hơn nếu tập tin đó chỉ được truy cập thông qua website của bạn hay khi bạn sở hữu một server đủ nhanh thì tốc độ có thể nhanh hơn server của CDN. Một ví dụ cụ thể đó là người dùng truy cập từ Việt Nam và server của bạn đặt ở Việt Nam thì có thể sẽ nhanh hơn CDN. Bởi CDN đặt server gần nhất là tại Singapore chứ không phải ở nước ta.

Không phải lúc nào CDN cũng là lựa chọn tốt bởi nếu bạn chỉ muốn hướng đối tượng người dùng đến một quốc gia nhất định. Tức là bạn không có ý định toàn cầu hóa website của mình thì việc dùng CDN có thể trở nên thừa thải, không cần thiết.

Không phải công ty nào cũng đủ khả năng xây dựng một hệ thống CDN cho mình do nó quá phức tạp và đòi hỏi sự tham sự của nhiều bên liên quan ở nhiều quốc gia. Chính vì vậy, việc sử dụng các dịch vụ cung cấp CDN là lựa chọn thích hợp. Nên khi bạn lựa chọn thì ngoài vấn đề giá cả thì việc bảo mật thông tin cũng cực kỳ quan trọng. Nếu tập tin Javascript của bạn đã bị chỉnh sửa, cài mã độc thì sẽ gây nguy hiểm cho người dùng và website của bạn.

Khi bạn deploy server với các tập tin tĩnh (Javascrit, CSS, Video, Ảnh,…) cần đẩy lên server của CDN thì cũng có nghĩa là công việc deploy của bạn sẽ trở nên phức tạp và rủi ro. Vì thế cần đảm bảo cơ chế deploy của mình một cách tốt nhất để tránh gây ra các lỗi không đáng có.

viblo.asia