Thứ tư, 01/08/2018 | 00:00 GMT+7

Sử dụng CDN để tăng tốc độ phân phối nội dung tĩnh

Các trang web và ứng dụng hiện đại thường phải cung cấp một lượng nội dung tĩnh đáng kể cho user cuối. Nội dung này bao gồm hình ảnh, bảng định kiểu, JavaScript và video. Khi các nội dung tĩnh này phát triển về số lượng và kích thước, việc sử dụng băng thông sẽ tăng lên và thời gian tải trang tăng lên, làm giảm trải nghiệm duyệt web cho user của bạn và giảm dung lượng khả dụng của server .

Để giảm đáng kể thời gian tải trang, cải thiện hiệu suất và giảm chi phí băng thông và cơ sở hạ tầng, bạn có thể triển khai CDN, hoặc c ontent d elivery n etwork, để lưu vào cache các nội dung này trên một tập hợp các server được phân phối theo địa lý.

Trong hướng dẫn này, ta sẽ cung cấp tổng quan cấp cao về CDN và cách chúng hoạt động, cũng như những lợi ích mà chúng có thể cung cấp cho các ứng dụng web của bạn.

CDN là gì?

Mạng phân phối nội dung là một group server được phân phối theo địa lý được tối ưu hóa để cung cấp nội dung tĩnh cho user cuối. Nội dung tĩnh này có thể là hầu hết mọi loại dữ liệu, nhưng CDN được sử dụng phổ biến nhất để cung cấp các trang web và các file liên quan của chúng, phát trực tuyến video và âm thanh cũng như các gói phần mềm lớn.

Sơ đồ phân phối nội dung không có CDN

CDN bao gồm nhiều điểm hiện diện (PoP) ở các vị trí khác nhau, mỗi điểm bao gồm một số server biên lưu trữ nội dung từ nguồn root của bạn hoặc server lưu trữ. Khi user truy cập trang web và yêu cầu nội dung tĩnh như hình ảnh hoặc file JavaScript, yêu cầu của họ được CDN chuyển đến server biên gần nhất, từ đó nội dung được phân phát. Nếu server biên không có nội dung được lưu trong bộ nhớ cache hoặc nội dung được lưu trong bộ nhớ cache đã hết hạn, CDN sẽ tìm nạp và lưu vào bộ nhớ cache version mới nhất từ một server biên CDN lân cận khác hoặc các server root của bạn. Nếu cạnh CDN có mục nhập bộ nhớ cache cho nội dung của bạn (thường xảy ra nếu trang web nhận được một lượng lưu lượng truy cập vừa phải), thì nó sẽ trả lại bản sao đã lưu trong bộ nhớ cache cho user cuối.

Sơ đồ mạng phân phối nội dung (CDN)

Điều này cho phép user phân tán theo địa lý để giảm thiểu số bước nhảy cần thiết để nhận nội dung tĩnh, tìm nạp nội dung trực tiếp từ bộ nhớ cache của cạnh gần đó. Kết quả là giảm đáng kể độ trễ và mất gói, thời gian tải trang nhanh hơn và giảm đáng kể tải trên cơ sở hạ tầng root của bạn.

Các nhà cung cấp CDN thường cung cấp các tính năng bổ sung như giảm thiểu DDoS và giới hạn tỷ lệ, phân tích user và tối ưu hóa cho các trường hợp sử dụng trực tuyến hoặc di động với chi phí bổ sung.

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

Khi user truy cập trang web , trước tiên họ sẽ nhận được phản hồi từ server DNS chứa địa chỉ IP của web server lưu trữ của bạn. Sau đó, trình duyệt của họ yêu cầu nội dung trang web, thường bao gồm nhiều file tĩnh, chẳng hạn như trang HTML, bảng định kiểu CSS, mã JavaScript và hình ảnh.

Sau khi bạn triển khai CDN và tải các nội dung tĩnh này lên server CDN, bằng cách “đẩy” chúng ra theo cách thủ công hoặc để CDN tự động “kéo” các nội dung (cả hai cơ chế được đề cập trong phần tiếp theo ), khi đó bạn sẽ hướng dẫn web server của bạn để viết lại các liên kết đến nội dung tĩnh sao cho các liên kết này hiện trỏ đến các file được CDN lưu trữ.Nếu bạn đang sử dụng CMS chẳng hạn như WordPress, việc viết lại liên kết này có thể được triển khai bằng cách sử dụng plugin của bên thứ ba như CDN Enabler .

Nhiều CDN cung cấp hỗ trợ cho các domain tùy chỉnh, cho phép bạn tạo bản ghi CNAME trong domain của bạn trỏ đến điểm cuối CDN. Khi CDN nhận được yêu cầu của user tại điểm cuối này (nằm ở rìa, gần với user hơn nhiều so với các server backend của bạn), sau đó nó sẽ định tuyến yêu cầu đến Điểm hiện diện (PoP) nằm gần user nhất. PoP này thường bao gồm một hoặc nhiều server biên CDN được bố trí tại Điểm trao đổi Internet (IxP), về cơ bản là một trung tâm dữ liệu mà Nhà cung cấp dịch vụ Internet (ISP) sử dụng để kết nối mạng của họ. Sau đó, bộ cân bằng tải nội bộ của CDN định tuyến yêu cầu đến một server biên đặt tại PoP này, sau đó phục vụ nội dung cho user .

Cơ chế lưu vào cache khác nhau giữa các nhà cung cấp CDN, nhưng nhìn chung chúng hoạt động như sau:

  1. Khi CDN nhận được yêu cầu đầu tiên cho nội dung tĩnh, chẳng hạn như hình ảnh PNG, nó không có nội dung được lưu trong bộ nhớ cache và phải tìm nạp bản sao của nội dung từ server cạnh CDN gần đó hoặc chính server root . Điều này được gọi là "bỏ sót" trong bộ nhớ cache và thường có thể được phát hiện bằng cách kiểm tra tiêu đề phản hồi HTTP, chứa X-Cache: MISS . Yêu cầu ban đầu này sẽ chậm hơn so với các yêu cầu trong tương lai vì sau khi hoàn thành yêu cầu này, nội dung sẽ được lưu vào bộ nhớ đệm ở rìa.
  2. Các yêu cầu trong tương lai cho nội dung này ("số lần truy cập" trong bộ nhớ cache), được chuyển đến vị trí cạnh này, giờ đây sẽ được phân phát từ bộ nhớ cache, cho đến khi hết hạn (thường được đặt thông qua tiêu đề HTTP). Những phản hồi này sẽ nhanh hơn đáng kể so với yêu cầu ban đầu, giảm đáng kể độ trễ cho user và giảm tải lưu lượng truy cập web vào mạng CDN. Bạn có thể xác minh phản hồi đã được phân phát từ cache CDN bằng cách kiểm tra tiêu đề phản hồi HTTP, lúc này sẽ chứa X-Cache: HIT .

Để tìm hiểu thêm về cách một CDN cụ thể hoạt động và đã được triển khai, hãy tham khảo tài liệu của nhà cung cấp CDN của bạn.

Trong phần tiếp theo, ta sẽ giới thiệu hai loại CDN phổ biến: CDN đẩykéo .

Khu vực Đẩy so với Kéo

Hầu hết các nhà cung cấp CDN cung cấp hai cách lưu trữ dữ liệu vào bộ nhớ đệm: vùng kéo và vùng đẩy.

Pull Zones liên quan đến việc nhập địa chỉ server root của bạn và cho phép CDN tự động tìm nạp và lưu trữ tất cả các tài nguyên tĩnh có sẵn trên trang web . Vùng kéo thường được sử dụng để cung cấp các nội dung web có kích thước vừa và nhỏ được cập nhật thường xuyên như file HTML, CSS và JavaScript. Sau khi cung cấp cho CDN địa chỉ server root của bạn, bước tiếp theo thường là viết lại các liên kết đến nội dung tĩnh để chúng trỏ đến URL do CDN cung cấp. Từ thời điểm đó trở đi, CDN sẽ xử lý các yêu cầu nội dung đến của user và phân phát nội dung từ bộ nhớ đệm được phân phối theo địa lý và nguồn root của bạn nếu thích hợp.

Để sử dụng Vùng đẩy , bạn tải dữ liệu của bạn lên một group hoặc vị trí lưu trữ được chỉ định, sau đó CDN sẽ đẩy ra bộ nhớ đệm trên group server biên được phân phối của nó. Vùng đẩy thường được sử dụng cho các file lớn hơn, không thường xuyên thay đổi, như file lưu trữ, gói phần mềm, PDF, video và file âm thanh.

Lợi ích của việc sử dụng CDN

Hầu hết mọi trang web đều có thể gặt hái được những lợi ích được cung cấp bằng cách triển khai CDN, nhưng nói chung lý do cốt lõi để triển khai một CDN là giảm tải băng thông từ server root của bạn lên server CDN và giảm độ trễ cho user được phân phối theo địa lý.

Ta sẽ xem xét những điều này và một số lợi ích chính khác có được bằng cách sử dụng CDN bên dưới.

Nguồn root giảm tải

Nếu bạn sắp hết dung lượng băng thông trên server của bạn , việc giảm tải các nội dung tĩnh như hình ảnh, video, file CSS và JavaScript sẽ làm giảm đáng kể việc sử dụng băng thông của server . Mạng phân phối nội dung được thiết kế và tối ưu hóa để cung cấp nội dung tĩnh và các yêu cầu của khách hàng đối với nội dung này sẽ được chuyển đến và phục vụ bởi các server CDN biên. Điều này có thêm lợi ích là giảm tải trên các server root của bạn, vì sau đó chúng sẽ phân phát dữ liệu này với tần suất thấp hơn nhiều.

Độ trễ thấp hơn để cải thiện trải nghiệm user

Nếu cơ sở user của bạn bị phân tán về mặt địa lý và một phần không nhỏ lưu lượng truy cập của bạn đến từ một khu vực địa lý xa xôi, thì CDN có thể giảm độ trễ bằng cách lưu vào bộ nhớ đệm các nội dung tĩnh trên các server cạnh gần user của bạn hơn. Bằng cách giảm khoảng cách giữa user của bạn và nội dung tĩnh, bạn có thể phân phối nội dung đến user nhanh hơn và cải thiện trải nghiệm của họ bằng cách tăng tốc độ tải trang.

Những lợi ích này được kết hợp với các trang web phục vụ chủ yếu nội dung video sử dụng nhiều băng thông, nơi độ trễ cao và thời gian tải chậm ảnh hưởng trực tiếp hơn đến trải nghiệm user và mức độ tương tác nội dung.

Quản lý mức tăng đột biến lưu lượng truy cập và tránh thời gian ngừng hoạt động

CDN cho phép bạn xử lý các đợt bùng nổ và tăng đột biến lưu lượng truy cập lớn bằng các yêu cầu cân bằng tải trên một mạng lưới lớn, phân tán của các server biên. Bằng cách giảm tải và lưu vào bộ nhớ đệm nội dung tĩnh trên mạng phân phối, bạn có thể chứa một lượng lớn user đồng thời hơn với cơ sở hạ tầng hiện có của bạn .

Đối với các trang web sử dụng một server root , lượng truy cập tăng đột biến này thường có thể áp đảo hệ thống, gây ra tình trạng ngừng hoạt động ngoài kế hoạch và thời gian ngừng hoạt động. Chuyển lưu lượng truy cập sang cơ sở hạ tầng CDN dự phòng và có sẵn cao, được thiết kế để xử lý các mức lưu lượng truy cập web khác nhau, có thể tăng tính khả dụng của nội dung và nội dung của bạn.

Giảm chi phí

Vì việc phân phát nội dung tĩnh thường chiếm phần lớn mức sử dụng băng thông của bạn, nên việc giảm tải những nội dung này lên mạng phân phối nội dung có thể làm giảm đáng kể chi tiêu cho cơ sở hạ tầng hàng tháng của bạn. Ngoài việc giảm chi phí băng thông, CDN có thể giảm chi phí server bằng cách giảm tải trên các server root , cho phép cơ sở hạ tầng hiện có của bạn mở rộng quy mô. Cuối cùng, một số nhà cung cấp CDN cung cấp phương thức thanh toán hàng tháng với giá cố định, cho phép bạn chuyển mức sử dụng băng thông hàng tháng có thể thay đổi của bạn thành mức chi tiêu định kỳ ổn định, có thể dự đoán được.

Tăng cường bảo mật

Một trường hợp sử dụng phổ biến khác cho CDN là giảm thiểu tấn công DDoS. Nhiều nhà cung cấp CDN bao gồm các tính năng giám sát và lọc các yêu cầu tới các server biên. Các dịch vụ này phân tích lưu lượng truy cập web để tìm các mẫu đáng ngờ, chặn lưu lượng tấn công độc hại trong khi tiếp tục cho phép lưu lượng truy cập user có uy tín. Các nhà cung cấp CDN thường cung cấp nhiều dịch vụ giảm thiểu DDoS khác nhau, từ bảo vệ tấn công thông thường ở cấp cơ sở hạ tầng ( OSI lớp 3 và 4 ), đến các dịch vụ giảm thiểu nâng cao hơn và giới hạn tốc độ.

Ngoài ra, hầu hết các CDN đều cho phép bạn cấu hình SSL đầy đủ để bạn có thể mã hóa lưu lượng giữa CDN và user cuối, cũng như lưu lượng giữa CDN và server root của bạn, sử dụng certificate SSL tùy chỉnh hoặc do CDN cung cấp.

Chọn giải pháp tốt nhất

Nếu nút cổ chai của bạn là tải CPU trên server root chứ không phải băng thông, CDN có thể không phải là giải pháp thích hợp nhất. Trong trường hợp này, bộ nhớ đệm local sử dụng cache phổ biến như NGINX hoặc Varnish có thể giảm tải đáng kể bằng cách cung cấp nội dung từ bộ nhớ hệ thống.

Trước khi triển khai CDN, các bước tối ưu hóa bổ sung - như giảm thiểu và nén các file JavaScript và CSS cũng như cho phép nén yêu cầu HTTP của web server - cũng có thể có tác động đáng kể đến thời gian tải trang và sử dụng băng thông.

Một công cụ hữu ích để đo tốc độ tải trang web và cải thiện nó là PageSpeed Insights của Google. Một công cụ hữu ích khác cung cấp phân tích thác nước về thời gian yêu cầu và phản hồi cũng như các tối ưu hóa được đề xuất là Pingdom .

Kết luận

Mạng phân phối nội dung có thể là một giải pháp nhanh chóng và hiệu quả để cải thiện khả năng mở rộng và tính khả dụng của các trang web . Bằng cách lưu vào bộ nhớ đệm các nội dung tĩnh trên một mạng lưới server được tối ưu hóa được phân phối theo địa lý, bạn có thể giảm đáng kể thời gian tải trang và độ trễ cho user cuối. Ngoài ra, CDN cho phép bạn giảm đáng kể mức sử dụng băng thông của bạn bằng cách hấp thụ các yêu cầu của user và phản hồi từ bộ nhớ cache ở rìa, do đó giảm chi phí băng thông và cơ sở hạ tầng của bạn.

Với các plugin và hỗ trợ của bên thứ ba cho các khuôn khổ chính như WordPress, Drupal, Django và Ruby on Rails, cũng như các tính năng bổ sung như giảm thiểu DDoS, SSL đầy đủ, giám sát user và nén nội dung, CDN có thể là một công cụ hiệu quả để bảo mật và tối ưu hóa các trang web có lưu lượng truy cập cao.


Tags:

Các tin trước