🔑 ĐỊNH NGHĨA
- CDN là viết tắt của Content Delivery Network.
- CDN là một mạng lưới gồm nhiều máy chủ phân tán, được đặt tại nhiều vị trí địa lý khác nhau, nhằm lưu trữ và phân phối các file tĩnh như hình ảnh, video, CSS, JavaScript.
- Mục tiêu chính của CDN là cải thiện hiệu suất truy cập các file tĩnh, thông qua việc giảm khoảng cách giữa server và người dùng (client).
⭐️ CÁC KHÁI NIỆM QUAN TRỌNG
- Origin Server: Đây là server gốc, nơi lưu trữ bản gốc của các file tĩnh. Trước khi ứng dụng CDN, tất cả các file sẽ được phân phối đến người dùng từ nguồn này. Ví dụ: Nếu Origin Server nằm ở Ấn Độ, người dùng từ Việt Nam, Mỹ, Anh, Pháp sẽ phải tải file từ xa, dẫn đến chậm trễ trong quá trình truy cập.
- Edge Servers: Là các server nằm ở nhiều vị trí trên toàn cầu. Những server này lưu trữ bản sao của các file tĩnh từ server gốc và phân phối chúng đến người dùng từ vị trí gần nhất.
- PoP (Points of Presence): Đây là các địa điểm vật lý nơi Edge Servers được đặt. Mỗi PoP thường chứa nhiều Edge Server để đảm bảo tính khả thi và độ tin cậy trong việc phân phối nội dung.
⚙️ LUỒNG HOẠT ĐỘNG KHI SỬ DỤNG CDN
- Bước 1: Khi Alice truy cập trang web, một hình ảnh tên là logo.png cần được tải về để hiển thị. Trong mã HTML, khi kiểm tra thẻ img, chúng ta sẽ thấy thuộc tính src chứa đường dẫn đến bức ảnh đó, thường do nhà cung cấp CDN cung cấp, như Cloudflare hoặc Amazon CloudFront.
Ví dụ, nếu hình ảnh này được lưu trữ trên Amazon CloudFront, đường dẫn có thể là: https://tentrangweb.cloudfront.net/logo.png.
- Bước 2: Nếu CDN server không có hình ảnh logo.png trong bộ nhớ đệm (cache), nó sẽ gửi yêu cầu đến Origin Server để lấy ảnh. Origin Server này có thể là Web Server của bạn hoặc dịch vụ lưu trữ trực tuyến như Amazon S3.
- Bước 3: Ảnh sẽ được truyền từ Origin Server về CDN server, kèm theo HTTP header TTL (Time To Live) cho biết thời gian mà ảnh này được phép lưu trữ tại CDN server.
- Bước 4: CDN server sẽ lưu trữ hình ảnh trong bộ nhớ đệm và gửi hình ảnh đó về cho Alice.
- Bước 5: Nếu Bob, một người dùng khác, cũng truy cập trang web và cần tải hình ảnh logo.png, yêu cầu tương tự sẽ được gửi đến CDN server.
- Bước 6: Lúc này, vì hình ảnh đã nằm trong bộ nhớ đệm của CDN server, nó sẽ được trả về tức thì cho Bob mà không cần gửi lại yêu cầu đến Origin Server, trừ khi hình ảnh đã hết hạn lưu trữ và bị loại bỏ khỏi CDN server (dựa vào giá trị TTL tại bước 3).
LỜI NHẮN
Bạn hãy ghé thăm thêm các bài viết trong series "System Design - Thiết kế Hệ thống" trên blog của tôi để nâng cao kiến thức. Hy vọng bài viết này sẽ mang lại cho bạn những hiểu biết bổ ích.
Theo dõi tôi trên Facebook "CLB Lập trình - THPT Ngọc Tảo" hoặc kênh Youtube "Tờ Mờ Sáng học Lập trình" để cùng nhau học tập và chia sẻ những kiến thức công nghệ và lập trình miễn phí nhé!
Facebook CLB Lập trình - THPT Ngọc Tảo: https://www.facebook.com/clb.it.ngoctao/
Youtube Tờ Mờ Sáng học Lập trình: https://www.youtube.com/@tmsangdev
Hẹn gặp lại 👋
BẠN CÓ THỂ ĐỌC THÊM
Clean Architecture: A Craftsman’s Guide to Software Structure and Design - Robert C. Martin
Designing Data – Insensitive applications - Martin Kleppmann
System Analysis and Design - Alan Dennis, Barbara Haley Wixom, Roberta M. Roth
System Design Interview - Alex Xu
Modern Systems Analysis and Design - Joseph Valacich, Joey George
Head First Design Patterns - Eric Freeman, Elisabeth Robson
source: viblo