性能提升20%,字節(jié)跳動HTTPDNS從中心下沉到邊緣
摘要:本文介紹了HTTPDNS服務從中心遷移至邊緣詳細的落地過程。主要內容為:
- HTTPDNS下沉邊緣實踐遇到的挑戰(zhàn),包括服務放置、流量調度
- HTTPDNS下沉邊緣解決方案
- 從性能、成本出發(fā),談談HTTPDNS下沉邊緣后的收益
傳統(tǒng)的DNS流程中,客戶端基于UDP協(xié)議向Local DNS服務器發(fā)送DNS查詢請求,這個過程中會存在緩存刷新不可控、DNS劫持、解析結果跨網、解析超時等風險,近年來,HTTPDNS解決方案逐漸興起。HTTPDNS是面向多端應用(移動端APP,PC客戶端應用)的域名解析服務,通過使用HTTP或HTTPS協(xié)議替代傳統(tǒng)的UDP協(xié)議,客戶端的域名解析請求直接由HTTPDNS服務器接收和響應,實現了域名防劫持、精準調度、解析結果及時生效。
以字節(jié)跳動內部業(yè)務為例,如抖音、今日頭條、西瓜視頻和番茄小說等,QPS峰值達千萬級,解析請求量日達萬億次,日常流量極大,為保障業(yè)務穩(wěn)定運行,應用了火山引擎移動解析HTTPDNS(以下簡稱HTTPDNS)為域名提供遞歸DNS服務,支撐起超大解析請求量。
由于HTTPDNS服務全面覆蓋字節(jié)跳動頭部APP,在節(jié)約成本以及性能優(yōu)化上存在強烈訴求,在此背景下HTTPDNS團隊經過調研,決定將HTTPDNS服務從中心遷移至邊緣,以下將從實踐難點、解決方案和收益多個維度分享詳細落地過程。
一、HTTPDNS下沉邊緣實踐挑戰(zhàn)
1.服務放置
由于邊緣計算節(jié)點分散、基礎設施異構等原因,邊緣服務放置一度成為下沉邊緣過程中的研究熱點,現有方案在處理邊緣放置問題時,會將其轉化為指定場景下資源約束的目標優(yōu)化問題,針對成本、質量、流量方向,行業(yè)內均有對應研究:
- 針對成本,有研究通過多云的模式進行最小冗余成本建模,來實現資源動態(tài)分配。
- 針對質量,有研究通過構建服務依賴模型、最佳冗余動態(tài)算法保障可靠性,以及成本和質量均衡模型,來實現質量保障。
- 針對流量,有研究從流量遷移、設備移動、時空軌跡以及資源預部署等,實現流量穩(wěn)定遷移。
在實際應用過程中,流量及設備遷移特征顯著、邊緣節(jié)點性能差異、穩(wěn)定性波動大等因素,會干擾現有放置問題模型,因此需要進一步探索基于流量特征和邊緣節(jié)點資源質量的放置問題。
2.流量調度
邊緣計算的流量調度場景主要分為端邊調度和云邊調度,部分場景會出現邊邊調度。不同調度階段擁有相對成熟的調度技術,包括基于DNS的端邊調度、基于BGP ANYCAST的骨干網路由調度以及云網絡下的云原生流量調度。
實踐過程中面臨的流量調度挑戰(zhàn),主要圍繞著端邊調度和云邊調度:
- 端邊調度挑戰(zhàn):5G和工業(yè)互聯(lián)網接入的大量異構設備,以及設備遷移導致的流量波動,是端邊調度需要應對的主要挑戰(zhàn)。解決這一問題可借助云邊協(xié)同作業(yè)與全局分布式調度的策略。然而,實際操作遇到的難題主要在于缺乏精確的調度手段,并且未能充分利用客戶端與邊緣節(jié)點之間協(xié)同聯(lián)動的潛力。盡管通過實時流量感知配合機器學習進行訓練是一種可行的方法,但這種方案處理的數據量巨大,導致應用成本過高,難以滿足現實需求。
- 云邊調度挑戰(zhàn):邊緣計算由于其固有特性,在處理大規(guī)模集中式數據方面相較于傳統(tǒng)中心化架構存在一定局限性。因此,云邊協(xié)同的流量處理和計算模式采納了業(yè)界廣泛認可的計算架構,云邊調度發(fā)揮了云計算與邊緣計算各自的優(yōu)勢,達成數據和流量的更高效處理。然而,邊緣計算在資源分配上仍面臨局部不足與全局分散的挑戰(zhàn)。舉例來說,在約束優(yōu)化路由模型中,評價指標有時與實際業(yè)務場景不符,未能充分考慮用戶體驗。此外,行業(yè)內某些區(qū)域分層調度模型在實際應用中遇到了邊緣基礎設施不統(tǒng)一的問題,同時區(qū)域內及區(qū)域間的容災問題也尤為突出。
二、HTTPDNS下沉邊緣解決方案
1.可視化評價模型指導服務放置
針對基于流量特征和邊緣節(jié)點資源質量的放置問題,在實踐過程方案,HTTPDNS團隊不斷進行嘗試優(yōu)化,最終選擇通過使用全鏈路的撥測和數據采集方法,基于實時數據驅動的模式,進行在線的放置算法仿真訓練,形成可視化的評價模型,以指導HTTPDNS服務在邊緣機房的節(jié)點選擇和服務放置。基本流程如下圖:
2.接入GTM打造調度解決方案
針對流量調度挑戰(zhàn),由于內部服務采用域名(配合兜底策略)的接入方式,接入域名配置DNS智能解析實現用戶就近訪問邊緣接入節(jié)點??紤]到邊緣接入節(jié)點IP的網絡服務可靠性和質量對比IDC機房優(yōu)勢不明顯,因此HTTPDNS團隊最終決定引入云調度GTM解決調度問題。
火山引擎云調度GTM基于解析進行流量調度,可以實現流量的就近接入(地理位置/性能)、負載均衡。GTM借助分布式、多協(xié)議健康檢查能力來實現故障容災(Failover),諸如“同城容災”、“異地多活”等場景。此外GTM還提供了多云環(huán)境下的流量編排、資源粘合能力,可視化的健康檢查數據分析、操作日志等功能幫助排查定位問題,便于日常運維。
重點應用:
- 智能調度:通過云調度GTM的「智能調度-容量優(yōu)先」模式實現基于機房容量的智能調度,在滿足機房容量的前提下生成全局時延最低的DNS調度規(guī)則,從而能夠在邊緣節(jié)點割接/故障時實現自動容災;
- 故障容災:支持邊緣節(jié)點通過控制臺、API接口和Agent的方式上報節(jié)點容量等信息,基于節(jié)點的數據上報情況和健康檢查探測的情況,云調度GTM作為策略中心更新和下發(fā)調度策略,實現邊緣節(jié)點的故障容災。
調度解決方案優(yōu)勢:
- 建設成本低:部署輕量,架構侵入較小,建設成本較低;整體配置和管理簡單;
- 動態(tài)調度保障性能最優(yōu):在邊緣多節(jié)點、多機房的場景下,能夠基于性能和容量進行動態(tài)調度,在確保機房水位低于目標水位的前提下實現全局性能最優(yōu);
- 支持可視化:支持調度配置和結果的可視化展示、健康檢查可視化查詢。
應用火山引擎云調度GTM來實現容量調度是一次新的嘗試,在全面接入云調度GTM之后,對比傳統(tǒng)域名智能解析調度模式,邊緣節(jié)點容量調度模式能從性能、容災、成本等方面帶來收益,也驗證了云調度GTM在方案中不可或缺的重要性。
調度解決方案收益:
指標類型 | 指標 | 收益 | 總結 |
性能 | 請求時延 | 平均接入時延 -5.01%(-11ms) | 整體延時優(yōu)化5% |
請求成功率 | 持平 | ||
TTFB | 平均 TTFB -4.1%(-3.5ms) | ||
流量波動 | cpu負載波動標準差:5%->1%,優(yōu)化80% | ||
容災 | 自動容災成功率 | 100% | 智能解析線路級故障感知 |
邊緣故障感知耗時 | 60s | ||
流量收斂時長 | 3min 90%+收斂 | ||
成本 | 帶寬成本 | 回源帶寬降低 10% | 運維:配置、切流管理,完全自動托管 |
成本 | 運維成本 | 易用:基于容量&性能矩陣,均勻分流。僅需要用戶維護機房容量信息。 |
三、更強大的解析調度,性能提升20%+
實踐過程持續(xù)了六個月時間,在成本優(yōu)化與性能提升方面均取得顯著效果。
1.成本優(yōu)化
總成本優(yōu)化約35%,其中負載均衡資源優(yōu)化約50%,計算資源優(yōu)化約30%,帶寬成本優(yōu)化約70%,且最終實現了邊緣集群總容量千萬 QPS 級別,與中心機房完全互備。
2.性能提升
完成從中心到邊緣的遷移后,火山引擎移動解析HTTPDNS服務性能出現顯著提升,對比同類服務出現顯著優(yōu)勢。
在邊緣服務建設完成后,我們逐步將原中心機房承載的千萬 QPS 級別流量遷移到邊緣服務集群上。根據實際的性能提升情況, 先后將全國大部分區(qū)域的三大運營商接入流量遷移到邊緣。在這個過程中,我們關注并采集流量的網絡指標變化數據,各個區(qū)域均有性能收益,詳見下表:
下沉區(qū)域 | 總耗時-平均值-差異百分比(%) | 總耗時-50分位-差異百分比(%) | TTFB-平均值-差異百分比(%) | TTFB-50分位-差異百分比(%) |
西南 | -15 | -44 | -38 | -64 |
西北 | -16 | -36 | -36 | -47 |
東北 | -10 | -14 | -15 | -23 |
華北 | -16 | -41 | -29 | -63 |
華中 | -23 | -50 | -37 | -70 |
華南 | -7 | -15 | -11 | -36 |
為了能夠更直觀感受火山引擎移動解析HTTPDNS服務與其他HTTPDNS服務的性能數據對比,我們使用國內主流的第三方撥測平臺,進行了近千個撥測節(jié)點、覆蓋全國的撥測對比。從撥測結果可以看出,不論是從地理位置上,還是分運營商討論,火山引擎移動解析HTTPDNS都在首屏時間、建立連接時間、首包時間和內容下載時間上表現優(yōu)異,最終實現總下載時間實現領先。
全國:
廠商 | 總下載時間(s) | 首屏時間(s) | 建立連接時間(s) | 首包時間(s) | 內容下載時間(s) |
火山 HTTPDNS | 0.252 | 0.254 | 0.024 | 0.026 | 0.037 |
其他-1 HTTPDNS | 0.279 | 0.282 | 0.035 | 0.04 | 0.039 |
其他-2 HTTPDNS | 0.327 | 0.329 | 0.05 | 0.063 | 0.039 |
分運營商:
運營商 | 廠商 | 總下載時間(s) | 首屏時間(s) | 建立連接時間(s) | 首包時間(s) | 內容下載時間(s) |
中國電信 | 火山 HTTPDNS | 0.26 | 0.263 | 0.023 | 0.027 | 0.031 |
中國聯(lián)通 | 火山 HTTPDNS | 0.242 | 0.244 | 0.024 | 0.026 | 0.04 |
中國移動 | 火山 HTTPDNS | 0.256 | 0.257 | 0.024 | 0.026 | 0.038 |
中國電信 | 其他-1 HTTPDNS | 0.287 | 0.291 | 0.034 | 0.04 | 0.034 |
中國聯(lián)通 | 其他-1 HTTPDNS | 0.272 | 0.275 | 0.036 | 0.041 | 0.043 |
中國移動 | 其他-1 HTTPDNS | 0.279 | 0.28 | 0.036 | 0.038 | 0.041 |
中國電信 | 其他-2 HTTPDNS | 0.33 | 0.333 | 0.049 | 0.061 | 0.033 |
中國聯(lián)通 | 其他-2 HTTPDNS | 0.33 | 0.332 | 0.053 | 0.068 | 0.043 |
中國移動 | 其他-2 HTTPDNS | 0.32 | 0.321 | 0.049 | 0.06 | 0.041 |
總結
整體下沉實踐方案中,HTTPDNS團隊不斷進行新嘗試,探索并應用了基于GTM的反饋式調度模型,更好地應對了邊緣計算資源局部緊張、全局分散以及穩(wěn)定性抖動頻繁的挑戰(zhàn),從而弱化邊緣放置問題帶來的資源開銷,并提升流量調度效率、資源利用率以及降低容災和運維難度。
通過下沉邊緣,HTTPDNS進一步優(yōu)化使用成本,提升服務性能,而此次實踐通過將HTTPDNS服務從中心云架構遷移至邊緣云架構模式,使邊緣計算在互聯(lián)網傳統(tǒng)業(yè)務場景中得到應用,也是邊緣云云原生的一次工程探索實踐。
本項目應用了火山引擎邊緣計算多個產品服務,不僅使用了邊緣網絡提供的四、七層負載均衡產品,還將HTTPDNS服務全部運行在邊緣容器上,通過彈性公網IP完成邊緣服務的回源以及控制。HTTPDNS聯(lián)動邊緣計算打造的下沉邊緣實踐案例,作為行業(yè)實踐,希望為同行業(yè)提供一些有益參考。
未來,HTTPDNS團隊將持續(xù)探索邊緣計算容器化彈性調度技術的應用,應對億級接入、千萬QPS流量所帶來的流量遷移、接入抖動問題,并進一步提升設備利用率并節(jié)約成本。