写点什么

滴滴开源支撑业务代码重构工具 Rdebug

2019 年 3 月 05 日

滴滴开源支撑业务代码重构工具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


2019 年 3 月 05 日 14:5614869
用户头像

发布了 33 篇内容, 共 51815 次阅读, 收获喜欢 62 次。

关注

评论 1 条评论

发布
用户头像
rdebug支持dubbo rpc的录制与回放吗?
2020 年 08 月 24 日 11:35
回复
没有更多了
发现更多内容

2020年阿里巴巴136道高频Java面试真题(含答案),附赠Java复习资料。

Java成神之路

Java 程序员 架构 面试 编程语言

区块链应用落地,物流供应链平台搭建

t13823115967

区块链应用

Gemini双子新约交易所系统软件APP开发

开發I852946OIIO

系统开发

H3C核心交换机故障处理通用流程

网络技术平台

连续肝了好几个晚上,终于把网络相关知识和计算机底层操作系统知识总结整理出来了,两份文档资料分享给你!

Java成神之路

Java 程序员 架构 面试 编程语言

ICT芯矿链挖矿矿机系统开发平台丨ICT芯矿链源码案例

系统开发咨询1357O98O718

ICT芯矿链矿机系统开发

深入浅出理解视频编解码技术

拍乐云Pano

音视频 RTC 拍乐云 视频编解码 视频算法

构建一张音视频全球大网究竟需要多少个节点?Pano Backbone技术探秘

拍乐云Pano

音视频 RTC 实时音视频 音视频算法 拍乐云

《微信小程序开发入门与实践》.pdf

田维常

面试大厂的尖兵利器!超全算法笔试模拟题精解合集,这份《程序员面试宝典》简直太牛了

Java成神之路

Java 程序员 架构 面试 编程语言

五年Java开发经验,从传统企业月薪20k到互联网大厂月薪50k,我只做了这一件事!

Java成神之路

Java 程序员 架构 面试 编程语言

喜讯 | 拍乐云荣登2020「年度最具投资价值创新企业TOP20」榜单

拍乐云Pano

音视频 实时音视频 音视频算法 拍乐云

云小课 | 需求任务还未分解,该咋整!项目管理Scrum项目工作分解的心酸谁能知?

华为云开发者社区

项目管理 敏捷 devcloud

我看技术人的成长路径

阿里巴巴云原生

开发者 云原生 技术人 自我思考 职场成长

忒棒了!阿里P8大牛用这份技术点直接带你玩转高可用服务架构

比伯

Java 编程 架构 互联网 程序人生

公安大数据分析系统开发,情报研判系统搭建

t13823115967

智慧公安

熬夜整理10 万字节详细面试笔记(带完整目录) 良心分享

Crud的程序员

Java 编程 程序员 架构 java面试

Norvarm波场链系统开发方案丨Norvarm波场源码功能

系统开发咨询1357O98O718

Norvarm波场链系统开发

太牛皮了!这份神仙级面试笔记把所有Java知识面试题都详解出来了。免费分享PDF文档,先到先得。

Java成神之路

Java 程序员 架构 面试 编程语言

北京天源迪科与重庆邮电大学移通学院成功签约

DT极客

快来!开源一份阿里微服务指导手册:SpringBoot+SpringCloud+消息中间件

Java架构追梦

Java 架构 面试 微服务

第八周大作业

小兵

云原生体系下的技海浮沉与理论探索

阿里巴巴云原生

Serverless 容器 微服务 云原生 k8s

投行工作的本质 | 读《投行职业进阶指南:从新手到合伙人》

邓瑞恒Ryan

读书笔记 投资 金融 投行 职业第二曲线

看到Mybatis源码就感到烦躁,怎么办?

田维常

mybatis

巨头们为什么要开源自己的技术?解析科技企业对软件开源的态度

Marilyn

开源 敏捷开发

探究神秘的SpringMVC,寻找遗失的web.xml踪迹

996小迁

Java 编程 程序员 架构 面试

【涂鸦物联网足迹】物联网常见通信协议

IoT云工坊

物联网 HTTP 通信协议 mqtt coap

GaussDB(DWS)应用实践丨负载管理与作业排队处理方法

华为云开发者社区

数据 负载 GaussDB

12.7作业

张荣召

12.6大数据仓库Hive

张荣召

NLP领域的2020年大事记及2021展望

NLP领域的2020年大事记及2021展望

滴滴开源支撑业务代码重构工具Rdebug-InfoQ