写点什么

滴滴开源 Rdebug:基于真实流量的研发、调试、测试利器

  • 2019-09-16
  • 本文字数:1329 字

    阅读完需:约 4 分钟

滴滴开源 Rdebug:基于真实流量的研发、调试、测试利器

近日,滴滴在 GitHub 上开源后端研发、调试、测试的实用工具 Rdebug,全称 Real Debugger,中文称作真 · Debugger 。使用真实的线上流量进行线下回放测试,提升研发效率、保障代码质量,进而减少事故。一起来具体了解吧。

背景

随着微服务架构的普及和应用,一个复杂的单体服务通常会被拆分成多个小而美的微服务。在享受微服务带来便利的同时,也要接受因为微服务改造带来的问题:需要维护的服务数变多、服务之间 RPC 调用次数增加。


这就造成线下环境维护成本大大增加,其次线下环境涉及到的部门较多,维护一个长期稳定的线下环境也是一个挑战;业务快速发展、需求不断迭代,手写单测又因复杂的业务逻辑以及复杂的服务调用需要 mock 多个下游服务,导致手写和维护单测成本特别的高;手动构造数据,又不够全面真实。以上问题都严重影响 RD 的研发效率,并且增加线上产生事故的隐患。



RD 迫切需要一个只需在本地部署代码、不用搭建下游依赖、使用真实数据,进行快速开发、调试、测试的解决方案。Rdebug 基于流量录制、流量回放的思路,能够巧妙的实现上述方案。

宗旨

提升研发效率、降低测试成本、缩短产品研发周期,保障代码质量、减少线上事故。

使用全景图

全新的研发体验

  • 只需部署模块代码,无需搭建下游服务;

  • 在 macOS 本地回放,开发、调试、测试无需登录远程服务器;

  • 流量录制支持常用协议,FastCGI、HTTP、Redis、Thrift、MySQL 等;

  • 回放速度快,单次回放秒级别。

录路径重定向

为了方便 RD 在本地开发、测试,Rdebug 支持路径重定向。


当线上部署路径和本地代码路径不一致时,当代码中存在大量线上路径硬编码时,无需入侵式修改代码,只需要简单的配置即可实现路径重定向。


即代码可以存放在任何路径下回放。

时间偏移

流量回放时会自动把时间偏移到流量录制的时间点。


在代码中获取时间时,会获得录制时间点之后的时间。所以,当业务接口对时间敏感时,也无需担心。

文件 Mock

流量回放支持文件 Mock,指定文件路径和 Mock 的内容,即可快速实现文件 Mock。


结合录制上报功能,在线上上报配置读取,在线下使用文件 Mock 实现配置“重现”。

Elastic 搜索

对存储在 Elastic 中的流量,支持 URI、输入输出关键词、下游调用等多维度搜索。


回放支持指定文件,也支持上述搜索回放,使用体验更佳。

Xdebug 调试

最高效的功能是 Xdebug 联动调试,通过对代码设置断点即可使用线上流量进行调试。通过这种方式,可以用来研究代码、排查问题、查看下游接口响应格式及数据等,是一个开发调试利器。


丰富的报告

回放报告,汇总线上线下的输入、输出、结果对比,一目了然。



下游调用报告,会列举出所有的下游调用,包括协议、请求内容、匹配上的响应以及相识度。通过不同的背景颜色,标记出完全匹配的流量、存在噪点的调用、缺失的调用、新增的调用等。



结合 Xdebug 生成覆盖率报告,能够清楚的看到哪些代码被执行、哪些代码未被执行以及接口的覆盖率情况。



有关安装、使用过程以及常见问题解答,请查看以下链接:


GitHub:https:// github. com/didi/rdebug


Wiki:https:// github. com/didi/rdebug/wiki


Documentation:https:// github. com/didi/rdebug/blob/master/doc/DocList.md


本文转载自公众号滴滴技术(ID:didi_tech)。


原文链接:


https://mp.weixin.qq.com/s/kchsXqFMIb5sOJBqthhpVw


2019-09-16 21:411866

评论

发布
暂无评论
发现更多内容

云小课|使用SpringBoot快速构建FunctionGraph HTTP函数

华为云开发者联盟

开发 HTTP 华为云 企业号 2 月 PK 榜 华为云开发者联盟

倒带ChunJun,同心前行|2022年度回顾&2023年共建规划

袋鼠云数栈

开源

PMR 提取视频特征,理解上下文

Zilliz

用javascript分类刷leetcode22.字典树(图文视频讲解)

js2030code

JavaScript LeetCode

MRS+LakeFormation:打造一站式湖仓,释放数据价值

华为云开发者联盟

大数据 后端 华为云 企业号 2 月 PK 榜 华为云开发者联盟

三十分钟入门基础Go(Java小子版)

京东科技开发者

Java php Go nil 企业号 2 月 PK 榜

GaussDB(DWS)性能调优:indexscan导致的性能问题识别与优化

华为云开发者联盟

数据库 后端 华为云 企业号 2 月 PK 榜 华为云开发者联盟

前端工程师leetcode算法面试必备-二叉树的构造和遍历

js2030code

JavaScript LeetCode

设计模式第五讲-装饰器模式和代理模式详解

C++后台开发

数据结构 设计模式 后端开发 Linux服务器开发 C++开发

大咖说·图书分享|狼书(卷3):Node.js高级技术

大咖说

node.js 阿里云 开发者

IM通讯协议专题学习(九):手把手教你如何在iOS上从零使用Protobuf

JackJiang

StarRocks 企业行|走进 58 同城,探索极速统一 3.0 时代的企业实践

StarRocks

数据库

2023最新Java面试手册(性能优化+微服务架构+并发编程+开源框架)

小小怪下士

Java 程序员 面试 金三银四

StarRocks获评「2022 中国开源社区健康案例」!

StarRocks

数据库 开源

详解Redisson分布式限流的实现原理

华为云开发者联盟

后端 开发 华为云 企业号 2 月 PK 榜 华为云开发者联盟

特定领域知识图谱融合方案:学以致用-问题匹配鲁棒性评测比赛验证【四】

汀丶人工智能

自然语言处理 知识图谱 2月月更 2月日更 实体对齐

为实现跨境文件高速传输,镭速传输都用了哪些技术

镭速

特定领域知识图谱融合方案:文本匹配算法之预训练Simbert、ERNIE-Gram单塔模型等诸多模型【三】

汀丶人工智能

人工智能 自然语言处理 知识图谱 2月月更 2月日更

镜舟城市行|镜舟联手永洪科技共话数智运营

镜舟科技

数据库

熊猫小说家功能升级:支持阅读原文+更多功能等你解锁

澜舟孟子开源社区

NLP 大模型 AIGC 澜舟科技

Cloud Kernel SIG月度动态:发布ANCK 5.10-013版本、完整支持Intel SPR处理器

OpenAnolis小助手

开源 版本 内核 龙蜥社区 sig

一文盘点,ZBC的应用场景与通缩场景

股市老人

阿里IM技术分享(十):深度揭密钉钉后端架构的单元化演进之路

JackJiang

转角遇到爱,资源中心系统和图数据库

鲸品堂

技术 图数据库 企业号 2 月 PK 榜

一文盘点,ZBC的应用场景与通缩场景

EOSdreamer111

前端工程师leetcode算法面试必备-二叉树深度广度遍历

js2030code

JavaScript LeetCode

Flink X Hologres构建企业级Streaming Warehouse

阿里云大数据AI技术

大数据 数仓 企业号 2 月 PK 榜 分层技术

如何快速实现多指标计算

jiangxl

嵌入式ARM设计编程(一) 简单数据搬移

timerring

arm

企业级数据平台为什么要“可观测”? | StartDT Hackathon

奇点云

数据平台 可观测 云数据 黑客马拉松 奇点云

由浅入深,聊聊OkHttp的那些事(很长,很细节)

Petterp

android okhttp

滴滴开源 Rdebug:基于真实流量的研发、调试、测试利器_文化 & 方法_滴滴开源_InfoQ精选文章