Hầu như tất cả mọi người trên Internet đều đã trải nghiệm những lợi ích của Mạng phân phối nội dung (Content Distribution Network hat gọi tắt là CDN). Phần lớn các công ty công nghệ bao gồm các công ty như Google, Apple và Microsoft sử dụng CDN để giảm độ trễ khi tải nội dung trang web.
Một CDN thường sẽ đặt các máy chủ tại các điểm trao đổi giữa các mạng khác nhau. Các điểm trao đổi internet (Internet exchange points – IXP) này là các địa điểm chính mà các nhà cung cấp internet khác nhau liên kết với nhau để cung cấp cho nhau quyền truy cập vào các tài nguyên trên các mạng khác nhau của họ. Ngoài các IXP, một CDN sẽ đặt các máy chủ trong các trung tâm dữ liệu ở các vị trí trên toàn cầu tại các khu vực có lưu lượng truy cập cao và các vị trí chiến lược để có thể di chuyển lưu lượng truy cập nhanh nhất có thể.
Lợi ích chính của CDN là khả năng cung cấp nội dung nhanh chóng và hiệu quả. Tối ưu hóa hiệu suất CDN có thể được chia thành ba loại:
- Giảm khoảng cách – giảm khoảng cách vật lý giữa máy khách và dữ liệu được yêu cầu
- Tối ưu hóa phần cứng / phần mềm – cải thiện hiệu suất của cơ sở hạ tầng phía máy chủ, chẳng hạn như bằng cách sử dụng ổ cứng thể rắn và cân bằng tải hiệu quả
- Giảm truyền dữ liệu – sử dụng các kỹ thuật để giảm kích thước tệp để tải trang ban đầu diễn ra nhanh chóng.
Để hiểu những lợi ích của việc sử dụng CDN, hãy cùng khám phá việc truyền dữ liệu máy khách / máy chủ thông thường trông như thế nào khi không có CDN.
Sự khác biệt về thời gian tải khi có và không có CDN là gì?
Hãy tưởng tượng rằng ai đó ở New York cần truy cập một trang web được lưu trữ trên máy chủ ở Singapore. Khoảng cách vật lý giữa các địa điểm này là đáng kể, với khoảng cách vật lý khoảng 9.520 dặm.
Nếu máy chủ lưu trữ nội dung trang web (máy chủ gốc) được đặt tại Singapore, thì mỗi yêu cầu đối với mỗi nội dung trang web phải đi từ New York đến Singapore và quay lại lần nữa. Giống như thực hiện một chuyến bay quốc tế với nhiều kết nối trên đường đi, mỗi yêu cầu phải di chuyển qua một loạt bộ định tuyến dọc theo hành trình xa xôi của nó từ điểm A đến điểm B.
Nếu bạn muốn xem một ví dụ thực tế về số lượng kết nối (bước nhảy) khác nhau mà máy tính của bạn cần đến một dịch vụ web cụ thể từ vị trí hiện tại của bạn, hãy khám phá tiện ích theo dõi bằng máy tính để bàn.
Vì yêu cầu từ New York đến Singapore cần phải đi qua từng vị trí của bộ định tuyến trên đường đi, lượng thời gian (độ trễ) được tăng lên cả tổng khoảng cách và thời gian mỗi bộ định tuyến xử lý yêu cầu. Sau khi máy chủ gốc xử lý yêu cầu và trả lời máy khách đưa ra yêu cầu, sau đó nó sẽ gửi thông tin trở lại thông qua một chuỗi bộ định tuyến tương tự trước khi quay trở lại New York. Phép đo tổng số chuyến đi khứ hồi này được gọi trong viễn thông là RTT cho “thời gian khứ hồi”. Bỏ qua thời điểm băng thông khả dụng và khả năng tắc nghẽn mạng, hãy xem qua một ví dụ về các yếu tố độ trễ.
Để minh họa, hãy nói:
- Mất 250 mili giây cho một yêu cầu đi từ New York đến Singapore.
- Thiết lập kết nối TCP / IP sẽ thêm 3 trường hợp độ trễ 250ms.
- Trang web yêu cầu 5 nội dung duy nhất bao gồm hình ảnh, tệp JavaScript và chính trang web.
Hãy cùng xem trang web này sẽ mất bao lâu để tải:
- 750ms: Kết nối TCP / IP được thực hiện giữa máy khách ở New York và máy chủ gốc ở Singapore.
- 250ms: Yêu cầu HTTP cho trang web đi từ New York đến Singapore.
- 250 mili giây: Người yêu cầu ở New York nhận được phản hồi từ máy chủ gốc ở Singapore với mã trạng thái 200 và trang web bao gồm tất cả các nội dung bổ sung cần thiết.
- 250ms: Mỗi nội dung trong số 5 nội dung được yêu cầu bởi khách hàng ở New York.
- 1500ms: Năm nội dung được phân phối không đồng bộ đến khách hàng từ máy chủ gốc ở Singapore.
Trong ví dụ đơn giản này, tổng thời gian vận chuyển để tải trang web này là khoảng 3000 mili giây.
Như bạn có thể thấy, mỗi khi một yêu cầu được thực hiện và phản hồi được gửi đi, toàn bộ đường dẫn giữa khách hàng ở New York và gốc ở Singapore sẽ được chuyển qua. Khi các trang web trở nên lớn hơn và yêu cầu số lượng nội dung lớn hơn, độ trễ giữa điểm A và điểm B tiếp tục tăng lên.
Hãy xem lại ví dụ về nội dung được lưu trữ ở Singapore được phục vụ cho một ứng dụng khách web ở New York, nhưng hiện tại trang web Singapore đang sử dụng CDN với một máy chủ ở Atlanta có chứa bản sao được lưu trong bộ nhớ cache của trang web tĩnh:
- Mất 50ms cho một yêu cầu đi từ New York đến Atlanta.
- Thiết lập kết nối TCP / IP sẽ thêm 3 trường hợp độ trễ 50ms
- Trang web yêu cầu 5 nội dung duy nhất bao gồm hình ảnh, tệp JavaScript và chính trang web.
Hãy cùng xem trang web này sẽ mất bao lâu để tải bằng CDN:
- 150ms: Kết nối TCP / IP được thực hiện giữa máy khách ở New York và máy chủ biên ở Atlanta.
- 50ms: Yêu cầu HTTP GET cho trang web truyền từ máy khách đến máy chủ biên.
- 50ms: Máy khách nhận được phản hồi từ bộ đệm ẩn của máy chủ biên với trang web bao gồm danh sách tất cả các nội dung bổ sung vẫn được yêu cầu.
- 50ms: Mỗi nội dung trong số 5 nội dung được khách hàng yêu cầu.
- 800ms: Năm nội dung được phân phối không đồng bộ đến máy khách từ máy chủ biên.
Tổng thời gian vận chuyển để tải trang web này là khoảng 1100 mili giây.
Trong ví dụ này, việc giảm khoảng cách giữa máy khách và nội dung tạo ra sự cải thiện về độ trễ 1900ms cho nội dung tĩnh, thể hiện sự cải thiện gần 2 giây về thời gian tải.
Bằng cách giảm tổng khoảng cách mà tất cả lưu lượng truy cập cần thiết cần phải đi qua, mỗi người dùng đến trang web sẽ tiết kiệm được một lượng thời gian tải. Bởi vì người dùng bắt đầu rời khỏi trang web (thoát) rất nhanh khi thời gian chờ tăng lên, cải tiến này thể hiện cả trải nghiệm người dùng tốt hơn và thời gian người dùng trên trang cao hơn.
CDN tải nội dung như thế nào? Bộ nhớ đệm là gì?
Như đã đề cập trước đó, thông thường khi một ứng dụng khách yêu cầu một tệp từ một máy chủ gốc, yêu cầu cần phải đi vòng đến máy chủ đó và quay lại một lần nữa. CDN cải thiện độ trễ bằng cách kéo các tệp nội dung tĩnh từ máy chủ gốc vào mạng CDN phân tán trong một quá trình được gọi là bộ nhớ đệm. Một số CDN cũng sẽ có các tính năng nâng cao cho phép lưu nội dung động có chọn lọc. Sau khi dữ liệu được lưu vào bộ nhớ đệm, CDN sẽ phân phối nội dung cho máy khách từ trung tâm dữ liệu CDN gần nhất.
Sau khi thực hiện bắt tay TCP, máy khách thực hiện một yêu cầu HTTP tới mạng của CDN. Nếu nội dung chưa được lưu vào bộ nhớ đệm, trước tiên CDN sẽ tải xuống nội dung từ nguồn gốc bằng cách thực hiện một yêu cầu bổ sung giữa máy chủ gốc và máy chủ biên của CDN.
Dưới đây là 4 bước trong bộ nhớ đệm CDN điển hình:
- Khi người dùng yêu cầu một trang web, yêu cầu của người dùng sẽ được chuyển đến máy chủ biên gần nhất của CDN.
- Máy chủ biên sau đó đưa ra yêu cầu tới máy chủ gốc đối với nội dung mà người dùng yêu cầu.
- Nguồn gốc phản hồi yêu cầu của máy chủ biên.
- Cuối cùng máy chủ biên trả lời máy khách.
Giá trị của mức độ gần gũi của CDN với máy khách xảy ra sau khi yêu cầu ban đầu đến máy chủ gốc đã được thực hiện. Sau khi dữ liệu đã được lưu vào bộ nhớ đệm từ máy chủ gốc vào mạng của CDN, mỗi yêu cầu tiếp theo từ máy khách chỉ cần đến máy chủ biên gần nhất. Điều này có nghĩa là nếu máy chủ biên gần nhất gần hơn máy chủ gốc, độ trễ có thể được giảm bớt và nội dung có thể được phục vụ nhanh hơn nhiều.
Điều quan trọng cần lưu ý là lượng thời gian cần thiết để tải xuống nội dung và xử lý các yêu cầu và phản hồi hiện không được bao gồm; cho đến nay chỉ có thời gian vận chuyển cần thiết để chuyển thông tin giữa hai địa điểm này đang được tính toán. Các yếu tố độ trễ quan trọng khác mà chúng tôi sẽ khám phá bao gồm giảm dữ liệu, tốc độ đĩa cứng và tắc nghẽn mạng.
Làm cách nào để CDN giảm kích thước tệp để tăng tốc độ?
Để cải thiện thời gian tải trang, CDN giảm lượng truyền dữ liệu tổng thể giữa máy chủ bộ đệm của CDN và máy khách. Cả độ trễ và băng thông yêu cầu đều giảm khi tổng lượng dữ liệu được truyền giảm. Kết quả là tải trang nhanh hơn và chi phí băng thông thấp hơn. Hai thành phần chính đi vào sự giảm thiểu này:
Minification – thu nhỏ là quá trình mà các khối mã được giảm kích thước bằng cách loại bỏ tất cả các thành phần giúp con người hiểu điều gì đang xảy ra. Trong khi một kỹ sư cần tách các ý tưởng thành các tên biến, khoảng trắng và chú thích hợp lý để làm cho các khối mã có thể đọc được và có thể bảo trì, máy tính có thể chạy mã thành công với các ký tự đó đã bị loại bỏ.
Đây là cùng một khối mã trước và sau khi thu nhỏ:
Trước khi rút gọn: tám code
Sau khi rút gọn: giảm xuống một dòng code duy nhất
Bây giờ đoạn mã đã được giảm từ tám dòng xuống một dòng, kích thước tệp tổng thể cũng đã được giảm xuống. Điều này có nghĩa là mất ít thời gian hơn để chuyển tệp, giảm độ trễ và giúp tải nội dung nhanh hơn.
Nén tệp – nén tệp là một thành phần không thể thiếu trong việc giảm độ trễ và tiêu thụ băng thông cần thiết khi truyền dữ liệu qua Internet. GZip là một phương pháp nén phổ biến và được coi là phương pháp hay nhất để sử dụng khi chuyển các trang web. Nhiều nhà cung cấp CDN đã bật GZip theo mặc định. Mức tiết kiệm đáng kể từ việc nén GZip như thế nào? Thông thường, các tệp nén sẽ giảm khoảng 50% đến 70% kích thước tệp ban đầu.
CDN có thể sử dụng phần cứng nào để cải thiện tốc độ?
Liên quan đến việc tối ưu hóa phần cứng CDN, một lợi ích đáng kể đến từ việc sử dụng solid-state hard drives (SSD) thay vì ổ đĩa cứng truyền thống (hard disk drives – HDD); ổ cứng SSD có thể mở tệp nhanh hơn tới 30% so với ổ đĩa cứng truyền thống, đồng thời có khả năng phục hồi và đáng tin cậy hơn.
Tương tự như một máy ghi âm, một ổ đĩa cứng truyền thống bao gồm một đĩa kim loại quay tròn có lớp phủ từ tính để lưu trữ dữ liệu. Đầu đọc / ghi trên một cánh tay truy cập thông tin khi đĩa quay bên dưới nó. Quá trình này là cơ học và bị ảnh hưởng bởi tốc độ quay của đĩa. Với sự ra đời của ổ cứng thể rắn, kiểu ổ cứng cũ hơn đã trở nên ít được sử dụng hơn, mặc dù ngày nay chúng vẫn được sản xuất và đang được lưu hành rộng rãi trong nhiều hệ thống máy tính.
Solid-state hard drives (SSD) cũng là một dạng lưu trữ liên tục, nhưng có chức năng tương tự như ổ USB hoặc thẻ nhớ thường thấy trong các thiết bị như máy ảnh kỹ thuật số; không có bộ phận chuyển động. Nếu một đĩa cứng thông thường đang quay và hệ thống bị xáo trộn, ổ cứng có thể bỏ qua, dẫn đến lỗi đọc / ghi và có thể xảy ra thời gian chết. Một lợi ích quan trọng khác của SSD là truy cập các tệp bị phân mảnh. Phân mảnh tệp là tình trạng các phần của tệp nằm ở các vị trí khác nhau trên đĩa, dẫn đến việc truy cập ổ cứng HDD chậm hơn. Vì SSD có thể truy cập các vị trí bộ nhớ không liền kề một cách hiệu quả nên sự phân mảnh không phải là mối đe dọa đối với hiệu suất.