【Cloudflare出手】重寫1.1.1.1快取架構 記憶體用量降56% 全網省百TB無需加一台伺服器

最新財經消息

廣告

當一間掌管全球數以億計網絡查詢的公司,竟然靠改寫程式碼、而非添置硬件,就騰出足以裝滿百多台伺服器的記憶體,這背後究竟是甚麼工程魔法?

Cloudflare 近日在官方技術網誌公布,旗下支撐公共 DNS 服務 1.1.1.1 的快取平台完成重新設計,透過五項 Rust 程式語言層面的最佳化,將每項快取記憶體條目的用量由 953 位元組降至 420 位元組,減幅達 56%。以 Cloudflare 目前系統內同時儲存超過 2,500 億項 DNS 快取記錄計算,是次改動令整個伺服器群合共節省約 100 TB 記憶體,相當於 130 台第 13 代伺服器的 RAM 容量,而過程中毋須增添任何一台新伺服器。

從953到420位元組 五招Rust優化如何做到

負責是次項目的系統工程師在網誌文章中拆解具體做法。其中影響最大的一項改動,是將 Rust 語言中的 Vec 及 String 兩種資料結構,改用固定大小的 Box 陣列(boxed slice)取代。由於 DNS 記錄一經寫入快取後不再需要動態擴展,原本 Vec 與 String 為配合擴容而預留的容量元資料(capacity metadata)便屬多餘負擔,單是這一項改動已為全網節省超過 15 TB 記憶體。其餘四項優化包括:整合 DNS 記錄各區段並以位移(offset)方式索引、僅在有需要時才儲存記錄擁有者資訊、將體積較大的枚舉(enum)變體改用指標包裝、以及將記錄改以原始位元組(raw bytes)而非解析後結構儲存。綜合五項改動,每項快取條目連帶的記憶體配置(allocation)亦由 1.1 KB 降至 461 位元組,減幅約 58%。

250億級快取規模 一個位元組浪費即蝕250GB

Cloudflare 在文中強調,Big Pineapple(即支撐 1.1.1.1、Gateway DNS、DNS Firewall 及 AS112 等多項 DNS 服務的內部快取平台)任何時間都同時持有超過 2,500 億項 DNS 快取記錄,令記憶體效率的重要性被無限放大——每項記錄多浪費 1 個位元組,全網計算下來即等於損失超過 250 GB 記憶體。是次優化並非單純節省成本,效能亦同步提升:快取寫入(insert)吞吐量由每秒 62.5 萬項提升至 89.3 萬項;查詢(lookup)延遲則由 828 納秒降至 670 納秒。相關改動由今年 5 月中起逐步推展至 7 月初,期間實測顯示,每部伺服器實例的第 99 百分位(p99)記憶體用量由 9.3 GB 降至 5.3 GB,第 90 百分位(p90)用量亦由 6.5 GB 降至 3.8 GB。

公共DNS競爭 省成本背後基建角力

1.1.1.1 是 Cloudflare 於 2018 年推出的免費公共 DNS 解析服務,主打查詢速度快、注重私隱,與 Google 的 8.8.8.8、Cisco 旗下 OpenDNS 等同類服務長期爭奪全球流量。DNS 解析雖屬用戶日常上網時甚少察覺的底層基建,但查詢速度與穩定性直接影響網頁載入體驗,亦是各大雲端及網絡服務商鞏固自身基建優勢的戰場之一。透過純軟件層面的重寫,在不擴充實體伺服器規模的前提下大幅釋放記憶體資源,意味相關運算資源可轉投其他服務用途,長遠亦有助壓低單位查詢的營運成本。Cloudflare 目前未有透露是否會將同類優化方案,進一步套用至旗下其他快取或儲存密集型產品線。

項目 優化前 優化後 洞察
單項快取記憶體用量 953 位元組 420 位元組 減幅56%,五項Rust結構優化疊加而成
記憶體配置量 1.1 KB 461 位元組 減幅約58%,主因棄用可擴容容器
快取寫入吞吐量 每秒62.5萬項 每秒89.3萬項 效能提升非單純犧牲速度換空間
查詢延遲 828納秒 670納秒 省記憶體同時查詢更快
全網總節省 約100 TB 相當於130台第13代伺服器RAM,無需加硬件

是次改動反映即使規模已達全球級數的網絡基建,仍有相當空間單靠程式碼層面重構壓縮成本,毋須依賴持續擴充硬件規模。至於同類優化能否複製到其他雲端服務商的公共 DNS 產品、又會否掀起業界新一輪「軟件降本」比拼,仍需視乎後續市場反應及各家基建策略而定。

免責聲明:本專頁刊載的所有投資分析技巧,只可作參考用途。市場瞬息萬變,讀者在作出投資決定前理應審慎,並主動掌握市場最新狀況。若不幸招致任何損失,概與本刊及相關作者無關。而本集團旗下網站或社交平台的網誌內容及觀點,僅屬筆者個人意見,與新傳媒立場無關。本集團旗下網站對因上述人士張貼之資訊內容所帶來之損失或損害概不負責。

撰文:經一編輯部