• 周四. 10 月 3rd, 2024

5G编程聚合网

5G时代下一个聚合的编程学习网

热门标签

流量回放的学习记录一

admin

11 月 28, 2021

    首先,文章涉及到 JMETER 的部分参考了 https://blog.csdn.net/weixin_40686603/article/details/114589428  这是原文链接,作者是我的同事,为同事打个广告。

    那么我们开始进入正文。

    JMeter 是应用最广泛的测试工具没有之一,即便是各个开源的平台,很大程度也是以 JMeter 作为 executor 来实现这种功能的,开源的 JMeter 源码需要阅读,因为计划要做流量回放平台,流量的录制基于 APISIX,所以我来做流量回放的部分。

    流量回放,顾名思义,就是把生产上的流量录制下来,在任意地方回放,关于为什么做流量回放很多文章已经说得非常清楚了,此处不再赘述。

    当前总结出流量回放平台比较出名的平台有滴滴的 sharingan(很重要,最后的设计思路也是参考了 sharingan),aliyun的 doom,去哪儿的 ARES,文章比较多的工具是 go-replay,tcpplay 等。为什么不直接使用工具回放,而是调研平台,有几个原因:

   一,公司正在通过统一框架,将公司内的业务服务生态统一起来,自己开发的好处是定制程度高,可以随时修改;

   二,人员成本可控.

   基于这两点原因,参考了 sharingan 来实现我们自己的流量回放平台。不直接使用 sharingan 的理由是,我们公司是 java 技术栈,而 sharingan 是基于 go 开发的,有定制版 GOROOT,故放弃了。

   所以,流量回放平台如何设计?

   

    重画了一次设计图,避开了其他一些生态相关的事情。

    所以我们的重点是,如何在代码层面实现流量回放?也就是根据日志,重新构造http请求再发出去。因为当前的平台 executor 使用的是 jmeter,所以我们要学习如何在代码层面构造 jmeter的 测试计划。

    HashTree 是 JMeter 脚本的数据接口,所有通过 GUI 构造出来的 JMX 脚本最终被解析接 HashTree 上的一个个节点来顺序执行。

    这是哈希树的介绍 https://zh.wikipedia.org/zh-hans/%E5%93%88%E5%B8%8C%E6%A0%91

    所有的 JMeter 的组件,都被视为哈希树的一个节点,我们要做的事情是把流量及其他操作,配置好以后,插入 hashtree,并调用 jmeter engine 执行它 。

发表回复