《商业化业务的旁路环境建设与应用实践_王小冷.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或者大小)下载master代码,获取模块配置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)部分机器推全失败(TRUE)应用效果:一致性监控发现问题10+后续规划后续规划全链路多渠道旁路建设丰富使用场景THANK YOU