《商業化業務的旁路環境建設與應用實踐_王小冷.pdf》由會員分享,可在線閱讀,更多相關《商業化業務的旁路環境建設與應用實踐_王小冷.pdf(28頁珍藏版)》請在三個皮匠報告上搜索。
1、商業化業務的旁路環境建設與應用實踐分享人:王小冷個人簡介姓名:王小冷所在組織:360技術中臺專業領域:搜索廣告引擎和front測試負責人目 錄010203背景建設和運維應用實踐04后續規劃旁路環境建設的背景線下線上環境不一致導致缺陷露出 環境的復雜性決定了線上線下環境很難保持一致 線上線下環境不一致的隱患配置不一致配置不一致詞表不一致詞表不一致下游環境不一致下游環境不一致第三方依賴不一致第三方依賴不一致機器環境不一致機器環境不一致舊場景回歸不全舊場景回歸不全新場景測試不到新場景測試不到缺陷缺陷露出露出業務環境可行性文件配置詞表下游環境第三方依賴機器環境 灰度、全量 小流量 灰度、全量 更新頻率
2、 實時數據 完整服務(Shard0-ShardN)模型服務 memcache Zk,AS等 MEM,CPU OS線上問題排查困難機房A機房B機房C機房D多機房監控用戶反饋線上走查線上問題流量發向了哪個機房機器A機器B機器C機器D單機房內同服務多機器流量打向了哪臺下游機器配置不能更改日志信息不全單機器內無定位線索 無法確定流量走向 即使找到流量所在機器,定位具體原因的信息依然不足旁路環境建設和運維 機器資源準備旁路環境部署旁路運維機器資源準備目標獲取旁路需要的最小機器資源CGIBADC主服務N2臺模型1 模型2 模型N 模型服務N1臺zkredisASmemcacheredis第三方服務N3臺k
3、afka各模型資源需求各模塊資源需求各服務資源需求機器需求清單 機器資源和配置清單(機器XX臺,cpu,mem,os配置)依賴:同機房資源申請和審批旁路環境部署-部署方案機器1(配置/機房)機器資源清單機器2(配置/機房)機器N(配置/機房)模塊(CPU/MEM/OS/QPS)線上服務梳理模型(CPU/MEM/OS)第三方依賴(資源需求)Hulk對每一臺旁路機器分組管理 通過打tag標記機器用途旁路環境部署模塊部署Bin腳本配置詞表模塊啟動腳本詞表同步腳本過期詞表刪除腳本日志刪除腳本一般詞表(多種格式)軟鏈詞表基線詞表快照數據實時消息&offset主配置下游鏈接配置第三方服務鏈接配置遠程日志配
4、置小流量實驗配置Bin文件同步Bin軟鏈和線上一致依賴lib同步日志、打點目錄同步 單模塊部署考慮點如下:旁路環境部署模塊部署 單模塊部署重點關注需要修改的配置和詞表相關腳本onlineJUSTJUSTCOPYCOPY旁路COPY ANDCOPY ANDMODIFYMODIFY配置修改旁路的下游模塊修改旁路的外部服務修改旁路的遠程日志機生成唯一的kafka Topic 代碼倉庫配置更新 Apollo配置更新 自動上線腳本更新詞表實時消息同步詞表同步詞表更新詞表刪除 避免丟消息1.同步offset2.同步消息 保持軟鏈1.打包2.Copy&解壓 Crontab任務刪除 Crontab任務同步 水
5、滴平臺同步/etc/cron.d同步 Transfer集中分發 常駐進程同步旁路環境部署模型&第三方服務部署 模型較大(百G),多機部署,并保障N臺機器的服務構成一個完整的模型副本 模型20+,場景豐富,分別部署CTR模型名CVR OCPC PCMOBILE主流量小流量主流量小流量IP(多個)、PORT進程名,部署路徑IP(多個)、PORT進程名,部署路徑IP(多個)、PORT進程名,部署路徑IP(多個)、PORT進程名,部署路徑ip1:port1 旁路模型ip2:port2ipN:portN 第三方服務根據部署手冊部署,并提供ip:port供模塊調用旁路運維環境一致性旁路導致環境不一致的原因
6、分析:bin上線 配置配置上線手動修改配置配置同步服務未開啟 詞表詞表上線手動修改詞表詞表同步腳本問題(未運行,運行失敗,運行時間差異)上線導致旁路嵌入上線流程其它原因一致性監控原因復雜,個性化從結果側監控場景簡單直接從源頭預防解決方案:旁路運維旁路嵌入上線流程旁路上線旁路流水線回歸占用旁路環境,生成報告,釋放旁路環境,旁路環境回滾到全流量狀態檢驗通過?旁路手動驗證灰度上線檢驗通過?全量上線(含旁路)結束緊急需求?開啟上線緊急上線流程否是是否否 旁路承載線上驗證功能 旁路和線上主流量環境一致 旁路驗證期間監控不生效是流程如圖:環境運維一致性監控詞表一致性監控獲取詞表list獲取文件md5或大小
7、一致性CHECK遍歷詞表list 從git獲取模塊配置 解析配置,根據模塊先驗知識,獲取詞表list 根據一致性分析刪去不需要比較的詞表 獲取最終的詞表list 以server的形式提供服務小于1M獲取md5獲取大小Deeplink否是獲取詞表路徑是redis(md5或大?。┓?從redis獲取線上和旁路機器的詞表md5或者大小 比較一致性并生成報告 N次不一致發到報警組 分析報警的準確率,召回率,得到不需要比較一致性的詞表不需要比較一致性的詞表應用實踐 基于真實脫敏流量攔截三方考慮盲區基于小流量實驗的異常測試問題排查線上一致性監控基于真實脫敏流量攔截三方考慮盲區業務復雜 引擎/排序/召回 模
8、塊10+復雜歷史邏輯流量復雜 PC/MOB/垂搜 億PV/DAY 主流量/實驗流量問題:解決方案:基于真實脫敏流量攔截三方考慮盲區!PC獲取線上流量MOB垂搜 旁路統計報告分析報告發現問題流量改寫基于真實脫敏流量攔截三方考慮盲區典型應用場景:固定廣告位或者樣式需求新增xx樣式,固定出首位xx樣式,固定出左側小流量試驗下,只能出A,B,C樣式特定流量下,新樣式A,B,C生效 字段限制類需求xx字段不能為空,且大于固定長度xx字段長度小于80 xx數組長度大于2小于4 新功能是否生效xx組件是否能出為什么是旁路?應用效果:借助旁路環境,2023共發現三方考慮盲區10+基于小流量實驗的異常測試問題:
9、線上實驗參數按需配置,而部分實驗參數存在較久,回歸測試時只根據線上的參數狀態進行測試,有新建實驗后引起程序崩潰的風險線上脫敏流量改寫后流量壓力測試基于實驗參數進行流量改寫旁路環境解決方案:基于小流量實驗的異常測試異常流量生成:Git獲取配置獲取小流量實驗參數單獨實驗參數實驗參數組合達到閾值實驗參數listBool型整型浮點型True/false0/隨機N個整數0.0/隨機N個浮點數針對每一個實驗參數實驗參數組合否線上流量隨機組合應用應用效果效果 沉淀到流水線,例行運行 發現2+COREDUMP小流量實驗流量文件問題排查打開日志開關開始排查,旁路設置使用標記通過ES能夠獲取問題流量旁路壓測獲取問
10、題流量穩定復現能夠確定出問題的模塊日志定位Debug定位結束排查,恢復旁路環境問題流量運行多次打開接口開關定位問題模塊否否否是是是場景一:流量問題排查線上問題或者用戶反饋復現問題,獲得請求流量線上環境無法定位具體原因流量問題排查 特定廣告無展現 廣告展現樣式異常流量問題排查流程旁路輔助定位排查問題排查DIFF開始排查,旁路設置使用標記分析diff,定位原因結束排查,恢復旁路環境場景二:實驗問題排查實驗流量批量脫敏流量改寫和下發對照流量實驗接口返回對照接口返回實驗上線效果不符合預期大盤無法分析具體原因實驗問題排查 實驗效果不理想旁路輔助定位排查實驗問題排查流程線上一致性監控契機:旁路監控報警人工
11、check旁路詞表更新OK線上未更新有必要進行線上一致性監控旁路監控發現線上詞表更新問題實現方案:獲取線上全量機器列表每臺線上機器定時運行腳本進行一致性check判斷結果,N次不一致報警根據配置獲取線上模塊詞表&bin 服務redis(存放詞表Md5或者大?。┫螺dmaster代碼,獲取模塊配置MYSQL(每次一致性check結果)線上一致性監控Bin一致性監控開始獲取bin大小灰度機器listredischeck一致性并報警配置一致性監控開始獲取md5灰度機器listredischeck一致性并報警各機房分別判斷個性化配置歸一化獲取bin大小非灰度機器listredischeck一致性并報警獲
12、取md5灰度機器listredischeck一致性并報警各機房分別判斷個性化配置歸一化 bin一致性監控:需要考慮灰度上線 配置一致性監控:需要考慮灰度上線,機房分布,個性化配置線上一致性監控個別機器的詞表不一致大部分機器詞表都不一致監控發現的典型問題:詞表不一致 因網絡問題downloader失敗導致lock,后續無法更新(TRUE)機器重啟后更新腳本未開啟(TRUE)詞表位置更換,未及時更新同步腳本(TRUE)機器不再承載流程,更新腳本未開啟(FALSE)手動上線詞表,未同步到所有機器(FALSE)同步詞表時,中轉機上詞表未完成更新(TRUE)詞表較大時,check時詞表還在更新過程中(FALSE)-升級腳本,連續N次不同報警升級腳本bin不一致灰度上線(FALSE)手動改bin(TRUE)部分機器推全失?。═RUE)應用效果:一致性監控發現問題10+后續規劃后續規劃全鏈路多渠道旁路建設豐富使用場景THANK YOU