我们把用户访问系统造成的数据传输定义为流量,那么在用户访问系统的过程中,我们可以把进入和流出的数据复制下来,进行保存,待后续使用,即离线模式,或者转发到一个新的服务器,立即使用,即在线模式。
性能测试中我们可以使用诸如 ab, wrk, httperf, locust, JMeter 等工具模拟用户请求,也可以使用流「流量复制」工具,实时捕捉生产环境流量并导向目标测试系统。同时,这些「流量复制」工具可以支持对真实流量进行放大或缩小。
于是有人说,就是因为这样才应该直接用真实流量的方式来做嘛,这样就不用管业务模型了,直接就有生产的业务模型了。没错,只要你能通过生产流量扩大回放的方式实现压力部分,确实可以不用考虑业务场景了。但这么做的前提也必须是你的生产流量来源是可以覆盖想要测试的业务场景的。
这里要批驳一个观点,就是有些人觉得只有通过生产流量回放的方式,才是真实地 模拟了线上的流量。事实上,这个观点是偏颇的。
总结一下,流量复制工具的优势就是可以将线上流量拷贝到测试机器,实时的模拟线上环境,真实的模拟线上流量的变化规律,达到在程序不上线的情况下实时承担线上流量的效果。
流量复制工具一般分成这几类:
该模块目前只实现了两个配置指令,用法相当简单:
每一条 mirror 配置项对应用户请求的一个副本,我们就可以通过配置多次 mirror 指令来实现 “流量 放大” 的效果。当然,你也可以将多个副本转发给不同的后端目标系统。
示例配置:
流量放大, 配置两个 mirror 即可:
使用很方便,但是线上 nginx 一般都承载了不止一个业务,修改 nginx 配置后需要 nginx -s reload 来使之生效,这种操作在线上还是尽量需要避免的。
TCPCopy 由两部分组成:TCPCopy 和 intercept。TCPCopy 在线上服务器上运行并捕获在线请求,intercept 运行在辅助服务器上并执行一些辅助工作,例如将响应信息传递给 TCPCopy。测试应用程序则在目标服务器上运行。也就是使用上其实还需要一个辅助服务器。
TCPCopy 的主要优势:
同时,也具有以下不足:
与 TCPCopy 相比它的架构更简单,只有一个 gor 组件,如下:
只需要在生产服务器上启动一个 gor 进程,它负责所有的工作包括监听、过滤和转发。 它的设计遵循 Unix 设计哲学:一切都是由管道组成的,各种输入将数据复用为输出。
敲下命令,即可进行流量复制。无需理解复杂的概念。同样支持在线直接转发。存储到文件进行重放,N 倍重放。
相比 tcpcopy 只能复制 HTTP 和 HTTPS 的流量。 使用时编译很麻烦,一般直接使用编译好的版本。
一般配合 diffy 一起使用,diffy 提供 diff 能力,可以智能降噪音。
整体架构图:
沙箱有两种启动方式:
流量复制的场景下基本就是选择 attach了。提供的脚本非常简单易用,直接在安装目录下敲入命令即可。
其他的就是编写 AOP相关代码然后编译成 jar 包放入到安装目录。官网的例子非常详细,有兴趣可以了解了解。
微信号:sansui663(长安复制)
本文由知识库于2022-01-03发表在龙哥云资源网,如有疑问,请联系我们。本文链接:https://www.longgeyun.com/knowledge/20339.html
上一篇navicat数据库迁移报错(数据库迁移的三个步骤)
下一篇恢复u盘工具有哪些(u盘部分文件损坏修复方法)
高校最常见的食物中毒有哪些
急性肠胃炎与食物中毒怎么分辨
莫代尔面料和纯棉面料哪个好内裤 哪个儿童可以穿
为什么说开速腾的都不是一般人 速腾开出去有面子吗
活珠子和毛蛋的区别在哪里 哪个好吃
家里放石头的八大禁忌有哪些 家中石头最佳摆放位置
怎么判断自己帅还是丑男 男生怎样越长越帅
单身女生红绳戴左手还是右手 女生红绳戴哪里合适
Pr2020零基础快速入门
文字转语音App最新版3.0
APP下载页源码-带后台