流量回放在酷家乐的实践

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1.
2. CONTENT 01 02 03 背景 演进历程 总结展望
3.
4. 服务粒度细化 酷家乐:当前共有服务近2K,其中核心服务150+, 回归任务重 每个服务少则几十,多则几百的接口数 回归困难 中台化趋势 1 支付中台、方案中台、渲染中台、多语言中台、UIC 中台、户型中台、权限权益中台、商品中台 ... ... 敏捷迭代如何快速回归? 2 回归如何保障质量,减少漏测? 3 回归工作怎么提升人效?
5. 流量回放 我们借助网上开源工具,结合了公司内部的一些 资源平台,进行了流量回放的实践和演进。
6.
7. 工具 特性 Goreplay 支持 HTTP 请求的录制和回放,简单易用 Diffy 支持 HTTP,提供diff能力,可以智能降噪 jvm-sandbox-repeater 提供录制、回放、mock等能力,扩展性强
8. goreplay goreplay是一个开源的网络监控工具。可以用 来记录流量,并用于回放、负载测试等。 示例: goreplay录制:sudo ./goreplay --input-raw :80 --output-file 'test.log' --http-allow-method GET goreplay回放:sudo ./goreplay -input-file 'test.log' --output-http 10.x.x.x:xx goreplay针对单接口实时回放:sudo ./goreplay --input-raw :80 --output-http 10.x.x.x:xx --http-allow-method GET --http-allow-url /api/xxx/xxx
9. diffy 举个例子 diffy平台是Twitter开源的一个工 具,通过配置可进行快速的结果对 比,而且自带噪声过滤功能
10. 完美适配 Diffy New Goreplay Prod Result Proxy Old Old
11. 搭建一套diffy环境有成本,且管理杂乱无章 命令操作,容易出错 查询类接口需要人为识别出来
12.
13. 利用监控调用链智能筛选 1. 把目标接口对数据库操作做一波过滤 2. 查询api子调用 3. 把被调用的api对数据库的操作做一波过滤 解法
14. 优点 ◆ 智能降噪 ◆ 全链路校验 ◆ 普适性 缺点 ◆ 不支持写请求回放,只支持查 询类请求 ◆ 对环境稳定性依赖高 ◆ 做不到跨环境回放
15.
16. 影子库、影子表 回放流量走影子库、影子表,可以验证全链路 单服务 以单服务维度,把服务外部的交互全部mock掉, 包括子调用、存储
17. 框架基于JVM-Sandbox,封装了以下能力: 1. 支持子调用mock 2. 开放数据上报,录制结果可上报到自己的服务 端
18.
19.
20.
21. 流量录制 多维度流量回放 业务检测 接口自动化case生成 线上问题排查 赋能其它平台
22. 优点 不足 ◆ 子调用可mock,无环境约束 ◆ 小问题较多,需要较大精力去完善 ◆ 存储类子调用也mock了,增删 ◆ 子调用录制mock需要插件支持 改查接口都可使用 ◆ 子调用也可以不mock,走真实 链路 ◆ 录制数据存储,可以拓展使用场 景 ◆ 数据存储量较大 ◆ 回放失败误报率高,排查成本大 ◆ 启动过程会对应用的 CPU 使用 率、平均耗时产生比较大的冲击 ◆ 操作步骤较多,不够便捷
23. 问题一:小问题较多,需要去完善 1 console独立部署,分布式部署, 4 支持更多conten-type类型 通过shell脚本和repeater进行交互 5 2 repeater状态同步和控制 完善日志记录,建设日志收集能 力。分析日志,修复日志中暴露的 问题 3 优化mock匹配算法 6 前端展示和优化
24.
25. 问题二:子调用录制mock需要插件支持 1 官方已开源支持插件: http,java,mybatis,ibatis,redis,dubbo,hibernate,jpa, socketio,okhttp,apache-http-client,guava-cache,eh- cache,caffeine-cache 2 当前kurepeater支持插件: http,mybatis,ibatis,redis,hibernate,okhttp,socketio, apache-http-client,guava-cache,eh-cache,caffeine, rocketmq,mongo,kafka,hbase,caffeine,cos,jpa, mybatis-plus,toad,soa,es等 3 找到对应框架最合适的埋点,ignore过滤不需要的事件
26. 问题三:数据存储量大 1 使用es存储录制和回放的详细数据 2 区分有用流量和无用流量,对无用流量和回放数据进行定 期自动清理 3 优化采样逻辑,减少无效流量,从源头优化
27. 1 黑白名单过滤接口 支持指定用户的采样 2 3 以接口维度设置 录制采样率 4 利用监控流量数据, 智能生成采样比例
28. 问题四:回放误报率高,排查成本大 • 完善插件,完善mock逻辑 • 多模式回放,统计回放条数和成 功率,支持对已排查接口打标 • 优化回放diff逻辑,增加ignore字段过 滤,提升比对准确性 • 借用diffy思路,进行降噪回 放 • 将录制回放的详细信息解析后 在前端展示 • 接口本地请求调试
29. 降噪回放 添加过滤字段
30. 1、对录制回放的流量按批次按接口进行聚合,统计回放条数和成功率。 2、支持接口排查打标。 3、支持按接口和回放状态过滤回放结果。
31. 4、将录制回放的详细信息解析后在前端展示 5、详细展示子调用信息
32. 6、本地调试接口,自动填充参数
33. 问题五:启动过程会对应用的 CPU 使 用率,平均耗时产生比较大的冲击 依赖于soa的服务版本调节,在启动前将服务流量切 走,启动完毕再将流量切回
34. 问题六:操作步骤较多,不够便捷 1 初始的步骤:配置->录制环境安装->录制环境激活(录制)->录制环 境冻结->回放环境安装->回放环境激活->触发回放->回放环境冻结 优化后步骤:配置->开启任务,等待企信通知即可 2 优化UI,关联跳转
35. 工具 Diffy Goreplay 内部平台 Repeater 探索中
36.
37. • 更多请求编码格式的支持 • 更多的插件支持 • 服务配置不同的支持 • 和CI深度融合 • 更好的数据度量和跟进能力
38. • 回放准确性提升,进一步减少预期外的差异 • 排查更便捷便捷,定位原因方便 • 操作更流畅,更简便
39. • 平替接口自动化的回归能力 • 流量数据沉淀后,封装各种个性化的数据,赋能其 它平台使用。 • 基于沉淀数据,进行深入数据分析,发现系统潜在 问题。 • 基于机器学习和人工智能的能力
40. 1、kudiffy-一个很酷的自动化回归平台: https://mp.weixin.qq.com/s?__biz=MzU3Nzk2MTY3NA==&mid=2247483954&idx=1&sn=95b15600 ba6ed1117f79235c3a0aa3a2 2、流量回放框架jvm-sandbox-repeater的实践: https://mp.weixin.qq.com/s?__biz=MzU3Nzk2MTY3NA==&mid=2247483970&idx=1&sn=84697620 d6cf93d95f8f41624fb3be79 3、流量回放框架jvm-sandbox-repeater的实践二: https://mp.weixin.qq.com/s?__biz=MzU3Nzk2MTY3NA==&mid=2247484373&idx=1&sn=624e1ba4 97121cfb525bb044f7f0522e 4、流量回放框架jvm-sandbox-repeater的实践三: https://mp.weixin.qq.com/s?__biz=MzU3Nzk2MTY3NA==&mid=2247484840&idx=1&sn=f330697a1 29451f1436fe81eb7a12157 5、基于大数据日志系统的流量回放平台: https://mp.weixin.qq.com/s?__biz=MzU3Nzk2MTY3NA==&mid=2247484627&idx=1&sn=1eaf02726 0dfe869994159e456a65c29
41.

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