vivo流量录制回放平台实践

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. 2021 vivo开发者大会 互联网技术专场 vivo平台产品系统架构师
2. 2021.12.16 vivo开发者大会-互联网技术专场
3. 2021.12.16 vivo开发者大会-互联网技术专场
4. vivo业务情况 应用商店 浏览器 视频 游戏中心 vivo钱包 vivo官网 音乐 天气 业务 种类多 流量大 系统 复杂度高 可靠性 要求高 JOVI … … 2021.12.16 vivo开发者大会-互联网技术专场
5. • 测试用例编写难。 • 用户真实操作行为不容易模拟。 • 代码执行逻辑通过脚本难验证。 测试痛点 • 测试用例设计易遗漏。 • 测试覆盖率难以把控。 • 测试环境维护成本高。 • 测试脚本维护成本高。 2021.12.16 vivo开发者大会-互联网技术专场
6. 2021.12.16 vivo开发者大会-互联网技术专场
7. 解决方案 零使用成本 无侵入可插拔 通用可扩展 • 学习成本低 • 应用系统无侵入 • 易于扩展 • 使用成本低 • 随启随停 • 灵活多变 • 接入成本低 2021.12.16 vivo开发者大会-互联网技术专场
8. 流量录制回放 生产 机器 测试 机器 回放 结果 无需编写测试用例 通过丰富的流量容 易形成高覆盖率 录制 流量 回放 流量 录制流量完美模拟 对象对比效率高、 用户真实行为 验证更齐全 2021.12.16 vivo开发者大会-互联网技术专场
9. 2021.12.16 vivo开发者大会-互联网技术专场
10. 用户层 网关层 平台架构 应用配置 任务配置 录制任务 回放任务 定时任务 插件配置 系统配置 任务启动 任务停止 任务通知 任务巡检 心跳检测 运行监控 业务层 数据储存 数据查询 数据去重 调用链 安全系统 数据分析 流量聚类 报表统计 工单系统 权限系统 V消息 短信 邮件 异常统计 .... 系统通知 数据层 2021.12.16 vivo开发者大会-互联网技术专场
11. 业务回归 Java Agent核心架构 测试赋能 数据分析 录制回放 插件管理 用例管理 覆盖率分析 脚本生成 压测模型 定时任务 链路对比 持续集成 …… 安全分析 精准化 参数分析 依赖治理 异常分析 依赖梳理 拓扑关系 性能分析 ... Dubbo 基 础 能 力 层 HTTP 基 础 依 赖 层 基 础 容 器 层 插件管理 录制插件 回放插件 数据Mock 链路采集 心跳管理 时间回流 依赖分析 异常模拟 环境同步 字节码插桩 内存防护 对象对比 配置加载 数据分析 数据存储 流量去重 链路分析 报表统计 ... 作业管理 作业权限 作业执行 Agent文件 sh脚本 作业查询 ... Hession TTL Jvm Agent LogBack Asm Fastjson 无侵入式AOP解决方案 Guava 2021.12.16 vivo开发者大会-互联网技术专场
12. 入口流量 字节码拦截 入口流量 HTTP 调用记录 业务Service 流量录制过程 存储服务 子调用 子调用 DB 数据加密 子调用 字节码拦截 子调用 Dubbo 序列化 ...... 业务Service 外围依赖调用 Method(Dubbo、Redis、HTTP) 调用拦截 Before调用拦截 After 调用拦截 调用拦截 方法调用入参、返回值 调用记录 Throws调用拦截 外部介质 2021.12.16 vivo开发者大会-互联网技术专场
13. 流量录制难点和方案 • • • • 严格限制并发录制数量。 限制单条流量子调用数量。 对录制过程进行监控、异常降级。 对相同录制子调用合并。 • 业务系统进行数据上下文传递 • 利用Agent对业务线程池进行动态修饰。 • 利用公司的调用链进行上下文数据标识传递。 • 录制数据脱敏。 • 严格控制流量查看权限。 • 对录制的数据进行储存加密。 • 依靠请求参数去重。 • 依靠调用链路进行去重。 2021.12.16 vivo开发者大会-互联网技术专场
14. 发起调用 回放器 入口流量 HTTP/Dubbo 调用记录 业务Service 流量回放过程 回放器 回放服务 回放结果 比对服务 子调用 字节码拦截 Dubbo 反序列化 DB ...... 业务Service 外围依赖调用 Method(Dubbo、Redis、HTTP) Mock返回 参数对比 Before调用拦截 选择子调用 子调用 调用记录 外部介质 2021.12.16 vivo开发者大会-互联网技术专场
15. 流量回放难点和方案 • System.currentTimeMillis() native方法动态替换 • LocalDateTime Mock时间调用函数。 • 生产配置中心数据动态替换测试环境配 置数据。 • 生产和测试环境内存型数据同步。 • 支持全局降噪字段。 • 支持接口级别降噪字段。 • 支持应用级别降噪字段。 • 支持自定义脚本。 • 对不同子调用制定不同匹配策略。 • 优先进行调用栈比对。 • 调用栈相同寻找差异最小调用。 2021.12.16 vivo开发者大会-互联网技术专场
16. 丰富的协议 平台已经支持的录制和回放协议 组件类型 组件描述 录制 回放 入口流量 HTTP HTTP服务端 √ √ √ Dubbo-Provider Dubbo服务端 √ √ √ Tars-Server Tars服务端 √ √ √ Dubbo-Consumer Dubbo客户端 √ √ × MyBatis MyBatis组件 √ √ × Ibatis Ibatis组件 √ √ × Redis Redis客户端 √ √ × Hibernate Hibernate组件 √ √ × OkHTTP OkHTTP组件 √ √ × Apache-HTTP-Client Apache-HTTP组件 √ √ × Guava-Cache Guava缓存 √ √ × Eh-Cache EhCache缓存 √ √ × Caffeine-Cache Caffeine缓存 √ √ × Tars-Client Tas客户端 √ √ × Elasticsearch Es客户端 √ √ × Spring-Mongo Spring-Mongo客户端 √ √ × 2021.12.16 vivo开发者大会-互联网技术专场
17. 管理平台 文件平台 业务机器 数据服务 选择应用 查询应用 录制回放任务启动过程 通过Java Agent Attach机制 保证零侵入、可插拔、随启随停 任 务 执 行 时 序 图 创建任务 执行任务 任务请求 请求校验 脚本和资源文件下发 Agent文件安装 脚本启动Agent 加载任务配置 加载配置 返回配置 Agent初始化 持续心跳/数据上报 保存数据 数据查询 查询数据和任务状态 2021.12.16 vivo开发者大会-互联网技术专场
18. 流量回放详情 2021.12.16 vivo开发者大会-互联网技术专场
19. 2021 vivo开发者大会 互联网技术专场 可视化的执行过程 可视化的回放执行过程,便于分析失败问题 2021.12.16 vivo开发者大会-互联网技术专场
20. 回归代码覆盖率 利用JaCoco计算的流量回归代码覆盖率展示 2021.12.16 vivo开发者大会-互联网技术专场
21. 2021 vivo开发者大会 互联网技术专场 定时录制与回放 定时任务批量执行,提高操作效率 2021.12.16 vivo开发者大会-互联网技术专场
22. 2021.12.16 vivo开发者大会-互联网技术专场
23. 核心指标 0代码10min 接入完成 10k+次 录制回放 核心业务 200+应用 问题发现 多数回归测试 场景提效 2021.12.16 vivo开发者大会-互联网技术专场
24. 其他方面应用 流量压测 问题定位 安全分析 通 过分 析录制 流 流 量回 放重现 线 分 析流 量识别 安 量生成压测模型。 上问题。 全风险 录 制指 定流量 排 查问题。 2021.12.16 vivo开发者大会-互联网技术专场
25. 2021.12.16 vivo开发者大会-互联网技术专场
26. 其他方面应用 精准化测试 DevOps结合 异常模拟 • 代码变更影响分析 • 结 合 DevOps 做 • 系统资源依赖分析 • 回归测试用例推荐 自动回归测试 • 强弱依赖判断 2021.12.16 vivo开发者大会-互联网技术专场
27. 开源共创 插件贡献 Guava插件 Caffeine插件 Ok-HTTP插件 Apache-HTTP插件 EhCache插件 【共创地址】 https://github.com/alibaba/jvm-sandbox-repeater 2021.12.16 vivo开发者大会-互联网技术专场
28. 2021 vivo开发者大会 互联网技术专场 刘延江 | vivo平台产品系统架构师 相关技术文章后续 将在公众号发布 敬请关注

Home - Wiki
Copyright © 2011-2024 iteam. Current version is 2.137.1. UTC+08:00, 2024-11-16 02:43
浙ICP备14020137号-1 $Map of visitor$