滴滴开源支撑业务代码重构工具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
滴滴开源支撑业务代码重构工具Rdebug相关推荐
- android简单项目及代码_Android 开源项目 (AOSP) 代码搜索工具正式发布
我们非常高兴的为各位开发者们介绍一个 Android 开源项目 (AOSP) 的代码搜索工具: https://cs.android.com Android 开源项目的代码由一系列 Git 管理的代码 ...
- java代码重构工具_代码重构什么意思 Java代码重构的几种模式
指对软件代码做任何更动以增加可读性或者简化结构而不影响输出结果. 软件重构需要借助工具完成,重构工具能够修改代码同时修改所有引用该代码的地方.在极限编程的方法学中,重构需要单元测试来支持. 在软件工程 ...
- 解放双手!推荐一款阿里开源的低代码工具,YYDS!
之前分享过一些低代码相关的文章,发现大家还是比较感兴趣的.之前在我印象中低代码就是通过图形化界面来生成代码而已,其实真正的低代码不仅要负责生成代码,还要负责代码的维护,把它当做一站式开发平台也不为过! ...
- 【推荐一款阿里开源的低代码工具,实用性极高!】
之前在我印象中低代码就是通过图形化界面来生成代码而已,其实真正的低代码不仅要负责生成代码,还要负责代码的维护,把它当做一站式开发平台也不为过!最近体验了一把阿里开源的低代码工具LowCodeEngin ...
- java工具类编写:工具类如何与业务代码完全分开
场景:有些工具类里面出现业务代码,导致工具类不好复用.只能在工具类新建一个类似方法勉强满足业务,但是这个工具类看起来就很low了. 解决:把工具类中的业务代码抽成一个方法,这个方法设置为抽象方法a(a ...
- 还在自建代码仓库?阿里云的这款企业级代码管理工具免费、还香!
简介:代码托管产品是软件研发过程中的必备工具,不少企业在进行代码托管工具选型的时候会选择开源工具自建,然而,开源版本的代码管理工具往往只是提供了基础的代码仓储能力,无法满足企业在安全性.代码质量.权限 ...
- 前端代码规范工具ESLint和Prettier
前端代码规范工具ESLint和Prettier 1. ESLint是什么? ESLint 是一个开源的 JavaScript 代码检查工具,由 Nicholas C. Zakas 于2013年6月创建 ...
- 还在自建代码仓库?阿里云 云效 的这款企业级代码管理工具免费、还香!
代码托管产品是软件研发过程中的必备工具,不少企业在进行代码托管工具选型的时候会选择开源工具自建,然而,开源版本的代码管理工具往往只是提供了基础的代码仓储能力,无法满足企业在安全性.代码质量.权限管控等 ...
- 我来告诉你代码重构有什么好处
Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/cou ...
最新文章
- UI培训教程分享:APP图标设计的6种风格都有哪些?
- Second day in Jumei
- linux shell awk 单引号分割
- http请求的3位返回码简单解释
- Eclipse如何从SVN更新和上传修改部分项目
- ConcurrentModificationException异常解决办法
- javascript技巧参考
- Entity Framework关联实体的三种加载方法
- oracle 对象的审计,初识!聊聊ORACLE的审计功能
- info - 阅读 info 文档
- Tcp-IP详解之Telnet
- Rust: Bindgen绑定CTP C++原生接口尝试
- 京瓷打印机m5521cdn_京瓷M5521cdn驱动-京瓷ECOSYS M5521cdn打印机驱动下载 v5.1.2106官方版--pc6下载站...
- C#华氏度转换成摄氏度的代码QVQ
- 关于微信网页授权的用法
- 相邻染色问题java_浅析一类要求相邻不同的环上染色问题
- linux下调试paddlelite源码,Lite v2.7 v2.8 端侧部署 Ubuntu编译失败
- Springboot with Impala and Kudu
- 配音软件哪个好用?这几个软件值得你试一试
- ADS1258---FPGA驱动(一)