《自研流量回放工具原理及在廣告業務的應用實踐_李茂森.pdf》由會員分享,可在線閱讀,更多相關《自研流量回放工具原理及在廣告業務的應用實踐_李茂森.pdf(28頁珍藏版)》請在三個皮匠報告上搜索。
1、自研流量回放工具原理及在廣告業務的應用實踐分享人:李茂森個人簡介姓名:李茂森所在組織:技術中臺-質量工程部專業領域:服務端測試目 錄010203業務背景及測試挑戰自研流量回放工具FlowCopy介紹流量回放在廣告業務中的應用04總結與展望業務背景與測試挑戰01廣告投放系統介紹高并發 億級PV 萬級QPS低時延 處理時間100ms 傳輸數據量大鏈路復雜 大型分布式系統 對外為HTTP接口 多模塊之間頻繁RPC通信廣告系統技術特點測試挑戰隨著系統復雜度的提高,傳統自動化測試的弊端凸顯高成本人工編寫自動化腳本,耗時高需求變動較快,自動化腳本維護成本高自動化腳本質量與QA個人經驗和能力強相關覆蓋場景有
2、限自動化腳本只覆蓋核心場景特殊場景(第三方/模型依賴)覆蓋難效率低排查自動化問題效率低,賦能RD效果差自研流量回放工具FlowCopy介紹02流量回放介紹簡單來說,流量錄制與回放是通過復制線上真實流量(錄制),在測試環境進行模擬請求(回放)相對于傳統自動化測試,流量回放技術可明顯提高測試效率低成本無需人工編寫自動化腳本使用工具錄制回放流量,維護成本低覆蓋場景全面使用真實流量,覆蓋大部分場景定制篩選特殊流量,輔助人工測試效率高大量真實請求測試,快速定位問題廣告業務測試中的流量錄制回放需求現有流量回放工具是否能滿足需求廣告引擎流量錄制回放需求:RPC協議支持流量的錄制需要支持多種RPC協議,如Th
3、rift、Brpc等 明文流量錄制多數RPC協議為二進制,需要錄制為明文流量 C+語言支持盡量的多語言支持,必須能夠錄制C+相關應用現有流量回放工具介紹業務無侵入,因為intercept的存在,實時導流對線上影響小基本tcp協議棧的協議都可以支持,幾乎是目前支持協議最多的流量回放工具基于ip層發送,流量更加真實支持分布式架構,可以當作壓測工具使用優點:不足:部署難度大,需要同時部署tcpcopy和intercept,參數較復雜 錄制和回放都是基于底層數據包,難以進行流量的篩選和定制安裝部署簡單、對業務應用無侵入,只占用機器帶寬支持過濾和修改流量,可實時轉發流量支持回放速率控制,可用于性能測試優
4、點:不足:開源版本只支持HTTP1.1及以下協議 無法解析二進制的數據交互協議,如Protobuf等不僅支持流量回放,還可以擴展到sandbox的其它能力通用的錄制/回放能力,多協議支持強大的debug功能,支持內部調用鏈的追蹤優點:不足:只適用于JAVA類應用 有一定上手難度,熟悉JAVA/JVM是否滿足需求:是否滿足需求:是否滿足需求:不滿足,不支持C+應用不滿足,無法錄制明文流量不滿足,無法錄制RPC協議流量回放的演進之路1.0基于應用層錄制2.0基于網絡協議棧錄制流量回放1.0業務測試中需要明文流量,但現有工具無法支持RPC流量錄制背景:1、人工在業務系統中插入代碼并編譯2、搭建測試環
5、境后,使用tcpcopy等工具在系統入口處回放流量實現方案:1、系統代碼變更,需要同步修改編譯,維護成本高2、侵入式保存流量,可能影響程序功能3、依賴真實測試環境配置,環境搭建成本高4、測試環境配置會影響流量保存的真實度存在問題流量回放2.0無侵入式保存HTTP/RPC明文脫敏流量,支持千級QPS流量保存/改寫FlowCopy架構通過網絡協議棧獲取流量,無侵入使用epoll多路復用加多線程處理,高性能HTTP/RPC多協議支持,明文脫敏流量存儲錄制請求流量無需測試環境FlowCopy使用以GRPC接口錄制為例:流量錄制FLowcopy1、無需手動編譯proto文件,運行指定方法名稱即可2、無需
6、真實測試環境,以JSON格式存儲protobuf請求數據3、支持轉發到特定服務,獲取相關返回流量1、啟動flowcopy,機器ip為192.169.5.3-req_addr=192.162.1.2:8000-port=8000-timeout=1000-method_name=example.personSerivce/sendrequest-output_filename=./dump.json2、啟動tcpcopy,目標ip為flowcopy機器iptcpcopy-x 8000-192.169.5.3:8000-s 192.168.5.4-c 192.168.1.x零代碼編寫、一鍵錄制!參
7、數字段描述示例服務轉發地址req_addr需要轉發gRPC服務的IP地址127.0.0.1,為空則不轉發服務端口portgRPC服務的端口號。50051請求超時時間timeout單個請求的最長轉發時間,單位為毫秒。5000方法名method_namegRPC方法的全名。說明格式為包名.接口名/方法名。package.service/methodproto文件名proto_namegrpc方法所在a:1,b:2說明多個元數據以半角逗號(,)分隔。流量輸出路徑output_filename流量存儲的文件名稱./dump.json線上服務技術難點-明文流量錄制/Person.protomessage
8、 Person required string userName=1 optional int64 favoriteNumber=2;repeated string interests=3;/Person.json userName:Martin,favoriteNumber:1337,interests:daydreaming,hacking/Person.thriftstruct Person1:required string userName,2:optional i64 favoriteNumber,3:optional list interestsIDL序列化為JSON格式HTTP協
9、議多為明文傳輸,Protobuf、Thrift等二進制數據傳輸格式,如何用明文表示?為什么使用JSON格式:1、JSON格式較主流,易于構造和閱讀2、目前IDL多為TLV(Tag|Length|Value)格式,方便轉換注意:1、暫無通用序列化方式2、自研序列化時需制定統一的轉換規則自動化流量錄制 流量脫敏采集,千萬級存儲,隨用隨取 全自動化錄制,無需人工干預 自動更新廢棄數據,周期執行 通用JSON數據格式,相關測試工具直接使用流量錄制流量回放在廣告業務中的應用03流量回放的應用-Diff測試優點:基于線上真實數據,覆蓋場景全面 效率高,快速發現問題 操作簡單、標準化程度高整體思路:獲取線上
10、真實流量 使用自研工具,在不同的環境進行請求回放 對比接口的返回結果Diff測試-應用舉例測試場景:系統的重構或遷移,整體功能不變或變動更少,DIFF測試可快速發現問題問題舉例:XX服務重構項目中,90%問題通過DIFF測試發現,大幅節省QA時間系統重構測試:測試場景:新功能提測,DIFF測試保證歷史邏輯不受新代碼影響問題舉例:XX服務新功能代碼修改,新功能實驗關閉下存在較多Diff,排查后發現代碼邏輯有誤功能回歸測試:測試場景:新功能提測,可以通過DIFF測試結果,判斷是否功能符合預期問題舉例:對于XX服務效果提升類DIFF測試,針對特定字段結果分析,判斷功能不符預期新功能驗證測試:Diff
11、測試應用中遇到的問題 除了程序bin文件,其它配置/數據需要完全相同 可利用容器數據卷,Apollo同步等方式實現數據一致性:第三方/下游依賴:程序邏輯存在隨機?配合RD進行業務去隨機開關 時間戳等動態變化字段?結果預處理,黑白名單規則、浮點截斷 返回數組格式順序不一致?復雜數據排序,JSON-Schema規則對比程序邏輯隨機,特殊字段處理:核心數據脫敏:錄制流量時,對敏感數據做預處理,確保數據加密和脫敏 錄制流量時,需要同時錄制請求對應的響應數據 配合自研MockServer進行測試.流量回放的應用-性能測試整體思路:線上獲取流量 使用自研工具,在測試環境對程序進行性能測試 對比不同版本的性
12、能結果 真實流量壓測,結果指標可信度強 可篩選特定流量,按需壓測 完全節省壓測請求構造時間,隨用隨壓優點:性能測試-應用舉例測試場景:對于測試服務上線前進行性能測試,得到的結果與基線版本(線上)對比問題舉例:XX服務在QPS300情況下平響時間上漲18%,排查為代碼邏輯缺陷導致,修復后上線上線前性能卡點:測試場景:對于性能優化的需求,可基于性能測試得到的結果反復優化,以達到預期目標問題舉例:XX服務性能優化項目,QPS800下壓測平響時間降低8%,TP99時間降低12%,與上線后數據基本一致性能專項驗證:測試場景:對于測試服務上線前可進行穩定性測試,提前發現導致程序崩潰等嚴重的問題問題舉例:X
13、X服務在壓測后進程崩潰,分析Coredump后發現多線程處理異常邏輯,修復后上線程序穩定性測試:流量回放的應用-功能測試&問題排查整體思路:線上獲取流量 使用自研工具,在測試環境對程序進行請求 觀察測試環境返回或日志,排查問題 功能測試:根據線上真實請求,轉換為測試請求 問題排查:基于線上問題場景,快速篩選流量進行排查應用舉例:應用數據流量存儲級別1000w+接口覆蓋率發現問題數量100%500+流量回放相關測試技術建設至今,已經應用于360廣告投放引擎的所有模塊,完全嵌入功能、性能及Diff測試流程,成為引擎端QA質量保障的重要手段總結與展望04未來展望流量回放3.0 探索基于ebpf的云原生流量回放方案 降低部署難度,提高功能豐富度 智能流量采集.平臺化/服務化 更好結合現有測試平臺,實現流量回放平臺化 結合流水線能力,實現服務化推廣到更多業務 更多業務推廣,提升工具ROI 完善接口規范和使用說明THANK YOU