Cloudflare改造DNS更新流程,處理延遲從7.7秒降至3.3秒
Article text
7 paragraphs · Tap (click) a word or select text to translate · Tap a word or select text to translateCloudflare公開DNS更新架構改造成果,讓部分區域設定變更不必重新處理整個DNS區域,只需更新受影響的紀錄及相關資料,並整合工作排程。DNS變更發生到寫入內部儲存系統的處理延遲中位數由7.7秒降至3.3秒,尖峰記憶體用量減少85%,完整區域重建次數也下降約40%。
Cloudflare的DNS紀錄變更會先寫入資料庫,再透過Kafka傳遞事件,與區域設定等其他事件一併交給內部的DNS資料建置服務Zone Builder處理。Zone Builder將DNS紀錄與設定轉換成權威DNS伺服器使用的格式,並把變更寫入分散式鍵值儲存系統Quicksilver。
目前Zone Builder每秒約接收700筆DNS紀錄變更,另有約100件區域設定等事件,過去部分設定變更即使只影響少數紀錄,仍需讀取、轉換及比對整個DNS區域。由於部分區域已有超過2,000萬筆紀錄,完整重建會占用大量記憶體,也可能拖延後續更新。
Cloudflare在2022年已導入逐筆DNS紀錄重建,此次則擴及部分區域設定變更,新增的規畫器會依變更內容決定處理範圍。一般A、AAAA或TXT紀錄變更,通常只需重建對應DNS名稱,而名稱伺服器或萬用字元紀錄變更,則一併更新相關中繼資料。啟用或停用Universal SSL時,也可只重建根網域紀錄及中繼資料。
新排程器整合原本分開處理的DNS紀錄更新與區域重建工作,可將同一區域尚未執行的多項變更合併處理,減少重複作業。隨著耗時的完整重建減少,系統也較能跟上DNS變更事件的產生速度,避免更新工作的累積。
在同批事件的24小時對照測試中,p99延遲的最高尖峰由14.6分鐘降至1.21分鐘。Zone Builder部署的平均記憶體用量從49 GiB降至7 GiB,尖峰從79 GiB降至12 GiB。資源負擔降低後,Cloudflare進一步縮短區域重建間隔,以及等待資料庫複本同步的緩衝時間,使延遲中位數降至3.3秒。
對使用Cloudflare DNS的網站而言,修改DNS紀錄或區域設定後,變更可更快完成內部處理,進入後續的全球DNS資料傳播流程。大型DNS區域也較不需要因少數設定變更而重新處理所有紀錄,減少其他DNS更新受到拖延的情況。
For when the paragraph translations don't line up
Full translation
Tap (click) a word to translate it, or select text to translate that passage straight away.