Cloudflare tiết kiệm petabyte bộ nhớ cache nhờ Zstandard và Pingora
Cloudflare đang thử nghiệm hệ thống Cache Transcoding, sử dụng thuật toán nén Zstandard (zstd) ngay bên trong kiến trúc Pingora để nén tài nguyên văn bản trước khi ghi vào bộ nhớ cache. Kết quả ban đầu cho thấy tỷ lệ nén trung bình 2,8 lần, giúp tăng mật độ lưu trữ, giảm băng thông liên trung tâm dữ liệu và mở rộng dung lượng cache hiệu quả với chi phí CPU tăng không đáng kể.

Chi phí bộ nhớ đang tăng chóng mặt. Cả giá RAM lẫn ổ cứng đều tăng vọt trong năm qua. Với một công ty vận hành hạ tầng phân tán quy mô lớn như Cloudflare, việc tối ưu từng byte trên đĩa trở thành bài toán sống còn để duy trì dịch vụ CDN phục vụ toàn bộ khách hàng.
Trong bối cảnh đó, đội ngũ tại Cloudflare đã phát triển một hệ thống thử nghiệm mang tên Cache Transcoding. Ý tưởng cốt lõi: thay vì lưu trữ tài nguyên ở dạng thô như origin gửi đến, hệ thống sẽ nén chúng bằng thuật toán Zstandard (zstd) trước khi ghi xuống ổ đĩa. Kết quả thử nghiệm cho thấy các tệp văn bản hợp lệ được thu nhỏ xuống chỉ còn ⅓ kích thước ban đầu, mở ra tiềm năng tiết kiệm hàng petabyte dung lượng lưu trữ.
Vì sao Zstandard là lựa chọn phù hợp?
Zstandard là thuật toán nén không mất dữ liệu do Yann Collet phát triển tại Facebook và phát hành mã nguồn mở từ năm 2016. Không giống các phương pháp nén "cứng nhắc", zstd được thiết kế để cân bằng giữa tỷ lệ nén và tốc độ xử lý.
Trong các bài kiểm tra trước đó về nén trình duyệt, zstd cho tốc độ nén nhanh hơn 42% so với Brotli nhưng vẫn tạo ra kích thước tệp gần như tương đương, đồng thời tạo tệp nhỏ hơn 11,3% so với gzip ở tốc độ tương đương. Nhờ vậy, Cache Transcoding có thể xử lý lượng lớn lưu lượng truy cập mà không biến CPU thành nút thắt cổ chai.
Sự cân bằng đó rất quan trọng vì Cache Transcoding sẽ chạm vào một lượng lớn lưu lượng, cả mã hóa và giải mã đều cần duy trì tốc độ cao.
Không phải thứ gì cũng nên nén
Một điểm đáng chú ý là Cloudflare không nén toàn bộ dữ liệu. Ảnh, video và font chữ vốn đã được nén từ trước, việc nén lại chỉ tốn CPU mà không mang lại lợi ích gì. Trong mẫu lưu lượng khảo sát, nhóm phương tiện này chiếm 21,4% số yêu cầu nhưng lên tới 63,3% dung lượng byte.
Ngược lại, các định dạng văn bản như HTML, JSON, CSS và JavaScript mới là "mỏ vàng" tiềm năng. Chúng chiếm 67,3% số yêu cầu và 22,3% dung lượng, trong đó khoảng 71% đến từ origin ở dạng chưa nén và có thể nén rất hiệu quả. Kết quả đo đạc trong môi trường thử nghiệm có kiểm soát:
| Chỉ số | Giá trị |
|---|---|
| Tỷ lệ nén | 2,834 lần |
| Chi phí mã hóa | 4,31 ns/byte (~232 MB/s), trả một lần khi ghi |
| Chi phí giải mã | 1,56 ns/byte (~641 MB/s), trả mỗi lần phục vụ |
Trả chi phí nén một lần, hưởng lợi nhiều lần
Nén không bao giờ là miễn phí. Cả mã hóa lẫn giải mã đều tiêu tốn CPU. Do đó, câu hỏi quan trọng là liệu số byte tiết kiệm được có xứng đáng với chi phí xử lý hay không.
Với mức nén zstd level 3 (mức mặc định cân bằng tốc độ và kích thước), mô hình tính toán của Cloudflare cho thấy chi phí CPU tăng thêm chỉ dao động ở mức vài phần trăm trong các kịch bản kiểm thử.
Ban đầu, nhóm phát triển cân nhắc chỉ nén các nội dung phổ biến vì chúng được dùng lại nhiều hơn. Tuy nhiên, giải pháp này không thực sự hiệu quả: giải mã vẫn diễn ra mỗi lần phục vụ, nên việc giới hạn phạm vi chỉ làm giảm lợi ích lưu trữ mà không cắt giảm CPU tương ứng.
Giải pháp đơn giản hóa ra lại hoạt động tốt hơn. Chỉ cần nén toàn bộ văn bản nén được có kích thước từ 4 KiB trở lên là đã đạt gần như toàn bộ lợi ích lưu trữ, trong khi vẫn nằm trong hạn mức CPU cho phép.
Cache Transcoding hoạt động ra sao?
Quy trình vận hành của hệ thống khá tinh gọn:
- Khi cache miss: proxy dựa trên Pingora mã hóa body bằng zstd trước khi ghi đĩa. Metadata ghi nhận trạng thái nén và giữ nguyên độ dài nội dung gốc.
- Khi cache hit: đối tượng zstd được đọc từ đĩa và giải mã trước khi gửi đến client.
- Với Tiered Cache: dữ liệu nén được truyền giữa các tầng cache ở dạng đã nén, chỉ giải mã tại tầng gần client nhất.
- Đánh dấu trạng thái nén giúp ngăn một đối tượng bị nén nhiều lần khi di chuyển giữa các tầng.
Vì sao chỉ nén một số loại văn bản nhất định?
Thao tác nén nhanh nhất là thao tác chúng ta không cần thực hiện. Do đó, Cache Transcoding áp dụng chuỗi kiểm tra tính hợp lệ để loại bỏ nội dung khó có lợi khi nén:
- Chỉ chấp nhận response 200 OK
- Content-Encoding không được thiết lập
- Content-Type phải là văn bản nén được
- Có Content-Length xác định và tối thiểu 4 KiB
Ngưỡng 4 KiB giúp loại bỏ lượng lớn yêu cầu nhỏ lẻ mà chỉ đánh mất khoảng 1% tổng số byte hợp lệ. Các loại request dạng slice, range, đã nén sẵn từ upstream hoặc nội dung nhị phân đều được giữ nguyên.
Kiểm thử với hơn một triệu yêu cầu
Để đánh giá hiệu quả, nhóm đã chạy chiến dịch kiểm thử với hơn một triệu yêu cầu trên 10 máy chủ cache. Một nửa chiến dịch chạy khi tắt Tiered Cache, nửa còn lại bật tính năng này lên để đo lường riêng biệt hành vi cache cục bộ và truyền tải giữa các tầng.
Hai tài nguyên thử nghiệm có kích thước khoảng 195 KiB và 272 KiB, cả hai đều nén được xấp xỉ 2,8 lần. Đây là bộ dữ liệu có độ nén tốt được lựa chọn có chủ đích để kiểm chứng kiến trúc, không đại diện cho toàn bộ dữ liệu văn bản trên Internet.
Hướng phát triển tiếp theo
Thử nghiệm Cache Transcoding đã chứng minh một điều quan trọng: vẫn còn nhiều cải tiến lớn có thể triển khai để tối ưu hệ thống cache phục vụ hàng triệu khách hàng. Với chi phí CPU trong tầm kiểm soát, Cloudflare có thể tiếp tục mở rộng hiệu suất lưu trữ mà không cần nâng cấp phần cứng.
Trong tương lai, nhóm phát triển dự kiến sẽ thử nghiệm các mức nén zstd cao hơn, đa dạng hóa loại nội dung kiểm thử, tối ưu tham số lọc, cũng như nghiên cứu khả năng xử lý range requests và truyền trực tiếp dữ liệu nén đến các thành phần downstream đã hỗ trợ sẵn.
Với những doanh nghiệp Việt Nam đang vận hành hệ thống phân phối nội dung quy mô lớn, bài toán của Cloudflare cũng là bài toán chung: chi phí lưu trữ ngày càng đắt đỏ trong khi dữ liệu không ngừng tăng. Việc áp dụng các giải pháp nén thông minh ngay tại tầng lưu trữ, thay vì chỉ dừng ở tầng truyền tải, có thể là hướng đi đáng cân nhắc.
Bài viết liên quan

Công nghệ
Nộp đơn xin việc lẽ ra nên khó hơn. Thật đấy
25 tháng 8, 2026

Công nghệ
El Niño 2026 đang bị 'khuếch đại' đến mức kỷ lục, thế giới đối mặt với thời tiết khắc nghiệt chưa từng thấy
03 tháng 9, 2026

Công nghệ
Robot học mọi thứ khó đến mức nào? 14 lý do khiến ngành robot chưa thể bùng nổ như AI
02 tháng 9, 2026