Cloudflare thu hồi 100 TB RAM nhờ tối ưu consistent hashing trong Rust

Công nghệ24 tháng 10, 2026·3 phút đọc

Cloudflare đã cắt giảm hơn 100 TB bộ nhớ của dịch vụ cân bằng tải nội bộ bằng cách tối ưu triển khai consistent hashing viết bằng Rust trong thư viện pingora-ketama. Nhờ thu gọn các mục trong hash ring và phân tích thống kê phân bố hash, đội ngũ đã giảm khoảng 90% số lượng hash trên mỗi backend.

Cloudflare vừa công bố chi tiết cách họ tiết kiệm hơn 100 TB RAM cho hệ thống cân bằng tải nội bộ chỉ bằng một đợt tối ưu mã nguồn. Bài toán nằm ở consistent hashing — thuật toán quen thuộc giúp phân phối request đến các backend một cách ổn định — nhưng được triển khai trong thư viện pingora-ketama viết bằng Rust.

Vấn đề: hash ring phình to theo số lượng backend

Consistent hashing hoạt động bằng cách ánh xạ mỗi backend thành nhiều điểm trên một vòng tròn hash (hash ring). Càng nhiều điểm ảo, phân bố tải càng đều, nhưng cái giá phải trả là bộ nhớ. Với quy mô hạ tầng của Cloudflare, mỗi node cân bằng tải phải lưu hàng triệu mục trong hash ring, và khi nhân lên trên toàn hệ thống, con số tiêu tốn RAM trở nên khổng lồ.

Điểm mấu chốt là cấu trúc dữ liệu lưu từng mục trong ring chưa đủ gọn. Mỗi hash chiếm nhiều byte hơn mức cần thiết, trong khi phần lớn thông tin lại trùng lặp hoặc không thực sự hữu ích cho việc tra cứu.

Cách Cloudflare giải quyết

Đội ngũ kỹ thuật đã tiếp cận theo hai hướng chính:

  • Thu gọn các mục hash ring: thay vì lưu từng hash với đầy đủ metadata, cấu trúc mới được nén lại, loại bỏ phần dư thừa và sắp xếp để việc tìm kiếm vẫn nhanh như cũ.
  • Phân tích thống kê phân bố hash và tỷ lệ va chạm: thay vì đoán, họ đo trực tiếp xem các hash thực sự rơi vào đâu và va chạm bao nhiêu lần. Kết quả cho thấy có thể giảm khoảng 90% số hash trên mỗi backend mà vẫn giữ được độ cân bằng tải chấp nhận được.

Điểm đáng chú ý là tối ưu này không đánh đổi bằng độ chính xác: phân bố tải sau khi thay đổi vẫn đáp ứng yêu cầu vận hành, trong khi bộ nhớ giảm mạnh.

Vì sao chi tiết này đáng quan tâm

Với các kỹ sư vận hành hệ thống lớn, câu chuyện của Cloudflare là lời nhắc rằng chi phí hạ tầng thường ẩn trong những cấu trúc dữ liệu nhỏ bé. Một vài byte dư thừa cho mỗi mục, nhân với hàng triệu mục trên hàng nghìn node, tạo ra khoản lãng phí tính bằng terabyte.

Việc dùng Rust trong pingora-ketama cũng cho thấy xu hướng rõ ràng: các công ty hạ tầng ngày càng chuyển những thành phần hiệu năng cao sang ngôn ngữ hệ thống, nơi kiểm soát bố cục bộ nhớ tốt hơn và không có garbage collector gây gián đoạn.

Với các đội DevOps tại Việt Nam đang vận hành hệ thống cân bằng tải quy mô vừa và lớn, bài học thực tế là nên đo đạc trước khi tối ưu: phân tích phân bố hash và tỷ lệ va chạm có thể phát hiện ra những tham số đang bị đặt quá an toàn, gây tốn tài nguyên mà không mang lại lợi ích tương xứng.

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗