Thay vì mua thêm máy chủ hoặc nâng cấp dung lượng RAM, các kỹ sư Cloudflare đã tập trung vào chính phần mềm đang vận hành hệ thống. Dự án được thực hiện trên Big Pineapple, nền tảng bộ nhớ đệm DNS đứng phía sau trình phân giải 1.1.1.1, dịch vụ tường lửa DNS và một số sản phẩm DNS khác của công ty.
Trong bài viết trên blog kỹ thuật của Cloudflare, kỹ sư hệ thống Sebastiaan Neuteboom cho biết nhóm phát triển đã thực hiện năm thay đổi đối với mã nguồn Rust của Big Pineapple. Kết quả là kích thước của một mục dữ liệu DNS điển hình đã giảm từ 953 byte xuống chỉ còn 420 byte.
Con số này có vẻ không lớn nếu xét trên một mục dữ liệu riêng lẻ. Tuy nhiên, Big Pineapple đang phải lưu trữ hơn 250 tỷ bản ghi DNS tại bất kỳ thời điểm nào. Khi được nhân lên ở quy mô toàn hệ thống, vài trăm byte tiết kiệm trên mỗi mục có thể tương đương hàng chục terabyte RAM.
![Cloudflare tiet kiem 100 TB RAM chi bang cach toi uu phan mem cho DNS 1.1.1.1 Cloudflare tiết kiệm 100 TB RAM chỉ bằng cách tối ưu phần mềm cho DNS 1.1.1.1]()
Cloudflare giải phóng 100 TB RAM mà không cần thay phần cứng
Theo Cloudflare, quá trình triển khai tối ưu hóa diễn ra từ giữa tháng 5 đến đầu tháng 7. Trong thời gian này, mức sử dụng bộ nhớ p99 trên mỗi phiên bản Big Pineapple đã giảm từ 9,3 GB xuống còn 5,3 GB.
Đáng chú ý, hiệu suất hệ thống cũng được cải thiện thay vì giảm xuống do sử dụng cấu trúc dữ liệu nhỏ gọn hơn.
Thông lượng chèn dữ liệu tăng từ 625.000 lên 893.000 mục mỗi giây, trong khi độ trễ tìm kiếm giảm từ 828 nano giây xuống 670 nano giây.
Như vậy, Cloudflare vừa giảm đáng kể nhu cầu RAM, vừa giúp hệ thống xử lý dữ liệu nhanh hơn.
Ở quy mô của một mạng lưới DNS toàn cầu, hiệu quả này đặc biệt đáng kể. Cloudflare ước tính rằng chỉ cần dư thừa 1 byte trên mỗi mục DNS cũng có thể tiêu tốn hơn 250 GB RAM khi hệ thống phải lưu trữ 250 tỷ mục.
Rust giúp Cloudflare loại bỏ lượng lớn bộ nhớ dư thừa
Một trong những thay đổi quan trọng nhất liên quan đến cách Big Pineapple sử dụng hai kiểu dữ liệu Vec và String trong Rust.
Các cấu trúc này được thiết kế để có thể mở rộng khi cần thiết. Vì vậy, chúng phải lưu thêm một lượng siêu dữ liệu phục vụ quá trình quản lý dung lượng.
Tuy nhiên, dữ liệu DNS sau khi được đưa vào bộ nhớ đệm của Cloudflare thường không cần tiếp tục mở rộng. Các kỹ sư nhận thấy phần thông tin phục vụ khả năng mở rộng này không thực sự cần thiết và thay thế chúng bằng những cấu trúc có kích thước cố định.
Riêng thay đổi này đã giúp Cloudflare tiết kiệm hơn 15 TB RAM trên toàn hệ thống.
Các kỹ sư cũng thiết kế lại cách lưu trữ phản hồi DNS. Trước đây, Big Pineapple sử dụng ba danh sách bản ghi riêng biệt cho mỗi phản hồi. Thiết kế mới gom chúng vào một vùng bộ nhớ đệm duy nhất và sử dụng các độ lệch dài hai byte để xác định vị trí từng bản ghi.
Cách tiếp cận này giúp giảm lượng siêu dữ liệu cần thiết và tận dụng không gian bộ nhớ hiệu quả hơn.
Cloudflare loại bỏ dữ liệu DNS trùng lặp
Một phần bộ nhớ khác được tiết kiệm nhờ loại bỏ những thông tin mà hệ thống có thể tự tạo lại.
Trước đây, bộ nhớ đệm lưu cả tên chủ sở hữu của các bản ghi DNS, ngay cả trong trường hợp tên này chỉ đơn giản lặp lại tên miền mà người dùng đang truy vấn.