Cách Cloudflare giảm 50% độ trễ và 85% bộ nhớ cho hệ thống DNS
Cloudflare đã cải tiến hệ thống Zone Builder để xử lý các thay đổi DNS hiệu quả hơn, giúp giảm 50% thời gian chờ đợi và cắt giảm 85% mức tiêu thụ bộ nhớ đỉnh...
- Giọng nữ Bắc
Vào năm 2022, hệ thống Zone Builder của Cloudflare xử lý khoảng 250 thay đổi bản ghi DNS mỗi giây. Con số này hiện đã tăng lên 700, chưa kể hàng trăm sự kiện khác liên quan đến cài đặt zone. Với những zone lớn chứa hơn 20 triệu bản ghi và xu hướng tiếp tục tăng, việc tối ưu hóa quy trình xây dựng (build) dữ liệu DNS trở nên cấp thiết hơn bao giờ hết.
Table Of Content
Thách thức từ quy trình build cũ
Mỗi khi có thay đổi, hệ thống sẽ thực hiện một quy trình “build” để chuyển đổi trạng thái cơ sở dữ liệu thành dữ liệu mà các server DNS có thể sử dụng, sau đó ghi vào Quicksilver (hệ thống key-value phân tán). Trước đây, quy trình này thường thực hiện “full build” – đọc, mã hóa và so sánh toàn bộ bản ghi trong zone. Điều này gây lãng phí tài nguyên, đặc biệt là với các zone khổng lồ không thể tải toàn bộ vào bộ nhớ.
Giải pháp: Trình lập kế hoạch build mục tiêu (Targeted Build Planner)
Cloudflare đã phát triển một trình lập kế hoạch build mới, cho phép xác định phạm vi thay đổi nhỏ nhất cần thiết thay vì rebuild toàn bộ. Hệ thống mới này dựa trên 5 loại build tùy theo mức độ ảnh hưởng:
- Resources only: Chỉ rebuild các bản ghi tại các tên DNS cụ thể (ví dụ: A, AAAA, TXT).
- Resources and metadata: Rebuild các bản ghi và metadata dùng chung (ví dụ: thay đổi nameserver hoặc wildcard).
- Apex and metadata: Rebuild phần apex của zone và metadata.
- Purge: Xóa bỏ một zone không còn được xuất bản.
- Full zone: Chỉ thực hiện khi không thể chứng minh được tính an toàn của các loại build nhỏ hơn.
Những cải tiến kỹ thuật cốt lõi
Để đạt được hiệu suất này, đội ngũ kỹ thuật đã thực hiện nhiều thay đổi quan trọng:
- Hợp nhất Scheduler: Thay thế các bộ lập lịch riêng biệt cho bản ghi và toàn bộ zone bằng một bộ lập lịch thống nhất, giúp kết hợp các thay đổi liên tiếp thành một lần build duy nhất.
- Xử lý dữ liệu dùng chung: Giải quyết bài toán khi một tên miền có nhiều zone ID (thường xảy ra trong quá trình chuyển đổi dịch vụ) bằng cách cập nhật metadata một cách thông minh.
- Kiểm tra trạng thái thực tế: Hệ thống thực hiện kiểm tra trạng thái mới nhất từ các bản sao (replica) của cơ sở dữ liệu ngay trước khi thực thi build, đảm bảo tính nhất quán giữa sự kiện Kafka và dữ liệu thực tế.
- Cơ chế Soft Committing: Đảm bảo không mất dữ liệu thay đổi của khách hàng trong trường hợp hệ thống khởi động lại, bằng cách chỉ xác nhận (commit) các thông báo Kafka sau khi các tác vụ trước đó đã hoàn tất.
Kết quả là hệ thống không chỉ tiết kiệm 85% bộ nhớ đỉnh điểm mà còn giảm một nửa thời gian từ khi thay đổi DNS được ghi nhận cho đến khi dữ liệu được cập nhật lên mạng lưới toàn cầu của Cloudflare.
Nguồn tham khảo: Cloudflare Blog



No Comment! Be the first one.