一, Diffy介绍
Twitter Diffy工具技术架构图
Diffy需要部署三个版本的系统来实现它的噪声过滤和对比功能,这三个版本分别是:候选版本(candidate)、稳定版本(primary)和稳定版本副本(secondary)。
- 候选版本是待测版本,有着最新待测代码;
- 稳定版本通常是已经上线的版本,或者是已知功能正常的版本;
- 稳定版本副本是稳定版本的副本,和稳定版本运行相同的代码,主要用于排除噪声。
当Diffy接收到请求后,会把请求分发到这三个地方:被测服务(候选版本)、稳定版本服务和稳定版本副本服务。然后,候选版本服务与稳定版本服务的返回结果进行diff,生成原始diff结果(raw differences),即原始区别。接着,稳定版本与稳定版本副本的返回结果进行diff,生成噪声diff差异值结果(non-deterministic noise),即噪声。通过对这些差异值做减法来消除噪声。最后,通过比对原始的diff结果与消除噪声后的结果,得到最终的diff结果。
二,Diffy下载安装
-
linux下载示例
- 下载地址:
- gitHub下载地址: GitHub - opendiffy/diffy
- 推荐gitee下载地址:mirrors_opendiffy/diffy
- 下载地址:
三,Diffy使用
-
(1)下载完成后后,进入diffy目录,执行
./sbt assembly
进行编译,编译完成后在/diffy/target/scala-2.12目录下会生成diffy-server.jar文件,需要使用该jar包启动diffy代理服务。
-
(2)在diffy/example文件夹下有diffy启动的配置文件,先启动downstream.sh,后启动run.sh。
- run.sh配置文件主要参数如下,修改好参数后可以通过 ./run.sh 启动diffy服务:
--candidate='localhost:9000' \ candidate环境的地址,为测试环境的服务地址
--master.primary='localhost:9100' \ primary环境的地址,通常是已经上线版本,或者是已知功能正常的版本
--master.secondary='localhost:9200' \ secondary环境的地址,和primary环境的地址一致即可
--allowHttpSideEffects='true' \
--responseMode='candidate' \ diffy代理返回的结果为测试环境的结果
--service.protocol='http' \
--serviceName='ExampleService' \ diffy展示报告的名称
--proxy.port=8880 \ diffy的代理端口,请求需要发给该端口
--http.port=8888 展示报告的端口
- (3)diff数据比对的结果展示
- 红色框内的按钮为降噪功能,打开降噪,会将时间戳,日期等存在差异的噪音字段不进行diff比对
- 红色框内的按钮为降噪功能,打开降噪,会将时间戳,日期等存在差异的噪音字段不进行diff比对