Kiến trúc bộ đệm phân tầng CDN (Multi-tier Cache)
CDN và kiến trúc bộ đệm phân tầng CDN (Multi-tier Cache) giúp giải quyết vấn đề gia tăng lưu lượng truy cập vào các trang web và máy chủ gây ra tình trạng chậm trễ và nghẽn mạng.
I. Giới thiệu về CDN và kiến trúc bộ đệm phân tầng
1. CDN
Trong thời đại công nghệ ngày nay, số lượng website được tạo ra ngày một nhiều nhằm đáp ứng nhu cầu mua sắm, tìm kiếm hay chia sẻ thông tin của con người trên mạng xã hội. Cũng vì vậy những nhà cung cấp dịch vụ luôn dành một sự quan tâm đặc biệt với trải nghiệm của người dùng, luôn tìm cách để cho dịch vụ, website có thể chạy mượt mà, nhanh và chính xác nhất có thể. CDN (Content Delivery Network) hay mạng phân phối nội dung có thể xem là một chìa khóa quan trọng nhất để làm được điều đó. Dấu vết của CDN xuất hiện ở phía sau hầu hết những trang web hiện nay.
2. Caching & Multi-tier cache
Nhắc tới CDN có lẽ chúng ta không thể không nhắc tới caching, một kỹ thuật giúp tăng tốc độ truy xuất dữ liệu và giảm tải hệ thống. Kỹ thuật sẽ sử dụng Cache (bộ đệm) là nơi lưu trữ dữ liệu có tính chất tạm thời, hiệu suất cao nhằm tăng tốc độ truy xuất dữ liệu cho những lần truy vấn sau đó.
Nhưng làm sao để có thể sử dụng cache một cách có hiệu quả và bao nhiêu tầng cache là đủ cho một hệ thống? Khi nói về bộ đệm nhiều tầng cho website, người ta thường nhắc đến kiến trúc phân tầng với các tầng như: Edge Caches, Regional Caches, Central Cache hay Global Cache. Bài viết này sẽ đề cập tới phân tầng bộ đệm theo cách khác, đó là cache trên ổ RAM, SSD, HDD cùng với một số kiến trúc phân tầng và ưu nhược điểm của chúng.
II. Một số kiến trúc phân tầng cache
1. Kiến trúc một tầng cache
Với mô hình một tầng cache này, thông thường người cung cấp dịch vụ sẽ trọn cache trên ổ RAM để có thể đáp ứng được tốc độ truy xuất dữ liệu một cách nhanh chóng cho người dùng cuối (enduser). Nhưng do chi phí lớn và dung lượng hạn chế của RAM nên thời gian cache file không dài, không thể cache nhiều file và tỷ lệ cache HIT còn thấp, đặc biệt là với những website lớn hay chứa nhiều file ảnh, video dung lượng cao. Ngoài ra, do dịch vụ CDN thường có nhiều máy chủ đặt tại nhiều địa điểm để đáp ứng truy vấn gần đó (Edge Server) nên nếu dùng mô hình này, lượng lớn request sẽ tràn xuống khiến origin có thể quá tải và gây tốn kém chi phí băng thông. Để giải quyết vấn đề này, chúng ta có thể tăng thêm một tầng cache sử dụng ổ SSD.
2. Kiến trúc hai tầng cache
Với ưu điểm về tốc độ đọc ghi dữ liệu và khả năng có thể mở rộng không gian lưu trữ của ổ SSD, ta có thể dùng nó làm bộ đệm lưu trữ dữ liệu cho tầng cache thứ 2 của CDN. Lúc này,
- Tầng RAM cache sẽ là lower-tier chịu trách nhiệm phản hồi dữ liệu trực tiếp cho người dùng cuối. Khi file không tồn tại trên tầng này (Cache MISS), request sẽ được đẩy xuống tầng dưới để lấy file và cache lại vào RAM.
- Tầng SSD cache sẽ là upper-tier tiếp nhận request từ tầng RAM cache để xử lý, có thể đi xuống origin server để lấy file và cache lại vào ổ SSD trong trường hợp file không có trên tầng này.
Kiến trúc phân tầng cache này sẽ giữ được tính phản hồi nhanh chóng của RAM cache, cùng với cải thiện đáng kể thời gian cache file, tỷ lệ cache HIT, lượng request lọt xuống origin server và giảm chi phí băng thông.
3. Kiến trúc ba tầng cache
Có lẽ, với mô hình hai tầng cache đã có thể đáp ứng được phần lớn website hiện nay về tốc độ, chi phí và hiệu quả khi xử lý truy vấn. Nhưng với những trang web cần độ ổn định cao, thời gian cache file dài hay một cơ chế có thể backup dữ liệu khi origin gặp sự cố thì có vẻ chỉ với RAM và SSD là chưa đủ để đáp ứng về mặt không gian lưu trữ. Không sao, vì không gian của ổ HDD có thể giải quyết được vấn đề này. Chúng tôi gọi tầng không gian lưu trữ này là Warm Cache.
Với ưu điểm dung lượng khủng mà chi phí rẻ, sử dụng ổ HDD để lưu trữ dữ liệu thời gian dài là giải pháp hợp lý cho bài toán trên. Hệ thống CDN của Bizfly Cloud ứng dụng mô hình này và đạt được hiệu quả vượt trội so với những mô hình khác với tỷ lệ HIT cache tới 99%.
III. Tổng kết
Trong nhiều lĩnh vực, đặc biệt là phát triển web, CDN có lẽ là không thể thiếu trong việc nâng cao tốc độ, hiệu suất, trải nghiệm người dùng và là một phần quan trọng để phát triển web đạt được thành công như ngày hôm nay. Nhưng CDN sẽ không dừng lại ở đó, dịch vụ này vẫn luôn được con người tìm kiếm, mở rộng những mô hình, triến trúc và tính năng mới để ngày càng phát triển hơn.