汽車之家APP端到端全鏈路治理優秀技術實踐

一、端到端質量提升背景
在移動互聯網和智能化時代,手機App軟件已經成為方便工作和生活的重要工具。為了提升用戶體驗,打造精品汽車消費者陣地,汽車之家對App服務質量問題進行了全方位的專項治理。
二、端到端全鏈路服務質量問題
在實際運營中,App用戶到服務端的鏈路長復雜性較高,存在著眾多的網絡鏈路和節點包括移動設備、無線網絡、核心網、服務網等。在這樣一個大規模的分布式環境中,系統的質量和性能對于用戶體驗和服務的穩定性至關重要。在這些環節中,一旦出現低質量請求和異常,影響整個系統的性能和穩定性,導致用戶App端上訪問問題,如響應慢、響應卡頓、錯誤等,特別是在流量峰值時期,容易引起系統崩潰和服務不可用等問題,嚴重影響用戶的使用體驗。因此,如何進行端到端全鏈路低質量請求治理,提升系統的質量和性能成為了一個迫切的需求。
三、端到端鏈路低質量請求治理系統化方案
在實施端到端全鏈路低質量請求治理方案的過程中,綜合分析端到端全鏈路低質量請求治理是一個全局性、復雜性的問題。需要綜合運用多種技術和管理手段,充分考慮不同的業務場景和用戶需求,探索科學的治理方法、有效治理手段、工具化建設、系統化架構升級,其次通過加強團隊協作、實時監控、及時預警等管理手段,保障系統的安全和穩定運行同時提升全鏈路系統質量和性能。
1、建立端到端全鏈路低質量請求標準
低質量請求治理首先是需要確定“用戶從App客戶端到服務端訪問”低質量請求有效識別方法和邏輯。共識指標、量化具體鏈路節點服務問題,幫助各個部門和團隊對于低質量請求的概念達成一致,為治理工作提供基礎和共同語言,明確相關部門和人員在低質量請求治理中的職責和權限,進而保障治理工作的高效執行,另外便于進行監督和評估,確保治理工作按照既定標準開展。
具體“低質量請求”LQR為判斷后端服務質量標準是:整體以主App端上秒開率(1000ms)為基準,定義了客戶端請求耗時(渲染<150ms)+ 后端請求耗時(網絡平響<600ms、服務平響<250ms ),即后端治理方向以“低質量請求 (LQR): ”耗時>850ms OR 狀態碼 !=2/3XX為判斷標準。

2、建立低質量請求指標分析大盤
收集打通客戶端網絡庫、CDN、負載、源站,整合端到端的全鏈路日志,基于大數據分析建立低質量請求治理大盤,從而更加精準地把握服務質量情況,可以及時發現低質量請求問題,快速響應和處理。同時,也能夠系統地展示、分析和監控各個環節的數據,幫助團隊快速定位問題,提高治理效率,在指標大盤中,每個指標都與相應的部門和負責人對應,明確了責任歸屬。低質量請求大盤數據包括域名、接口、網絡類型、協議、版本、模塊、地域、運營商、網絡類型、負載、源站、部門、負責人的指標問題分類,通過大盤指標分析確定主App低質量請求(LQR)處于較高水位,整體LQR占比超7%、日影響用戶幾百萬;低質量請求大盤實現數據驅動運營、信息共享,為整體推動各團隊全面治理低質量問題提供了強有力的數據支撐。
從低質量請求治理大盤整體分析,App端到端全鏈路低質量幾個主要問題和治理的大概思路:
客戶端方面:網絡庫日志分析發現,客戶端大量TCP連接的建立和釋放,增加了請求延遲和資源消耗,影響訪問速度和效率。這可能是由于客戶端缺乏對連接復用以及長連接管理等機制造成的。解決方向是提升長連接,減少TCP連接的建立和釋放次數,降低服務器負擔和提高請求處理效率。
網絡鏈路方面:由于CDN網絡質量差、節點過于集中、負載過高等原因引起CDN節點不穩定或異常,導致請求訪問延遲和請求失敗。本地網絡環境不好,域名使用本地DNS進行解析過程耗時較長、訪問速度慢、域名被惡意劫持。使用的HTTP協議版本較老、未開啟HTTP/2、未使用更高效的加密協議,無法多路復用請求串行發送,影響并發處理能力、訪問數據傳輸速度、穩定性和可靠性。
服務端方面:負載均衡LB到源站鏈路長、鏈路復雜、應用源站接口邏輯復雜導致后端整體返回平均響應耗時長、錯誤率高。這可能是由于負載均衡算法不合理、源站負載過高、源站接口存在瓶頸等原因引起的。解決方法包括優化服務端架構、采用更先進的負載均衡算法、優化接口邏輯、加強監控和診斷等方式來提高服務端性能和穩定性。

四、后端系統建設“智網”端到端的鏈路擇優治理平臺落地
為解決現有業務域名多、建連次數多、訪問性能損耗、切換CDN性能損耗等問題。客戶端與后端負載整體改造公共域名收斂的方式,降低客戶端建連次數;其次是分析評估建立多個CDN廠商節點質量,并進行智能擇優調度,提升性能及可靠性;另外整體的端到端全鏈路最優配置;因此“智網”是一個綜合提升性能與穩定性的低質量請求治理系統。
客戶端升級支持域名統一收斂技術架構,核心思路是將上百個域名收斂到幾個域名,減少 DNS 查詢、減少 TCP 連接建立時間和提高網絡帶寬利用率,提升連接復用率,這些優勢可以提高系統鏈路性能,具體表現在以下幾個方面:
減少 DNS 查詢:通過客戶端域名統一收斂,不同的服務共享同一個域名。這樣可以減少 DNS 查詢次數,縮短域名解析時間,從而加快網頁加載速度。
減少 TCP 連接建立時間:TCP 是一種面向連接的協議,每次建立連接都需要進行握手和斷開操作,這會消耗很多時間和資源。通過客戶端域名統一收斂,可以將多個請求集成到同一個 TCP 連接中,避免重復建立和斷開連接,從而減少了連接建立的時間和開銷。
提高網絡帶寬利用率:通過客戶端域名統一收斂,可以將多個請求打包到同一個 TCP 連接中,從而減少請求和響應之間的網絡延遲,提高網絡帶寬利用率。這對于大流量的企業系統尤其重要,可以有效地降低網絡帶寬成本。

1、域名統一收斂架構
需要在服務器端和客戶端都進行相應的配置和開發工作,方案關鍵技術:使用統一的域名服務器、反向代理、連接池技術,實現客戶端域名統一收斂,提高系統的質量和性能:
建立一個統一的域名服務器:在這個服務器中配置好所有需要訪問的服務的 IP 地址和對應的域名。在客戶端請求時,通過該統一的域名服務器將請求轉發到對應的服務。
使用反向代理:通過在服務器端配置反向代理,將多個不同的服務映射到同一個域名下。這樣客戶端只需使用一個域名就可以訪問多個服務。
使用連接池技術:指在程序啟動時預先創建一定數量連接,并將這些連接保存在一個池子里。當客戶端需要訪問HTTP 服務時,從連接池中選取一個可用的連接進行操作。這種方式可以避免頻繁地建立和斷開連接,提高連接復用率。
具體方案是收斂域名個數與CDN個數對齊,分別為百度a.xxxxxx.cn,金山b.xxxxxx.cn,平安c.xxxxxx.cn以及華為d.xxxxxx.cn,收斂規則為請求的url前面增加收斂域名,原域名變為收斂域名的一級path,請求子path和參數不變。
例如,將xx.app.autohome.com.cn/v1/args?key=xxx替換為a.xxxxxx.cn/xxx.app.autohome.com.cn/v8/args?key=xxx。
客戶端進行收斂域名替換,可以更好地控制質量,同時切實達到最終收斂的目的。
架構調用過程:
- App冷啟動時,調用CDN接口,獲取擇優的收斂域名(如果擇優接口調用失敗,走非收斂方式請求業務真實域名)(客戶端添加緩存,啟動優先用緩存), 接口返回立即啟用擇優域名。
- 客戶端請求D+,對擇優域-收斂域名進行解析,獲取CDN節點IP。
- 客戶端與CDN節點IP進行http2、http3(通過客戶端開關和服務端CDN支持決定是否最終開啟)連接保持。
- App啟動完成后,立即對剩余對應其他CDN廠家的收斂域名進行建聯,同時定時45s分鐘保持建聯。
- 如果發現擇優域名接口返回收斂域名發生變化,判斷切換成本,進行立即切換,并復用上述鏈接,進行快速建聯。
- 客戶端發起的URL請求需要從底層對URL進行轉換,前面增加收斂域名,形成收斂URL,并進行請求。
- Proxy-NG收到收斂URL,進行還原并訪問到最終源站,請求完成。

2、智能分析CDN資源
了解用戶的地理位置、設備類型和網絡環境等信息,該功能通過比較CDN廠商在特定地區的網絡質量指標,例如延遲、帶寬等,來確定最佳的CDN廠商和邊緣節點,根據這些信息用于調度用戶擇優邊緣節點。實現方案是App在啟動時會上報請求埋點域名相關信息,不同埋點域名解析到不同的CDN廠商,這些域名的請求信息會跟隨其他的訪問日志一起寫入到網絡庫日志。系統會收集所有的埋點數據,運營商、根據客戶端ip獲取地區信息、耗時和錯誤率信息,根據時間-地區-運營商-CDN廠商(源站),通過flink獲取網絡庫的日志數據,對各個省份各個城市數據進行整合放入vm集群中,然后通過算法每十分鐘獲取前半個小時內各個區域的平響和錯誤率, 根據平響和錯誤率計算出該地區最優質的cdn廠商。

3、CDN擇優/容災調度
CDN擇優功能是一種高效、智能的CDN節點選擇機制,根據用戶的地理位置和智能分析的CDN節點質量,智能地選擇最優的CDN節點,提高網絡性能和可用性;另外域名所使用的CDN出現問題時,客戶端能夠快速將連接切換到其他CDN廠家,以確保業務不中斷,因此提升服務訪問性能和可靠性。服務端核心流程:
- 服務端根據用戶端IP計算出當前用戶的大致地理位置。
- 根據用戶的網絡日志域名解析到的IP匹配對應的CDN節點。
- 根據用戶的網絡日志,計算出當前域名/IP節點的請求錯誤率。
- 根據不同地區/CDN維度下的錯誤率, 決策出當前地區最優的CDN廠商。
- 篩選出異常錯誤率的IP節點。
- 切換當前地區CDN的流量, 下發最優CDN列表和異常IP列表給用戶端。

4、端到端全鏈路最優最佳實踐策略
綜合網絡鏈路、CDN配置、負載源站鏈路多種技術手段提高數據傳輸效率和可靠性。
域名解析到優質CDN廠商:優質鏈路,提高請求成功率和可靠性。
端上域名啟用HTTPDNS:加速DNS解析,減少了不必要的域名解析時間和延遲,有效避免DNS劫持,提升網絡請求的速度和響應效率,提高請求成功率和可靠性。
端上域名TTL時間調整為60s:加快更新DNS緩存以及更快地獲取新的IP地址,降低DNS解析的延遲時間。
CDN開啟HTTP2.0協議:利用二進制協議替換了文本協議,通過頭部壓縮、流控、優先級等技術提升了性能和效率,實現多路復用,使得單個連接中同時處理多個請求和響應,提高網絡傳輸效率。
CDN開啟GZIP、BR壓縮:可以顯著地降低減小數據傳輸的大小,提高網絡傳輸效率,減少用戶等待時間。
描述:開啟GZIP、BR壓縮可以。
CDN開啟TLSv1.3協議:該協議具有更高的安全性和可靠性,有效防止網絡攻擊和數據泄露,相比目前在用TLSv1.2協議建聯過程可以減少1RTT,提高網絡傳輸的安全性和可靠性。
CDN開啟HTTP回源:可快速向源站請求資源并更新緩存,減少CDN與源站SSL建聯時間,提高服務響應速度。
源站負載到應用保持長連接:避免頻繁的連接建立和關閉維護的開銷,降低網絡傳輸的延遲,提高網絡傳輸效率。
源站精簡鏈路:減少服務傳輸的中間負載、減少不必要的網絡傳輸,提高數據傳輸的效率和穩定性;保證信息傳輸通暢和快速。

五、端到端全鏈路質量治理成果
通過App域名收斂與智能擇優體系落地,解決CDN廠商故障業務無縫切換,CDN節點智能擇優,用戶鏈路優中選優,客戶端統一收斂域名,服務端透明無感50%以上的流量切到到主要 4個收斂域名,大大提高連接復用,降低網絡開銷,主App低質量請求經過多個技術團隊協同治理大幅降低7.x%到2.x%,實現百萬用戶端到端體驗提升。

六、端到端全鏈路質量治理未來規劃
持續的完善端到端的質量治理體系與工具化能力建設,結合更加智能化的機器學習等技術工具,實現自動化地監控系統各環節的關鍵指標,快速發現和排除問題,提高整個系統的可靠性和魯棒性。
在App端到端全鏈路接口低質量請求治理基礎上,開啟全資源質量治理進程,建立圖片、視頻低質量識別與治理體系,對多媒體資源進行有效的壓縮、加速和保護,以提高用戶的訪問速度和安全性,持續的治理低質量請求,度提高主App訪問速度、降低故障率、增強數據的安全性和穩定性,提升用戶交互體驗,從而提高用戶滿意度和市場競爭力,進一步增強用戶粘性和轉化率。

































