商业化业务的旁路环境建设与应用实践

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. 商业化业务的旁路环境建设与应用实践 分享人:王小冷
2. 个人简介 • 姓名:王小冷 • 所在组织:360技术中台 • 专业领域:搜索广告引擎和front测试负责人
3. 目录 01 02 • 背景 • 建设和运维 03 • 应用实践 04 • 后续规划
4. 旁路环境建设的背景
5. 线下线上环境不一致导致缺陷露出  环境的复杂性决定了线上线下环境很难保持  线上线下环境不一致的隐患 一致  灰度、全量 可行性 文件  MEM, CPU  OS 机器环 配置不一致 配置 境  灰度、全量  小流量 下游环境不一致 业务环境  memcache  Zk, AS等 词表不一致 第三方 第三方依赖不一致 词表 依赖 下游环 境  完整服务(Shard0-ShardN)  模型服务  更新频率  实时数据 机器环境不一致 旧场景回归不全 缺陷 新场景测试不到 露出
6. 线上问题排查困难  无法确定流量走向  即使找到流量所在机器,定位具体原因的信息依然不足 线上问题 监控 用户反馈 线上走查 多机房 机房 A 机房 C 无定 位线索 流量打 向了哪台下游 机器 流量发 向了哪个机 房 机房 B 机房 D 单机房内同服务 多机器 机器 A 机器 C 机器 B 机器 D 单机器内 配置不能更改 日志信息不全
7. 旁路环境建设和运维  机器资源准备  旁路环境部署  旁路运维
8. 机器资源准备 目标 获取旁路需要的最小机器资源 模型服务N1台 主服务N2台 CGI 模型1 第三方服务N3台 zk redis kafka memcac he 模型2 A B AS 模型N C D redis 各模型资源需求 各模块资源需求 机器需求清单 资源申请和审批 各服务资源需求  机器资源和配置清单(机器XX台,cpu,mem,os配 置)  依赖:同机房
9. 旁路环境部署--部署方案 机器资源清单 机器1(配置/机房) 机器2(配置/机房) 机器N(配置/机房)  Hulk对每一台旁 路机器分组管理  通过打tag标记 线上服务梳理 模块(CPU/MEM/OS/QPS) 模型( CPU/MEM/OS ) 第三方依赖(资源需求) 机器用途
10. 旁路环境部署—模块部署  单模块部署考虑点如下: • • • • • • • • • Bin文件同步 Bin软链和线上一致 依赖lib同步 日志、打点目录同步 主配置 下游链接配置 第三方服务链接配置 远程日志配置 小流量实验配置 Bin 脚本 配置 词表 • • • • 模块启动脚本 词表同步脚本 过期词表删除脚本 日志删除脚本 • • • • • 一般词表(多种格式) 软链词表 基线词表 快照数据 实时消息 & offset
11. 旁路环境部署—模块部署  单模块部署重点关注需要修改的配置和词表相关脚本 修改旁路的下游模块 onlin e JUST COPY 配置 修改旁路的远程日志机 生成唯一的kafka Topic COPY AND MODIFY 旁路 • 代码仓库配置更新 • Apollo配置更新 • 自动上线脚本更新 修改旁路的外部服务 实时消息同步  避免丢消息 1. 同步offset 2. 同步消息 词表同步  保持软链 1. 打包 2. Copy&解压 词表更新      词表删除  Crontab任务删除 词表 Crontab任务同步 水滴平台同步 /etc/cron.d同步 Transfer集中分发 常驻进程同步
12. 旁路环境部署—模型&第三方服务部署  模型较大(百G),多机部署,并保障N台机器的服务构成一个完整的模型副本  模型20+,场景丰富,分别部署 IP(多个)、PORT 主流量 模型名 PC CTR 小流量 CVR OCPC …… 主流量 MOBILE 小流量 进程名,部署路径 IP(多个)、PORT 旁路模型 进程名,部署路径 ip1:port1 IP(多个)、PORT ip2:port2 进程名,部署路径 ipN:portN IP(多个)、PORT 进程名,部署路径  第三方服务根据部署手册部署,并提供ip:port供模块调用
13. 旁路运维—环境一致性 旁路导致环境不一致的原因分析: 解决方案:  bin 上线  配置 上线 导致 配置上线 场景简单 直接从源头预防 旁路嵌入 上线流程 手动修改配置 配置同步服务未开启  词表 词表上线 手动修改词表 词表同步脚本问题(未运行,运行失败, 运行时间差异) 其它 原因 原因复杂,个性化 从结果侧监控 一致性监 控
14. 旁路运维—旁路嵌入上线流程 流程如图: 旁路上线 否 紧急需求? 开启上线 是 旁路流水线回归 旁路手动验证 紧急上线流程 占用旁路环境,生成报告,释放旁路 环境,旁路环境回滚到全流量状态 检验通过? 否 是 灰度上线  旁路承载线上验证功能 检验通过? 否  旁路和线上主流量环境一致 是 全量上线(含旁路)  旁路验证期间监控不生效 结束
15. 环境运维—一致性监控 词表一致性监控 获取词表list  从git获取模块配置  解析配置,根据模块先验知 获取文件md5或大小 遍历词表list Deeplink 比较的词表  获取最终的词表list  从redis获取线上和旁路机器 是 获取词 表路径 的词表md5或者大小 否  比较一致性并生成报告 小于1M  N次不一致发到报警组 识,获取词表list  根据一致性分析删去不需要 一致性CHECK 是 获取md5 否 获取大小  以server的形式提供服务  分析报警的准确率,召回 率,得到不需要比较一致性 的词表 redis(md5或大小) 不需要比较一致性的词表
16. 应用实践  基于真实脱敏流量 拦截三方考虑盲区  基于小流量实验的 异常测试  问题排查  线上一致性监控
17. 基于真实脱敏流量拦截三方考虑盲区 问题: 业务复杂 流量复杂  引擎/排序/召回  PC/MOB/垂搜  模块10+  亿PV/DAY  复杂历史逻辑  主流量/实验流量 解决方案: 基于真实脱敏流量拦截三方考虑盲区! 获取线上流量 PC MOB 垂搜 …… 流量改写 旁路 统计报告 分析报告 发现问题
18. 基于真实脱敏流量拦截三方考虑盲区 典型应用场景: 为什么是旁路?  固定广告位或者样式需求 新增xx样式,固定出首位 xx样式,固定出左侧 小流量试验下,只能出A,B,C样式 特定流量下,新样式A,B,C生效  字段限制类需求 xx字段不能为空,且大于固定长度 xx字段长度小于80 xx数组长度大于2小于4  新功能是否生效 xx组件是否能出 应用效果:  借助旁路环境,2023共发现三方考虑盲区 10+
19. 基于小流量实验的异常测试 问题: 线上实验参数按需配置,而部分实验参数存在较久,回归测试时只根据线上的参数状态进行测试,有新建实验 后引起程序崩溃的风险 解决方案: 线上脱 敏流量 基于实验参数 进行流量改写 改写后 流量 旁路环境 压力 测试
20. 基于小流量实验的异常测试 异常流量生成: Git获取配置 应用效果 获取小流量实验参数 线上流量 针对每一个实验参数 整型 Bool型 True/fal se • 沉淀到流水线,例行运行 浮点型 • 发现2+COREDUMP 0 .0/随机 N个浮点 数 0 /随机 N个整数 单独实验参数 实验参数组合 否 实验参数list 随机组合 小流量实验流量文件 实验参数组合 达到阈值
21. 问题排查 流量问题排查 流量问题排查流程 开始排查,旁路设置使用标记  特定广告无展现  广告展现样式异常 场景一: 流量问题 排查 旁路压测获取 问题流量 否 旁路辅助定位排查 通过ES能够获 取问题流量 是 问题流量运行 多次 否 稳定复现 是 打开接口开关 定位问题模块 否 能够确定出问 题的模块 是 线上问题或者 用户反馈 复现问题,获 得请求流量 线上环境无法 定位具体原因 打开日志开关 日志定位 Debug定位 结束排查,恢复旁路环境
22. 问题排查 实验问题排查 实验问题排查流程  实验效果不理想 开始排查,旁路设置使用标记 批量脱敏流量改写和下发 场景二: 实验问题 排查 旁路辅助定位排查 对照流量 实验流量 实验接口返回 对照接口返回 DIFF 实验上线 效果不符合 预期 大盘无法分 析具体原因 分析diff,定位原因 结束排查,恢复旁路环境
23. 线上一致性监控 契机: 旁路监控发现线上词表更新问题 旁路监控报警 旁路词表更新OK 线上未更新 人工check 有必要进行线上一致性监控 实现方案: 下载master 代码,获取 模块配置 获取线上全量 机器列表 根据配置获 取线上模块 词表&bin 服 务 每台线上机器 定时运行脚本 redis(存放 词表Md5或 者大小) MYSQL(每 次一致性 check结果) 进行一致性 check 判断结果,N 次不一致报警
24. 线上一致性监控 配置一致性监控 Bin一致性监控 开始 开始 灰度机器 list 非灰度机 器list 获取bin 大小 获取bin 大小 redis check一致性并 报警 redis check一致性并 报警 灰度机器list 灰度机器list 各机房分别判断 各机房分别判断 个性化配置归一化 个性化配置归一化 获取md5 获取md5 redis redis check一致性并报警 check一致性并报警  bin一致性监控:需要考虑灰度上线  配置一致性监控:需要考虑灰度上线,机房分布,个性化配置
25. 线上一致性监控 监控发现的典型问题: • 因网络问题downloader失败导致lock,后续无法更新(TRUE) • 机器重启后更新脚本未开启(TRUE) 个别机器的词表不一致 • 词表位置更换,未及时更新同步脚本(TRUE) • 机器不再承载流程,更新脚本未开启(FALSE) 词表不 一致 • 手动上线词表,未同步到所有机器(FALSE) • 同步词表时,中转机上词表未完成更新(TRUE) 大部分机器词表都不一致 • 词表较大时,check时词表还在更新过程中(FALSE)--升级脚 本,连续N次不同报警 灰度上线(FALSE) bin不一 致 升级脚本 部分机器推全失败 (TRUE) 手动改bin(TRUE) 应用效果:一致性监控发现问题10+
26. 后续规划
27. 后续规划 全链路多渠道旁路建设 丰富使用场景
28. THANK YOU

Accueil - Wiki
Copyright © 2011-2024 iteam. Current version is 2.137.1. UTC+08:00, 2024-11-16 12:59
浙ICP备14020137号-1 $Carte des visiteurs$