当前位置: 首页 > 科技观察

您还在为模拟流量测试而烦恼吗?!滴滴开源RDebug流量播放工具!

时间:2023-03-16 23:17:39 科技观察

我们经常担心性能测试和压力测试。如何模拟真实的在线流量来还原现场使用,对我们来说是一个很大的挑战。通常我们会从数据库中找出用户访问的数据和请求来模拟历史访问,这需要大量的脚本编写和数据分析。现在好了,滴滴开源的RDebug工具可以记录真实的在线流量,通过回放来测试系统。帮助我们进行性能测试和压力测试,快速查看访问高峰情况。我们一起看看。GitHub开源地址:https://github.com/didi/rdebug/blob/master/README_zh_CN.md目前star数700左右。鉴于微服务易于扩展、部署简单、技术异构等优势,越来越多的服务采用微服务架构模型。一个复杂的单一服务通常被拆分成多个小的微服务。当然,在享受微服务带来的一系列便利的同时,我们也必须接受微服务改造带来的问题:需要维护的服务数量发生变化。很多,服务间的RPC调用次数增加了……服务改造完成后,原来单一的服务演变成了一堆微服务,大大增加了线下开发测试环境的维护成本。其次,线下环境涉及的部门很多,保持长期稳定的线下环境也是一个挑战;业务快速发展,需求不断迭代,手写单测由于业务逻辑复杂,服务调用复杂,需要mock多个下游服务,导致手写单测成本高人工构建数据,不够全面。以上问题严重影响了RD的研发效率,增加了线上事故隐患。主要功能流量记录:记录在线服务的真实请求,包括调用下游服务的RPC请求。流量记录的难点在于如何将上下游请求和每个RPC请求/响应一一匹配。流量回放:即使用线上记录的流量回放离线测试代码,通过流量匹配mock丢弃下游RPC请求。所以,流量播放的难点在于请求的拦截和匹配。三种播放方式:下载源播放、midi.phar包播放、composerbin播放。该架构以Koala和Koala-libc为核心代码实现底层库Koala是Go语言编写,Libc使用部分C++完成https://github.com/didi/rdebug/blob/master/koala/README.md生成报告