Tối ưu hóa hạ tầng: Cách Cloudflare kiểm soát lưu lượng dữ liệu khổng lồ
Khám phá cách Cloudflare giải quyết bài toán tăng trưởng lưu lượng theo cấp số nhân trong khi vẫn duy trì sự ổn định của phần cứng thông qua các chiến lược tối ưu hóa pipeline dữ...
- Giọng nữ Bắc
Với hơn 20% lưu lượng truy cập web toàn cầu đi qua mạng lưới của Cloudflare, đội ngũ Data của chúng tôi chịu trách nhiệm vận hành một hệ thống pipeline khổng lồ, kết nối dữ liệu từ hàng chục nghìn server trên toàn thế giới về các trung tâm dữ liệu tập trung. Hệ thống này cung cấp năng lượng cho Cloudflare Logs, SQL API, khả năng quan sát (observability) và các công cụ phân tích nội bộ.
Thách thức từ sự tăng trưởng theo cấp số nhân
Đến tháng 5/2026, chúng tôi đã xử lý khoảng 2 tỷ sự kiện mỗi giây. Thách thức thường niên của chúng tôi là đối mặt với lưu lượng truy cập tăng theo cấp số nhân trong khi phần cứng chỉ tăng trưởng tuyến tính. Để kiểm soát chi phí tài nguyên, trong 5 năm qua, chúng tôi đã thực hiện nhiều cải tiến kỹ thuật, giúp tiết kiệm lượng phần cứng tương đương với 2,5 năm mở rộng.
Các cột mốc tối ưu hóa
1. Phân tách dữ liệu (2022): Trước đây, chúng tôi sử dụng một schema nguyên khối (monolithic) chứa mọi trường dữ liệu của tất cả sản phẩm. Việc chuyển sang các schema chuyên biệt cho từng sản phẩm đã giúp giảm 35-40% băng thông đường truyền chính.
2. Nâng cấp thuật toán nén (2024): Bằng cách chuyển đổi từ LZ4 sang zstd, chúng tôi đã giảm được gần 40% lưu lượng dữ liệu nén mà không gây ảnh hưởng đáng kể đến hiệu suất CPU, cho phép hệ thống hỗ trợ lưu lượng gấp 1,5 lần trên cùng một hạ tầng.
3. Tái cấu trúc pipeline (2026): Chúng tôi đã thay đổi mô hình cân bằng tải và nhân bản dữ liệu. Thay vì ghi đúp dữ liệu từ nguồn (Logfwdr) tới hai khu vực khác nhau, chúng tôi áp dụng mô hình “Shared Ingest Pool”. Dữ liệu được gửi một lần, sau đó việc nhân bản được thực hiện ở giai đoạn cuối của pipeline. Điều này giúp giảm 36 GB/s lưu lượng trên mạng diện rộng.
4. Phân tán cơ chế lấy mẫu (Sampling): Thay vì chỉ lấy mẫu tại các dịch vụ tập trung, chúng tôi thực hiện lấy mẫu ngay tại Logfwdr. Việc sử dụng thuật toán lấy mẫu dựa trên căn bậc hai của tổng số bản ghi giúp duy trì tính đại diện của dữ liệu ngay cả khi lưu lượng lớn, giúp giảm đáng kể lượng dữ liệu cần lưu trữ mà không làm mất đi độ chi tiết của các sự kiện hiếm.
5. Tổng hợp dữ liệu (Aggregation): Chúng tôi đã chuyển dịch các phép tính tổng hợp (rollup) từ cuối pipeline lên sớm hơn. Bằng cách thực hiện tổng hợp dữ liệu tại từng bước (từ Logfwdr, đến các bộ nhận tập trung, và cuối cùng là tại ClickHouse), chúng tôi đã giảm lưu lượng dữ liệu nén của một số bộ dữ liệu lên đến 80%.
Những cải tiến này không chỉ giúp Cloudflare tiết kiệm tài nguyên phần cứng đáng kể mà còn đảm bảo hệ thống luôn sẵn sàng trước sự tăng trưởng không ngừng của lưu lượng truy cập toàn cầu.
Nguồn tham khảo: Cloudflare Blog



No Comment! Be the first one.